package org.aisen.weibo.sina.support.http;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.params.ConnRouteParams;
import org.apache.http.impl.client.DefaultHttpClient;
import android.net.Proxy;
import com.m.common.context.GlobalContext;
import com.m.common.params.Params;
import com.m.common.settings.Setting;
import com.m.common.settings.SettingUtility;
import com.m.common.utils.FileUtility;
import com.m.common.utils.Logger;
import com.m.support.network.HttpConfig;
import com.m.support.network.HttpUtility;
import com.m.support.task.TaskException;
/**
* Github资源下载器
*
* @author Jeff.Wang
*
* @date 2014年10月24日
*/
public class GithubResourceDownloadHttpUtility implements HttpUtility {
public static final String TAG = "GithubResDownload";
@Override
public <T> T doGet(HttpConfig config, Setting action, Params params, Class<T> responseCls) throws TaskException {
String url = config.baseUrl + action.getValue();
String dir = params.getParameter("dir");
String fileName = params.getParameter("fileName");
Logger.d(TAG, String.format("下载地址 = %s, fileName = %s, 保存路径 dir = %s",
url, fileName, dir));
String dataPath = GlobalContext.getInstance().getAppPath() + SettingUtility.getStringSetting("com_m_common_json");
File tempFile = new File(dataPath + File.separator + fileName);
if (!tempFile.getParentFile().exists())
tempFile.getParentFile().mkdirs();
File targetFile = new File(dir + File.separator + fileName);
if (targetFile.exists())
return (T) new Boolean(true);
DefaultHttpClient httpClient = new DefaultHttpClient();
String host = Proxy.getDefaultHost();
if (host != null) {
httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, new HttpHost(host, Proxy.getDefaultPort()));
}
try {
HttpResponse response = httpClient.execute(new HttpGet(url + fileName));
if (200 == response.getStatusLine().getStatusCode()) {
HttpEntity entity = response.getEntity();
// 获取输入流
InputStream in = entity.getContent();
File tmpFile = tempFile;
FileOutputStream out = new FileOutputStream(tmpFile);
int i;
byte bs[] = new byte[1024 * 8];
while ((i = in.read(bs)) > 0) {
out.write(bs, 0, i);
}
out.flush();
out.close();
in.close();
FileUtility.copyFile(tempFile, targetFile);
boolean result = targetFile.exists();
Logger.d(TAG, "下载 result = " + result);
return (T) new Boolean(result);
}
} catch (Exception e) {
e.printStackTrace();
}
return (T) new Boolean(false);
}
@Override
public <T> T doPost(HttpConfig config, Setting action, Params params, Class<T> responseCls, Object requestObj) throws TaskException {
return null;
}
@Override
public <T> T uploadFile(HttpConfig config, Setting action, Params params, File file, Params headers, Class<T> responseClass) throws TaskException {
return null;
}
}