package in.srain.cube.demo.request;
import android.content.res.Resources;
import android.text.TextUtils;
import in.srain.cube.demo.R;
import in.srain.cube.demo.app.CubeDemoApplication;
import in.srain.cube.demo.event.ErrorMessageDataEvent;
import in.srain.cube.demo.event.EventCenter;
import in.srain.cube.request.*;
/**
* process request
*/
public class DemoRequestProxy extends DefaultRequestProxy implements RequestProxyFactory {
private static DemoRequestProxy sInstance;
public static DemoRequestProxy getInstance() {
if (sInstance == null) {
sInstance = new DemoRequestProxy();
}
return sInstance;
}
@Override
public void onRequestFail(RequestBase request, FailData failData) {
int code = failData.getErrorType();
Resources resources = CubeDemoApplication.instance.getResources();
String message = null;
switch (code) {
case FailData.ERROR_INPUT:
message = resources.getString(R.string.demo_request_error_input);
break;
case FailData.ERROR_DATA_FORMAT:
message = resources.getString(R.string.demo_request_error_data_format);
break;
case FailData.ERROR_NETWORK:
message = resources.getString(R.string.demo_request_error_network);
break;
case FailData.ERROR_UNKNOWN:
message = resources.getString(R.string.demo_request_error_unknown);
break;
case FailData.ERROR_CUSTOMIZED:
message = failData.getData(String.class);
break;
}
if (!TextUtils.isEmpty(message)) {
ErrorMessageDataEvent event = new ErrorMessageDataEvent(request.getFailData(), request.getRequestData().getTag(), message);
EventCenter.getInstance().post(event);
}
}
@Override
public JsonData processOriginDataFromServer(RequestBase request, JsonData data) {
return super.processOriginDataFromServer(request, data);
}
@Override
public IRequestProxy createProxyForRequest(IRequest request) {
return getInstance();
}
}