package org.intermine.app.net.request; /* * Copyright (C) 2015 InterMine * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. See the LICENSE file for more * information or http://www.gnu.org/copyleft/lesser.html. * */ import android.content.Context; import com.octo.android.robospice.request.springandroid.SpringAndroidSpiceRequest; import org.apache.http.client.HttpClient; import org.intermine.app.InterMineApplication; import org.intermine.app.net.DefaultRetryPolicy; import org.intermine.app.net.HttpUtils; import org.intermine.app.net.ServerErrorHandler; import org.intermine.app.storage.Storage; import org.springframework.http.ContentCodingType; import org.springframework.http.HttpHeaders; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; import java.util.Map; import javax.inject.Inject; public abstract class BaseRequest<T> extends SpringAndroidSpiceRequest<T> { public final static String CONTENT_ENCODING = "UTF-8"; @Inject Storage mStorage; private Context mContext; private String mUrl; private Map<String, ?> mUrlParams; public BaseRequest(Class<T> clazz, Context ctx, String url, Map<String, ?> params) { super(clazz); setContext(ctx); setUrl(url); setUrlParams(params); InterMineApplication app = InterMineApplication.get(ctx); app.inject(this); setRetryPolicy(new DefaultRetryPolicy()); } @Override public RestTemplate getRestTemplate() { HttpClient httpClient = HttpUtils.getNewHttpClient(); RestTemplate rtp = super.getRestTemplate(); rtp.setErrorHandler(new ServerErrorHandler()); rtp.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient)); return rtp; } public HttpHeaders getHeaders() { HttpHeaders headers = new HttpHeaders(); headers.setAcceptEncoding(new ContentCodingType(CONTENT_ENCODING)); headers.setContentEncoding(new ContentCodingType(CONTENT_ENCODING)); return headers; } public Context getContext() { return mContext; } public void setContext(Context context) { mContext = context; } public String getUrl() { return mUrl; } public void setUrl(String url) { mUrl = url; } public Map<String, ?> getUrlParams() { return mUrlParams; } public void setUrlParams(Map<String, ?> urlParams) { mUrlParams = urlParams; } public Storage getStorage() { return mStorage; } protected String getBaseUrl(String mineName) { return getStorage().getMineNameToUrlMap().get(mineName); } }