content: package allen.town.podcast.core.glide;
  
  import android.content.Context;
  import androidx.annotation.NonNull;
  import androidx.annotation.Nullable;
  import com.bumptech.glide.load.Options;
  import com.bumptech.glide.load.model.ModelLoader;
  import com.bumptech.glide.load.model.ModelLoaderFactory;
  import com.bumptech.glide.load.model.MultiModelLoaderFactory;
  import com.bumptech.glide.signature.ObjectKey;
  import allen.town.podcast.model.feed.FeedMedia;
  
  import java.io.InputStream;
  
  class MetadataRetrieverLoader implements ModelLoader<String, InputStream> {
  
      /**
       * The default factory for {@link MetadataRetrieverLoader}s.
       */
      public static class Factory implements ModelLoaderFactory<String, InputStream> {
          private final Context context;
  
          Factory(Context context) {
              this.context = context;
          }
  
          @NonNull
          @Override
          public ModelLoader<String, InputStream> build(@NonNull MultiModelLoaderFactory multiFactory) {
              return new MetadataRetrieverLoader(context);
          }
  
          @Override
          public void teardown() {
              // Do nothing, this instance doesn't own the client.
          }
      }
  
      private final Context context;
  
      private MetadataRetrieverLoader(Context context) {
          this.context = context;
      }
  
      @Nullable
      @Override
      public LoadData<InputStream> buildLoadData(@NonNull String model,
                                                 int width, int height, @NonNull Options options) {
          return new LoadData<>(new ObjectKey(model),
                  new AudioCoverFetcher(model.replace(FeedMedia.FILENAME_PREFIX_EMBEDDED_COVER, ""), context));
      }
  
      @Override
      public boolean handles(@NonNull String model) {
          return model.startsWith(FeedMedia.FILENAME_PREFIX_EMBEDDED_COVER);
      }
  }
  