package de.guerda.matekarte.common.request; import android.util.Log; import com.google.api.client.http.GenericUrl; import com.google.api.client.http.HttpRequest; import com.google.gson.FieldNamingPolicy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.io.InputStream; import java.io.InputStreamReader; import de.guerda.matekarte.dealers.Dealer; import de.guerda.matekarte.dealers.DealerDetailsDeserializer; /** * Created by iulius on 18/01/15. */ public class DealerDetailsRequest extends MatekarteRequest<Dealer> { private static final String LOGTAG = DealerDetailsRequest.class.getSimpleName(); private static final String URL_DEALER_DETAIL = "api/v2/dealers/"; private Dealer dealer; private String dealerId; public DealerDetailsRequest(String dealerId) { super(Dealer.class); this.dealerId = dealerId; } @Override public Dealer loadDataFromNetwork() throws Exception { HttpRequest request = getHttpRequestFactory().buildGetRequest(new GenericUrl(URL_BASE + URL_DEALER_DETAIL + dealerId.trim())); GsonBuilder tmpBuilder = new GsonBuilder(); tmpBuilder.registerTypeAdapter(Dealer.class, new DealerDetailsDeserializer()); Gson tempGson = tmpBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); Dealer tmpDealer; try (InputStream in = request.execute().getContent()) { tmpDealer = tempGson.fromJson(new InputStreamReader(in), Dealer.class); if (tmpDealer == null) { Log.e(LOGTAG, "No dealer details downloaded"); } else { Log.i(LOGTAG, "Downloaded dealer details: " + tmpDealer); dealer = tmpDealer; } } return tmpDealer; } }