package com.gettingmobile.google.reader.rest; import android.util.Log; import com.gettingmobile.google.Authenticator; import com.gettingmobile.io.CharacterSet; import com.gettingmobile.rest.ContentIOException; import com.gettingmobile.rest.entity.StringExtractor; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import java.io.UnsupportedEncodingException; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; public abstract class FormDataRequest<T> extends AuthenticatedReaderRequest<HttpPost, T> { private final String LOG_TAG = "goodnews.FormDataRequest"; private final StringExtractor stringExtractor = new StringExtractor(); public FormDataRequest(String supUrl, Authenticator authenticator) throws URISyntaxException { super("/api/0/" + supUrl, authenticator); } @Override protected HttpPost createRequest() { return new HttpPost(); } protected HttpEntity getEntity() { final List<NameValuePair> formValues = new ArrayList<NameValuePair>(); setFormValues(formValues); try { return new UrlEncodedFormEntity(formValues, CharacterSet.UTF8); } catch (UnsupportedEncodingException ex) { /* * will not happen, as UTF8 is always supported */ Log.e(FormDataRequest.class.getName(), ex.getMessage()); throw new RuntimeException(ex); } } @Override protected void initRequest(HttpPost request) { super.initRequest(request); request.setEntity(getEntity()); } protected void setFormValues(List<NameValuePair> formValues) { } @Override public String toString() { try { return super.toString() + "\n" + stringExtractor.extract(getEntity()); } catch (ContentIOException ex) { return super.toString(); } } }