package org.theotech.ceaselessandroid.image;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import java.io.File;
import java.io.IOException;
import okio.BufferedSink;
import okio.Okio;
/**
* Downloads the response of a url and saves it to a file
* Right now it is used to save the scripture image
* Eventually if it accepted a request instead of a url we could have it do more.
* Created by kirisu on 10/24/15.
* Some learnings from http://stackoverflow.com/questions/25893030/download-binary-file-from-okhttp
* and http://stackoverflow.com/questions/30277583/saving-image-from-url-using-picasso-without-change-in-size-using-bitmap-compres
*/
public class DownloadFileAsyncTask extends AsyncTask<Void, Void, Void> {
private static final String TAG = DownloadFileAsyncTask.class.getSimpleName();
String url;
File output;
Context context;
public DownloadFileAsyncTask(Context context, String url, File output) {
this.context = context;
this.url = url;
this.output = output;
}
@Override
protected Void doInBackground(Void... params) {
Request request = new Request.Builder().url(url).build();
Response response;
try {
OkHttpClient okHttpClient = new OkHttpClient();
response = okHttpClient.newCall(request).execute();
BufferedSink sink = Okio.buffer(Okio.sink(this.output));
sink.writeAll(response.body().source());
sink.close();
Log.d(TAG, "downloaded file " + url + " to " + this.output);
} catch (IOException e) {
e.printStackTrace();
Log.e(TAG, "failed to download file " + url);
}
return null;
}
@Override
protected void onPostExecute(Void params) {
// noop for now.
}
}