package com.michaldabski.panoramio.requests;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.HttpHeaderParser;
import com.google.gson.Gson;
import java.io.UnsupportedEncodingException;
/**
* Created by Michal on 08/08/2014.
*/
public class GsonRequest<T> extends Request<T>
{
private final Class<T> type;
public GsonRequest(int method, String url, Response.ErrorListener listener, Class<T> type)
{
super(method, url, listener);
this.type = type;
}
protected static String getResponseString(NetworkResponse networkResponse) throws UnsupportedEncodingException
{
return new String(networkResponse.data, HttpHeaderParser.parseCharset(networkResponse.headers));
}
@Override
protected Response<T> parseNetworkResponse(NetworkResponse networkResponse)
{
try
{
T response = new Gson().fromJson(getResponseString(networkResponse), type);
return Response.success(response, HttpHeaderParser.parseCacheHeaders(networkResponse));
}
catch (Exception e)
{
return Response.error(new VolleyError(e));
}
}
@Override
protected void deliverResponse(T response)
{
}
}