package com.github.spreadsheets.android.api.requests; import com.android.volley.AuthFailureError; import com.android.volley.NetworkResponse; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.github.spreadsheets.android.api.oauth.SpreadsheetOAuth; import com.google.api.client.xml.XmlNamespaceDictionary; import com.google.api.client.xml.XmlObjectParser; import java.util.HashMap; import java.util.Map; public abstract class SpreadsheetRequest<T> extends Request<T> { private static final XmlNamespaceDictionary DICTIONARY = new XmlNamespaceDictionary() .set("", "http://www.w3.org/2005/Atom") .set("gd", "http://schemas.google.com/g/2005") .set("gs", "http://schemas.google.com/spreadsheets/2006") .set("gsx", "http://schemas.google.com/spreadsheets/2006/extended") .set("openSearch", "http://a9.com/-/spec/opensearch/1.1/") .set("xml", "http://www.w3.org/XML/1998/namespace") .set("app", "http://www.w3.org/2007/app"); private static final String PROTOCOL_CONTENT_TYPE = "application/atom+xml; charset=UTF-8"; private final Response.Listener<T> mListener; final XmlObjectParser parser = new XmlObjectParser(DICTIONARY); private String token; SpreadsheetRequest(int method, String url, Listener<T> listener, ErrorListener errorListener) { super(method, url, errorListener); this.mListener = listener; } @Override protected void deliverResponse(T response) { mListener.onResponse(response); } @Override public Map<String, String> getHeaders() throws AuthFailureError { Map<String, String> headers = new HashMap<String, String>(); headers.put("Gdata-version", "3.0"); headers.put("Authorization", "Bearer " + SpreadsheetOAuth.getAuthToken()); return headers; } @Override abstract protected Response<T> parseNetworkResponse(NetworkResponse response); // @Override // abstract public byte[] getBody() throws AuthFailureError; @Override public String getBodyContentType() { return PROTOCOL_CONTENT_TYPE; } }