package fast.rocket.request;
import java.io.UnsupportedEncodingException;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import fast.rocket.error.ParseError;
import fast.rocket.http.HttpHeaderParser;
import fast.rocket.request.filecore.MultiPartRequest;
import fast.rocket.response.NetworkResponse;
import fast.rocket.response.Response;
import fast.rocket.response.Response.ErrorListener;
import fast.rocket.response.Response.Listener;
public class FileRequest<T> extends MultiPartRequest<T> {
private final Gson gson = new Gson();
private Class<T> clazz;
public FileRequest(int method, String url, Listener<T> listener,
ErrorListener errorlistener, Class<T> clazz) {
super(method, url, listener, errorlistener);
this.clazz = clazz;
}
@Override
public Response<T> parseNetworkResponse(NetworkResponse response) {
try {
String json = new String(response.data,
HttpHeaderParser.parseCharset(response.headers));
return Response.success(gson.fromJson(json, clazz),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JsonSyntaxException e) {
return Response.error(new ParseError(e));
}
}
}