package yuku.afw.rpc;
import android.net.Uri;
import android.util.Log;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Params {
public static final String TAG = Params.class.getSimpleName();
private JSONObject map = new JSONObject();
public void put(String key, String value) {
try {
map.put(key, value);
} catch (JSONException e) {
Log.e(TAG, "json exception", e); //$NON-NLS-1$
}
}
public void put(String key, double value) {
put(key, String.valueOf(value));
}
public void put(String key, long value) {
put(key, String.valueOf(value));
}
public void put(String key, int value) {
put(key, String.valueOf(value));
}
public void put(String key, List<String> value) {
JSONArray jsonArray = new JSONArray(value);
try {
map.put(key, jsonArray);
} catch (JSONException e) {
Log.e(TAG, "json exception", e); //$NON-NLS-1$
}
}
public void put(String key, JSONArray value) {
try {
map.put(key, value);
} catch (JSONException e) {
Log.e(TAG, "json exception", e); //$NON-NLS-1$
}
}
public String toJsonString() {
return map.toString();
}
public void addDebugString(StringBuilder sb) {
JSONArray names = map.names();
if (names == null) return;
for (int i = 0, len = names.length(); i < len; i++) {
String key = names.optString(i);
String value = map.optString(key);
if (value.length() > 80) value = "(len=" + value.length() + ")" + value.substring(0, 78) + "..."; //$NON-NLS-1$
sb.append(' ');
sb.append(key).append('=').append(value);
}
}
public String toUrlEncodedString() {
StringBuilder sb = new StringBuilder(256);
addUrlEncodedParamsTo(sb);
return sb.toString();
}
public String toUrlEncodedStringWithOptionalQuestionMark() {
if (map.length() == 0) {
return ""; //$NON-NLS-1$
}
StringBuilder sb = new StringBuilder(256);
sb.append('?');
addUrlEncodedParamsTo(sb);
return sb.toString();
}
private void addUrlEncodedParamsTo(StringBuilder sb) {
JSONArray names = map.names();
for (int i = 0, len = names.length(); i < len; i++) {
String key = names.optString(i);
String value = map.optString(key);
if (sb.length() > 1) { // not (empty or contains only '?')
sb.append('&');
}
sb.append(key).append('=').append(Uri.encode(value));
}
}
public String getAndRemove(String key) {
if (map.has(key)) {
String value = map.optString(key);
map.remove(key);
return value;
}
return null;
}
public String get(String key) {
if (map.has(key)) {
return map.optString(key);
}
return null;
}
public JSONArray getJsonArray(String key) {
if (map.has(key)) {
return map.optJSONArray(key);
}
return null;
}
public void addAllTo(List<NameValuePair> list) {
JSONArray names = map.names();
for (int i = 0, len = names.length(); i < len; i++) {
String key = names.optString(i);
String value = map.optString(key);
list.add(new BasicNameValuePair(key, value));
}
}
}