package com.novoda.downloadmanager.notifications; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; import java.io.IOException; import java.io.InputStream; // TODO make this package - when everything notification-like is moved to /notifications/ public class OkHttpNotificationImageRetriever implements NotificationImageRetriever { private final OkHttpClient client; private String imageUrl; private Bitmap bitmap; public OkHttpNotificationImageRetriever() { client = new OkHttpClient(); } @Override public Bitmap retrieveImage(String imageUrl) { if (imageUrl.equals(this.imageUrl)) { return bitmap; } return fetchBitmap(imageUrl); } private Bitmap fetchBitmap(String imageUrl) { Request request = new Request.Builder() .get() .url(imageUrl) .build(); try { Response response = client.newCall(request).execute(); InputStream inputStream = response.body().byteStream(); try { bitmap = BitmapFactory.decodeStream(inputStream); this.imageUrl = imageUrl; return bitmap; } finally { inputStream.close(); } } catch (IOException e) { return null; } } }