// Path: wcs-android-sdk/src/main/java/com/chinanetcenter/wcs/android/api/BaseApi.java
// public class BaseApi {
// 
//     static final String FORM_TOKEN = "token";
// 
//     /**
//      * eg：client配置
//      * ClientConfig conf = new ClientConfig();
//      * conf.setConnectionTimeout(15*1000); // 连接超时，默认15秒
//      * conf.setSocketTimeout(15*1000); // socket超时，默认15秒
//      * conf.setMaxConcurrentRequest(5); // 最大并发请求书，默认5个
//      * conf.setMaxErrorRetry(2); // 失败后最大重试次数，默认2次
//      */
//     private volatile static InternalRequest mInternalRequest;
//     private static final Object mObject = new Object();
// 
//     static synchronized InternalRequest getInternalRequest(Context context, ClientConfig config) {
//         synchronized (mObject) {
//             if (null == mInternalRequest) {
//                 mInternalRequest = new InternalRequest(config == null ? ClientConfig.getDefaultConf() : config);
//             }
//             if (context != null) {
//                 LogRecorder.getInstance().setup(context.getApplicationContext());
//             }
//         }
//         return mInternalRequest;
//     }
// 
//     static boolean isNetworkReachable() {
//         return true;
//     }
// 
//     public static JSONObject parseWCSUploadResponse(WcsResult result) throws JSONException {
//         WCSLogUtil.d("parsing upload response : " + result.getResponse());
// 
//         JSONObject responseJsonObject = null;
//         try {
//             responseJsonObject = new JSONObject(result.getResponse());
//         } catch (JSONException e) {
//             WCSLogUtil.d("Try serializing as json failured, response may encoded.");
//         }
// 
//         if (null == responseJsonObject) {
//             responseJsonObject = new JSONObject();
//             if (!TextUtils.isEmpty(result.getResponse())) {
//                 try {
//                     String response = EncodeUtils.urlsafeDecodeString(result.getResponse());
//                     WCSLogUtil.d("response string : " + response);
//                     String[] params = response.split("&");
//                     for (String param : params) {
//                         int index = param.indexOf("=");
//                         if (index > 0) {
//                             responseJsonObject.put(param.substring(0, index), param.substring(index + 1));
//                         }
//                     }
//                 } catch (IllegalArgumentException e) {
//                     WCSLogUtil.d("bad base-64");
//                     responseJsonObject.put("headers", result.getHeaders());
//                 }
//             }
//         }
//         return responseJsonObject;
//     }
// 
// }
// 
// Path: wcs-android-sdk/src/main/java/com/chinanetcenter/wcs/android/entity/OperationMessage.java
// public class OperationMessage {
//     private int status;
//     private String message;
//     private Throwable error;
// 
//     public static OperationMessage fromJsonString(String jsonString, String requestId) throws JSONException {
//         OperationMessage errorMessage = new OperationMessage();
//         if(!TextUtils.isEmpty(jsonString)) {
//             JSONObject jsonObject = new JSONObject(jsonString);
//             jsonObject.put("X-Reqid", requestId);
//             errorMessage.message = jsonObject.toString();
//         }
// 
//         return errorMessage;
//     }
// 
//     public OperationMessage() {
//     }
// 
//     public OperationMessage(int status, String message) {
//         this.status = status;
//         this.message = message;
//         this.error = null;
//     }
// 
//     public OperationMessage(Throwable error) {
//         this.error = error;
//     }
// 
//     public int getStatus() {
//         return this.status;
//     }
// 
//     public void setStatus(int status) {
//         this.status = status;
//     }
// 
//     public String getMessage() {
//         StringBuilder formatMessage = new StringBuilder();
//         if(this.message != null) {
//             formatMessage.append(this.message);
//         }
// 
//         if(this.error != null) {
//             formatMessage.append(" { ");
//             formatMessage.append("ClientMsg: ");
//             formatMessage.append(WCSLogUtil.getStackTraceString(this.error));
//             formatMessage.append(" }");
//         }
// 
//         return formatMessage.toString();
//     }
// 
//     public void setMessage(String message) {
//         this.message = message;
//     }
// }


import com.chinanetcenter.wcs.android.api.BaseApi;
import com.chinanetcenter.wcs.android.entity.OperationMessage;
import org.json.JSONException;
import org.json.JSONObject;
package com.chinanetcenter.wcs.android.listener;



/**
 * 普通文件上传的回调，上传成功时，回调值为解析之后的JSON对象。
 */
public abstract class FileUploaderListener extends FileUploaderStringListener {

    public final void onSuccess(int status, String responseString) {
        try {
            onSuccess(status, BaseApi.parseWCSUploadResponse(result));
        } catch (JSONException e) {
// Path: wcs-android-sdk/src/main/java/com/chinanetcenter/wcs/android/api/BaseApi.java
// public class BaseApi {
// 
//     static final String FORM_TOKEN = "token";
// 
//     /**
//      * eg：client配置
//      * ClientConfig conf = new ClientConfig();
//      * conf.setConnectionTimeout(15*1000); // 连接超时，默认15秒
//      * conf.setSocketTimeout(15*1000); // socket超时，默认15秒
//      * conf.setMaxConcurrentRequest(5); // 最大并发请求书，默认5个
//      * conf.setMaxErrorRetry(2); // 失败后最大重试次数，默认2次
//      */
//     private volatile static InternalRequest mInternalRequest;
//     private static final Object mObject = new Object();
// 
//     static synchronized InternalRequest getInternalRequest(Context context, ClientConfig config) {
//         synchronized (mObject) {
//             if (null == mInternalRequest) {
//                 mInternalRequest = new InternalRequest(config == null ? ClientConfig.getDefaultConf() : config);
//             }
//             if (context != null) {
//                 LogRecorder.getInstance().setup(context.getApplicationContext());
//             }
//         }
//         return mInternalRequest;
//     }
// 
//     static boolean isNetworkReachable() {
//         return true;
//     }
// 
//     public static JSONObject parseWCSUploadResponse(WcsResult result) throws JSONException {
//         WCSLogUtil.d("parsing upload response : " + result.getResponse());
// 
//         JSONObject responseJsonObject = null;
//         try {
//             responseJsonObject = new JSONObject(result.getResponse());
//         } catch (JSONException e) {
//             WCSLogUtil.d("Try serializing as json failured, response may encoded.");
//         }
// 
//         if (null == responseJsonObject) {
//             responseJsonObject = new JSONObject();
//             if (!TextUtils.isEmpty(result.getResponse())) {
//                 try {
//                     String response = EncodeUtils.urlsafeDecodeString(result.getResponse());
//                     WCSLogUtil.d("response string : " + response);
//                     String[] params = response.split("&");
//                     for (String param : params) {
//                         int index = param.indexOf("=");
//                         if (index > 0) {
//                             responseJsonObject.put(param.substring(0, index), param.substring(index + 1));
//                         }
//                     }
//                 } catch (IllegalArgumentException e) {
//                     WCSLogUtil.d("bad base-64");
//                     responseJsonObject.put("headers", result.getHeaders());
//                 }
//             }
//         }
//         return responseJsonObject;
//     }
// 
// }
// 
// Path: wcs-android-sdk/src/main/java/com/chinanetcenter/wcs/android/entity/OperationMessage.java
// public class OperationMessage {
//     private int status;
//     private String message;
//     private Throwable error;
// 
//     public static OperationMessage fromJsonString(String jsonString, String requestId) throws JSONException {
//         OperationMessage errorMessage = new OperationMessage();
//         if(!TextUtils.isEmpty(jsonString)) {
//             JSONObject jsonObject = new JSONObject(jsonString);
//             jsonObject.put("X-Reqid", requestId);
//             errorMessage.message = jsonObject.toString();
//         }
// 
//         return errorMessage;
//     }
// 
//     public OperationMessage() {
//     }
// 
//     public OperationMessage(int status, String message) {
//         this.status = status;
//         this.message = message;
//         this.error = null;
//     }
// 
//     public OperationMessage(Throwable error) {
//         this.error = error;
//     }
// 
//     public int getStatus() {
//         return this.status;
//     }
// 
//     public void setStatus(int status) {
//         this.status = status;
//     }
// 
//     public String getMessage() {
//         StringBuilder formatMessage = new StringBuilder();
//         if(this.message != null) {
//             formatMessage.append(this.message);
//         }
// 
//         if(this.error != null) {
//             formatMessage.append(" { ");
//             formatMessage.append("ClientMsg: ");
//             formatMessage.append(WCSLogUtil.getStackTraceString(this.error));
//             formatMessage.append(" }");
//         }
// 
//         return formatMessage.toString();
//     }
// 
//     public void setMessage(String message) {
//         this.message = message;
//     }
// }


// Path: wcs-android-sdk/src/main/java/com/chinanetcenter/wcs/android/listener/FileUploaderListener.java
import com.chinanetcenter.wcs.android.api.BaseApi;
import com.chinanetcenter.wcs.android.entity.OperationMessage;
import org.json.JSONException;
import org.json.JSONObject;

package com.chinanetcenter.wcs.android.listener;



/**
 * 普通文件上传的回调，上传成功时，回调值为解析之后的JSON对象。
 */
public abstract class FileUploaderListener extends FileUploaderStringListener {

    public final void onSuccess(int status, String responseString) {
        try {
            onSuccess(status, BaseApi.parseWCSUploadResponse(result));
        } catch (JSONException e) {
            onFailure(new OperationMessage(0, e.getMessage()));