package org.itsnat.droid.impl.browser; import org.apache.http.Header; import org.apache.http.HttpResponse; import org.itsnat.droid.HttpRequestResult; import org.itsnat.droid.impl.browser.serveritsnat.HttpRequestResultOKBeanshellImpl; import org.itsnat.droid.impl.util.MimeUtil; import java.io.InputStream; import java.util.Date; /** * Created by jmarranz on 16/07/14. */ public abstract class HttpRequestResultImpl implements HttpRequestResult { private String url; protected HttpResponse httpResponse; protected byte[] responseByteArray; private String mimeType; private String encoding; protected String responseText; protected HttpRequestResultImpl(String url,HttpResponse httpResponse,String mimeType, String encoding) { this.url = url; this.httpResponse = httpResponse; this.mimeType = mimeType; this.encoding = encoding; } public static HttpRequestResultImpl createHttpRequestResult(String url,HttpResponse httpResponse,InputStream input,HttpFileCache httpFileCache,String mimeType, String encoding) { int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode == 200) { if (MimeUtil.MIME_BEANSHELL.equals(mimeType)) return new HttpRequestResultOKBeanshellImpl(url, httpResponse, input, httpFileCache, mimeType, encoding); else return new HttpRequestResultOKImpl(url, httpResponse, input, httpFileCache, mimeType, encoding); } else return new HttpRequestResultFailImpl(url,httpResponse,input,mimeType,encoding); } public String getUrl() { return url; } @Override public String getHeaderField(String key) { Header[] headersFound = getResponseHeaders(key); if (headersFound == null) return null; return headersFound[0].getValue(); } @SuppressWarnings("deprecation") public long getHeaderFieldDate(String field, long defaultValue) { String date = getHeaderField(field); if (date == null) { return defaultValue; } try { return Date.parse(date); // TO_DO: use HttpDate.parse() } catch (Exception e) { return defaultValue; } } public int getHeaderFieldInt(String field, int defaultValue) { try { return Integer.parseInt(getHeaderField(field)); } catch (NumberFormatException e) { return defaultValue; } } protected Header[] getResponseHeaders(String name) { Header[] headersFound = httpResponse.getHeaders(name); if (headersFound == null || headersFound.length == 0) return null; return headersFound; } @Override public String getMimeType() { return mimeType; } @Override public String getEncoding() { return encoding; } @Override public byte[] getResponseByteArray() { return responseByteArray; } @Override public String getResponseText() { return responseText; } }