package com.koushikdutta.async.http; import com.koushikdutta.async.DataEmitter; import com.koushikdutta.async.DataSink; import com.koushikdutta.async.Util; import com.koushikdutta.async.callback.CompletedCallback; import com.koushikdutta.async.future.FutureCallback; import com.koushikdutta.async.parser.JSONArrayParser; import org.json.JSONArray; public class JSONArrayBody implements AsyncHttpRequestBody<JSONArray> { public JSONArrayBody() { } byte[] mBodyBytes; JSONArray json; public JSONArrayBody(JSONArray json) { this(); this.json = json; } @Override public void parse(DataEmitter emitter, final CompletedCallback completed) { new JSONArrayParser().parse(emitter).setCallback(new FutureCallback<JSONArray>() { @Override public void onCompleted(Exception e, JSONArray result) { json = result; completed.onCompleted(e); } }); } @Override public void write(AsyncHttpRequest request, DataSink sink, final CompletedCallback completed) { Util.writeAll(sink, mBodyBytes, completed); } @Override public String getContentType() { return "application/json"; } @Override public boolean readFullyOnRequest() { return true; } @Override public int length() { mBodyBytes = json.toString().getBytes(); return mBodyBytes.length; } public static final String CONTENT_TYPE = "application/json"; @Override public JSONArray get() { return json; } }