package com.aptoide.amethyst.openiab.webservices;
import com.aptoide.amethyst.openiab.webservices.json.IabSkuDetailsJson;
import com.aptoide.amethyst.preferences.SecurePreferences;
import com.aptoide.amethyst.webservices.OauthErrorHandler;
import com.aptoide.dataprovider.webservices.models.WebserviceOptions;
import com.octo.android.robospice.request.retrofit.RetrofitSpiceRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import retrofit.RetrofitError;
import retrofit.http.FieldMap;
import retrofit.http.FormUrlEncoded;
import retrofit.http.POST;
public class IabSkuDetailsRequest extends RetrofitSpiceRequest<IabSkuDetailsJson, IabSkuDetailsRequest.Webservice> {
private String apiVersion;
private String token;
private String mnc;
private String mcc;
private String simcc;
private String packageName;
private List<String> skuList = new ArrayList<String>();
private String oemid;
public IabSkuDetailsRequest() {
super(IabSkuDetailsJson.class, Webservice.class);
}
public interface Webservice{
@POST("/webservices.aptoide.com/webservices/3/processInAppBilling")
@FormUrlEncoded
IabSkuDetailsJson processInAppBilling(@FieldMap HashMap<String, String> args);
}
@Override
public IabSkuDetailsJson loadDataFromNetwork() throws Exception {
StringBuilder skus = new StringBuilder();
for(String sku : skuList){
skus.append(sku);
skus.append(",");
}
ArrayList<WebserviceOptions> options = new ArrayList<WebserviceOptions>();
options.add(new WebserviceOptions("package", packageName));
options.add(new WebserviceOptions("token", token));
if(mnc!=null)options.add(new WebserviceOptions("mnc", mnc));
if(mcc!=null)options.add(new WebserviceOptions("mcc", mcc));
options.add(new WebserviceOptions("oemid", oemid));
if(simcc!=null)options.add(new WebserviceOptions("simcc", simcc.toUpperCase(Locale.ENGLISH)));
//options.add(new WebserviceOptions("simcc", "MN"));
options.add(new WebserviceOptions("skulist", skus.toString()));
StringBuilder sb = new StringBuilder();
sb.append("(");
for(WebserviceOptions option: options){
sb.append(option);
sb.append(";");
}
sb.append(")");
//String baseUrl = "http://dev.aptoide.com/webservices/processInAppBilling/iabskudetails/"+apiVersion+"/options="+sb.toString();
String baseUrl = WebserviceOptions.WebServicesLink +"3/processInAppBilling";
HashMap<String, String> parameters = new HashMap<String, String>();
parameters.put("mode","json");
parameters.put("skulist",skus.toString());
parameters.put("package",packageName);
parameters.put("apiversion",apiVersion);
parameters.put("reqtype","iabskudetails");
token = SecurePreferences.getInstance().getString("access_token", null);
parameters.put("access_token",token);
if(mcc!=null)parameters.put("mcc",mcc);
if(mnc!=null)parameters.put("mnc",mnc);
if(simcc!=null)parameters.put("simcc", simcc.toUpperCase(Locale.ENGLISH));
// HttpContent content = new UrlEncodedContent(parameters);
//
//
// GenericUrl url = new GenericUrl(baseUrl);
//
// Log.e("Aptoide-InappBillingRequest", baseUrl);
// setHttpRequestFactory(AndroidHttp.newCompatibleTransport().createRequestFactory());
// HttpRequest request = getHttpRequestFactory().buildPostRequest(url, content);
//
// request.setParser(new JacksonFactory().createJsonObjectParser());
// request.setUnsuccessfulResponseHandler(new OAuthRefreshAccessTokenHandler(parameters, getHttpRequestFactory()));
//
// return request.execute().parseAs(getResultType());
IabSkuDetailsJson response = null;
try{
response = getService().processInAppBilling(parameters);
}catch (RetrofitError error){
OauthErrorHandler.handle(error);
}
return response;
}
public String getApiVersion() {
return apiVersion;
}
public void setApiVersion(String apiVersion) {
this.apiVersion = apiVersion;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public List<String> getSkuList() {
return skuList;
}
public void addToSkuList(String sku) {
skuList.add(sku);
}
public void setMnc(String mnc) {
this.mnc = mnc;
}
public void setMcc(String mcc) {
this.mcc = mcc;
}
public void setSimcc(String simcc) {
this.simcc = simcc;
}
public void setOemid(String oemid) {
this.oemid = oemid;
}
}