package com.aptoide.amethyst.webservices;
import android.preference.PreferenceManager;
import com.aptoide.amethyst.Aptoide;
import com.aptoide.amethyst.preferences.SecurePreferences;
import com.aptoide.amethyst.webservices.json.TimelineActivityJson;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.HashMap;
import retrofit.RestAdapter;
import retrofit.RetrofitError;
import retrofit.converter.JacksonConverter;
import retrofit.http.FieldMap;
import retrofit.http.FormUrlEncoded;
import retrofit.http.POST;
/**
* Created by fabio on 09-11-2015.
*/
public class TimelineCheckRequestSync {
public interface WebserviceTimeline{
@POST("/3/checkUserApkInstallsActivity")
@FormUrlEncoded
TimelineActivityJson post(@FieldMap HashMap<String, String> args);
}
static int retries = 0;
public static TimelineActivityJson getRequest(String type) throws IOException {
HashMap<String, String> params = new HashMap<>();
// GenericUrl url = new GenericUrl(WebserviceOptions.WebServicesLink + "3/checkUserApkInstallsActivity");
// HttpRequestFactory requestFactory = AndroidHttp.newCompatibleTransport().createRequestFactory();
params.put("access_token", SecurePreferences.getInstance().getString("access_token", "empty"));
//new_installs, owned_activity, related_activity
params.put("type", type);
params.put("mode", "json");
params.put("timestamp", String.valueOf(PreferenceManager.getDefaultSharedPreferences(Aptoide.getContext()).getLong("timelineTimestamp", 1)));
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
RestAdapter adapter = new RestAdapter.Builder().setEndpoint("http://webservices.aptoide.com/webservices").setConverter(new JacksonConverter(mapper)).build();
//Request request = new Request.Builder().url("http:/" + WebserviceOptions.WebServicesLink + "3/checkUserApkInstallsActivity").post(body).build();
// HttpContent content = new UrlEncodedContent(parameters);
// HttpRequest httpRequest = requestFactory.buildPostRequest(url, content);
// httpRequest.setUnsuccessfulResponseHandler(new OAuthRefreshAccessTokenHandler(parameters, requestFactory));
// httpRequest.setParser(new JacksonFactory().createJsonObjectParser());
//
// return httpRequest.execute().parseAs(TimelineActivityJson.class);
//OkHttpClient client = new OkHttpClient();
//Response execute = client.newCall(request).execute();
//return mapper.readValue(execute.body().charStream(), TimelineActivityJson.class);
try{
TimelineActivityJson post = adapter.create(WebserviceTimeline.class).post(params);
retries = 0;
return post;
}catch (RetrofitError error){
try{
retries++;
if(retries<3){
OauthErrorHandler.handle(error);
}
}catch (RetrofitError retrofitError){
return getRequest(type);
}
}
return null;
}
}