package com.koushikdutta.async.http; import com.koushikdutta.async.DataSink; import com.koushikdutta.async.callback.CompletedCallback; import com.koushikdutta.async.http.libcore.RawHeaders; import org.apache.http.NameValuePair; import java.io.File; import java.util.List; import java.util.Map; public class Part { public static final String CONTENT_DISPOSITION = "Content-Disposition"; RawHeaders mHeaders; Multimap mContentDisposition; public Part(RawHeaders headers) { mHeaders = headers; mContentDisposition = Multimap.parseHeader(mHeaders, CONTENT_DISPOSITION); } public String getName() { return mContentDisposition.getString("name"); } private int length = -1; public Part(String name, int length, List<NameValuePair> contentDisposition) { this.length = length; mHeaders = new RawHeaders(); StringBuilder builder = new StringBuilder(String.format("form-data; name=\"%s\"", name)); if (contentDisposition != null) { for (NameValuePair pair: contentDisposition) { builder.append(String.format("; %s=\"%s\"", pair.getName(), pair.getValue())); } } mHeaders.set(CONTENT_DISPOSITION, builder.toString()); mContentDisposition = Multimap.parseHeader(mHeaders, CONTENT_DISPOSITION); } public RawHeaders getRawHeaders() { return mHeaders; } public String getContentType() { return mHeaders.get("Content-Type"); } public String getFilename() { String file = mContentDisposition.getString("filename"); if (file == null) return null; return new File(file).getName(); } public boolean isFile() { return mContentDisposition.containsKey("filename"); } public int length() { return length; } public void write(DataSink sink, CompletedCallback callback) { assert false; } }