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.StringParser; public class StringBody implements AsyncHttpRequestBody<String> { public StringBody() { } byte[] mBodyBytes; String string; public StringBody(String string) { this(); this.string = string; } @Override public void parse(DataEmitter emitter, final CompletedCallback completed) { new StringParser().parse(emitter).setCallback(new FutureCallback<String>() { @Override public void onCompleted(Exception e, String result) { string = result; completed.onCompleted(e); } }); } public static final String CONTENT_TYPE = "text/plain"; @Override public void write(AsyncHttpRequest request, DataSink sink, final CompletedCallback completed) { if (mBodyBytes == null) mBodyBytes = string.getBytes(); Util.writeAll(sink, mBodyBytes, completed); } @Override public String getContentType() { return "text/plain"; } @Override public boolean readFullyOnRequest() { return true; } @Override public int length() { if (mBodyBytes == null) mBodyBytes = string.getBytes(); return mBodyBytes.length; } @Override public String toString() { return string; } @Override public String get() { return toString(); } }