// Path: github-api/src/main/java/com/dmitrymalkovich/android/githubapi/core/data/Clones.java
// @SuppressWarnings("all")
// public class Clones {
//     @SerializedName("count")
//     private String mCount;
// 
//     @SerializedName("uniques")
//     private String mUniques;
// 
//     @SerializedName("clones")
//     private List<Clone> mClones;
// 
//     public List<Clone> asList() {
//         return mClones;
//     }
// 
//     public static class Clone {
//         @SerializedName("timestamp")
//         private String mTimestamp;
// 
//         @SerializedName("count")
//         private String mCount;
// 
//         @SerializedName("uniques")
//         private String mUniques;
// 
//         public String getTimestamp() {
//             return mTimestamp;
//         }
// 
//         public String getCount() {
//             return mCount;
//         }
// 
//         public String getUniques() {
//             return mUniques;
//         }
//     }
// }
// 
// Path: github-api/src/main/java/com/dmitrymalkovich/android/githubapi/core/data/ReferringSite.java
// @SuppressWarnings("all")
// public class ReferringSite {
// 
//     @SerializedName("referrer")
//     private String mReferrer;
// 
//     @SerializedName("count")
//     private int mCount;
// 
//     @SerializedName("uniques")
//     private int mUniques;
// 
//     public String getReferrer() {
//         return mReferrer;
//     }
// 
//     public int getCount() {
//         return mCount;
//     }
// 
//     public int getUniques() {
//         return mUniques;
//     }
// }
// 
// Path: github-api/src/main/java/com/dmitrymalkovich/android/githubapi/core/data/Views.java
// @SuppressWarnings("all")
// public class Views {
//     @SerializedName("count")
//     private String mCount;
// 
//     @SerializedName("uniques")
//     private String mUniques;
// 
//     @SerializedName("views")
//     private List<View> mViews;
// 
//     public List<View> getViews() {
//         return mViews;
//     }
// 
//     public static class View {
//         @SerializedName("timestamp")
//         private String mTimestamp;
// 
//         @SerializedName("count")
//         private String mCount;
// 
//         @SerializedName("uniques")
//         private String mUniques;
// 
//         public String getTimestamp() {
//             return mTimestamp;
//         }
// 
//         public String getCount() {
//             return mCount;
//         }
// 
//         public String getUniques() {
//             return mUniques;
//         }
//     }
// }


import com.dmitrymalkovich.android.githubapi.core.data.Clones;
import com.dmitrymalkovich.android.githubapi.core.data.ReferringSite;
import com.dmitrymalkovich.android.githubapi.core.data.Views;
import org.eclipse.egit.github.core.Repository;
import java.io.IOException;
import java.util.List;
import retrofit2.Call;
import retrofit2.Response;

    public TrafficService setRepository(Repository repository) {
        mRepositoryName = repository.getName();
        mLogin = repository.getOwner().getLogin();
        return this;
    }

    public TrafficService setPeriod(String period) {
        mPeriod = period;
        return this;
    }

    public Clones getClones() throws IOException {
        Call<Clones> call = createGithubService().getRepositoryClones(
                mLogin, mRepositoryName, mPeriod);

        Response<Clones> response = call.execute();
        if (response.isSuccessful()) {
            Clones clones = response.body();
            if (clones != null && clones.asList() != null) {
                return clones;
            } else {
                throw new IOException();
            }
        } else {
            APIError error = APIError.parseError(response);
            throw new IOException(error.getMessage());
        }
    }

// Path: github-api/src/main/java/com/dmitrymalkovich/android/githubapi/core/data/Clones.java
// @SuppressWarnings("all")
// public class Clones {
//     @SerializedName("count")
//     private String mCount;
// 
//     @SerializedName("uniques")
//     private String mUniques;
// 
//     @SerializedName("clones")
//     private List<Clone> mClones;
// 
//     public List<Clone> asList() {
//         return mClones;
//     }
// 
//     public static class Clone {
//         @SerializedName("timestamp")
//         private String mTimestamp;
// 
//         @SerializedName("count")
//         private String mCount;
// 
//         @SerializedName("uniques")
//         private String mUniques;
// 
//         public String getTimestamp() {
//             return mTimestamp;
//         }
// 
//         public String getCount() {
//             return mCount;
//         }
// 
//         public String getUniques() {
//             return mUniques;
//         }
//     }
// }
// 
// Path: github-api/src/main/java/com/dmitrymalkovich/android/githubapi/core/data/ReferringSite.java
// @SuppressWarnings("all")
// public class ReferringSite {
// 
//     @SerializedName("referrer")
//     private String mReferrer;
// 
//     @SerializedName("count")
//     private int mCount;
// 
//     @SerializedName("uniques")
//     private int mUniques;
// 
//     public String getReferrer() {
//         return mReferrer;
//     }
// 
//     public int getCount() {
//         return mCount;
//     }
// 
//     public int getUniques() {
//         return mUniques;
//     }
// }
// 
// Path: github-api/src/main/java/com/dmitrymalkovich/android/githubapi/core/data/Views.java
// @SuppressWarnings("all")
// public class Views {
//     @SerializedName("count")
//     private String mCount;
// 
//     @SerializedName("uniques")
//     private String mUniques;
// 
//     @SerializedName("views")
//     private List<View> mViews;
// 
//     public List<View> getViews() {
//         return mViews;
//     }
// 
//     public static class View {
//         @SerializedName("timestamp")
//         private String mTimestamp;
// 
//         @SerializedName("count")
//         private String mCount;
// 
//         @SerializedName("uniques")
//         private String mUniques;
// 
//         public String getTimestamp() {
//             return mTimestamp;
//         }
// 
//         public String getCount() {
//             return mCount;
//         }
// 
//         public String getUniques() {
//             return mUniques;
//         }
//     }
// }


// Path: github-api/src/main/java/com/dmitrymalkovich/android/githubapi/core/TrafficService.java
import com.dmitrymalkovich.android.githubapi.core.data.Clones;
import com.dmitrymalkovich.android.githubapi.core.data.ReferringSite;
import com.dmitrymalkovich.android.githubapi.core.data.Views;
import org.eclipse.egit.github.core.Repository;
import java.io.IOException;
import java.util.List;
import retrofit2.Call;
import retrofit2.Response;


    public TrafficService setRepository(Repository repository) {
        mRepositoryName = repository.getName();
        mLogin = repository.getOwner().getLogin();
        return this;
    }

    public TrafficService setPeriod(String period) {
        mPeriod = period;
        return this;
    }

    public Clones getClones() throws IOException {
        Call<Clones> call = createGithubService().getRepositoryClones(
                mLogin, mRepositoryName, mPeriod);

        Response<Clones> response = call.execute();
        if (response.isSuccessful()) {
            Clones clones = response.body();
            if (clones != null && clones.asList() != null) {
                return clones;
            } else {
                throw new IOException();
            }
        } else {
            APIError error = APIError.parseError(response);
            throw new IOException(error.getMessage());
        }
    }

    public List<ReferringSite> getReferringSites() throws IOException {