package com.aptoide.amethyst.webservices;
import com.aptoide.dataprovider.webservices.json.review.ReviewJson;
import com.aptoide.dataprovider.webservices.json.review.ReviewListJson;
import com.octo.android.robospice.request.retrofit.RetrofitSpiceRequest;
import java.util.HashMap;
import retrofit.http.FieldMap;
import retrofit.http.FormUrlEncoded;
import retrofit.http.POST;
/**
* Created by fabio on 21-10-2015.
*/
public abstract class GetReviews<T> extends RetrofitSpiceRequest<T,GetReviews.GetReviewListWebservice> {
private int store_id;
private int offset;
private int limit;
public int getStore_id() {
return store_id;
}
public void setStore_id(int store_id) {
this.store_id = store_id;
}
public int getOffset() {
return offset;
}
public void setOffset(int offset) {
this.offset = offset;
}
public GetReviews(Class<T> clazz) {
super(clazz, GetReviewListWebservice.class );
}
@Override
public T loadDataFromNetwork() throws Exception {
HashMap<String, String > args = new HashMap<>();
args.put("mode","json");
args.put("status","active");
args.put("repo_id", String.valueOf(store_id));
if(offset>0){
args.put("offset", String.valueOf(offset));
}
if(limit>0){
args.put("limit", String.valueOf(limit));
}
return response(args);
}
public abstract T response(HashMap<String, String> args);
public void setLimit(int limit) {
this.limit = limit;
}
public interface GetReviewListWebservice{
@POST("/webservices.aptoide.com/webservices/3/getReviewList")
@FormUrlEncoded
ReviewListJson getReviewList(@FieldMap HashMap<String, String> map);
@POST("/webservices.aptoide.com/webservices/3/getReview")
@FormUrlEncoded
ReviewJson getReview(@FieldMap HashMap<String, String> map);
}
public static class GetReview extends GetReviews<ReviewJson>{
public void setId(int id) {
this.id = id;
}
private int id;
public GetReview() {
super(ReviewJson.class);
}
@Override
public ReviewJson response(HashMap<String, String> args) {
if(id>0){
args.put("id", String.valueOf(id));
}
return getService().getReview(args);
}
}
public static class GetReviewList extends GetReviews<ReviewListJson>{
private int store_id;
private boolean homePage;
private String order_by = "rand";
private String order = "asc";
public GetReviewList() {
super(ReviewListJson.class);
}
@Override
public ReviewListJson response(HashMap<String, String> args) {
if(homePage){
args.put("editors", "true");
}
if(store_id>0){
args.put("repo_id", String.valueOf(store_id));
}
args.put("order_by", order_by);
args.put("order", order);
return getService().getReviewList(args);
}
public int getStoreId() {
return store_id;
}
public void setStoreId(int id) {
this.store_id = id;
}
public void setHomePage(boolean homePage) {
this.homePage = homePage;
}
/**
*
* @param order_by
*
* Sort by: options are: id, rand
*
*
*
*/
public void setOrderBy(String order_by) {
this.order_by = order_by;
}
/**
*
* @param order
*
* Sort order: options are: asc, desc
*/
public void setOrder(String order) {
this.order = order;
}
}
}