package com.aptoide.amethyst.webservices;
import com.aptoide.dataprovider.exceptions.UnknownSysErrorOcurredException;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.HashMap;
import java.util.List;
/**
* Created by fabio on 15-10-2015.
*/
public class Response {
public String status;
public Responses responses;
public static class Info {
public String status;
public Number time_taken;
}
public static class Ticket {
public Ticket() {
}
public String id;
public String status;
public Number getExpected_time() {
return expected_time;
}
private Number expected_time;
public void setExpected_time(Number expected_time) throws TicketException, InterruptedException {
this.expected_time = expected_time;
Thread.sleep(Math.min(expected_time.intValue(), 5000));
throw new TicketException();
}
}
public static class TicketException extends Exception {}
public static class Responses {
public GetStore getStore;
public ListApps listApps;
public ListStores listStores;
}
public static class Error{
public String code;
public String description;
public String getCode() {
return code;
}
public void setCode(String code) throws UnknownSysErrorOcurredException {
if (code.contains("SYS")) {
throw new UnknownSysErrorOcurredException();
}
this.code = code;
}
}
public static class GetStore {
public Ticket ticket;
public Datasets datasets;
public List<Error> errors;
public static class StoreMeta {
public Ticket ticket;
public Info info;
public StoreMetaData data;
}
public static class Categories {
public Info info;
public Ticket ticket;
public Data<Category> data;
public static class Category{
public Number id;
public String ref_id;
public String parent_ref_id;
public Number apps_count;
public Number parent_id;
public String name;
public String graphic;
}
}
public static class Widgets {
public Info info;
public Ticket ticket;
public Data<Widget> data;
public static class Widget {
public String type;
public String name;
public String widgetid;
public WidgetData data;
public static class WidgetCategory {
public Number id;
public String ref_id;
public Number parent_id;
public String parent_ref_id;
public Number apps_count;
public String name;
public String graphic;
}
public static class WidgetData {
public String ref_id;
public int apps_count;
public Options options;
public String icon;
public List<WidgetCategory> categories;
}
public static class Options{
public Number ads_count;
}
}
}
public static class StoreMetaData {
public Number id;
public String name;
public Number apps_count;
public Number downloads;
public String avatar;
public String theme;
public String description;
public String view;
}
public static class Datasets {
public Widgets widgets;
public StoreMeta meta;
}
}
public static class Data<T>{
public int total;
public int offset;
public int next;
public int limit;
public int hidden;
public List<T> list;
}
public static class ListStores {
public Ticket ticket;
public Info info;
public Datasets datasets;
public static class Datasets {
private HashMap<String, StoreGroup> dataset = new HashMap<String, StoreGroup>();
@JsonAnySetter
public void setDynamicProperty(String name, StoreGroup object) {
dataset.put(name, object);
}
public HashMap<String, StoreGroup> getDataset() {
return dataset;
}
public void setDataset(HashMap<String, StoreGroup> dataset) {
this.dataset = dataset;
}
}
public static class StoreGroup{
public Info info;
public Ticket ticket;
public Data<Store> data;
}
public static class Store{
public Number id;
public String name;
public Number apps_count;
public Number downloads;
public String avatar;
}
}
public static class ListApps {
public Ticket ticket;
public Info info;
public List<Error> errors;
public Datasets datasets;
public static class Category {
public Info info;
public Ticket ticket;
public Data<Apk> data;
}
public static class Apk {
public Number id;
public String name;
public Number store_id;
public Number size;
public String store_name;
@JsonProperty("package")
public String packageName;
public String vername;
public String md5sum;
public Number downloads;
public Number rating;
public String icon;
public String graphic;
@Override
public String toString() {
return name + " " + vername;
}
}
public static class Datasets {
private HashMap<String, Category> dataset = new HashMap<String, Category>();
@JsonAnySetter
public void setDynamicProperty(String name, Category object) {
dataset.put(name, object);
}
public HashMap<String, Category> getDataset() {
return dataset;
}
public void setDataset(HashMap<String, Category> dataset) {
this.dataset = dataset;
}
}
}
}