// Path: github-api/src/main/java/com/dmitrymalkovich/android/githubapi/core/time/TimeConverter.java
// public class TimeConverter {
//     private static final String LOG_TAG = TimeConverter.class.getSimpleName();
// 
//     public static long iso8601ToMilliseconds(String date) {
//         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
//         long timeInMilliseconds = 0;
//         try {
//             Date parsedDate = df.parse(date);
//             timeInMilliseconds = parsedDate.getTime();
//         } catch (ParseException e) {
//             Log.e(LOG_TAG, e.getMessage(), e);
//         }
//         return timeInMilliseconds;
//     }
// 
//     public static TimeZone getGitHubDefaultTimeZone() {
//         return TimeZone.getTimeZone("GMT");
//     }
// }
// 
// Path: github-api/src/main/java/com/dmitrymalkovich/android/githubapi/core/data/Star.java
// @SuppressWarnings("all")
// public class Star {
// 
//     @SerializedName("user")
//     public User mUser;
//     @SerializedName("starred_at")
//     private String mStarredAt;
// 
//     public String getStarredAt() {
//         return mStarredAt;
//     }
// 
//     private class User {
//         @SerializedName("id")
//         private long mId;
// 
//         @SerializedName("login")
//         private String mLogin;
// 
//         @SerializedName("url")
//         private String mUrl;
// 
//         public long getId() {
//             return mId;
//         }
// 
//         public String getLogin() {
//             return mLogin;
//         }
// 
//         public String getUrl() {
//             return mUrl;
//         }
//     }
// }


import android.support.annotation.WorkerThread;
import com.dmitrymalkovich.android.githubapi.core.time.TimeConverter;
import com.dmitrymalkovich.android.githubapi.core.data.Star;
import org.eclipse.egit.github.core.Repository;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import retrofit2.Call;
import retrofit2.Response;
        return this;
    }

    public StargazersService setDate(long date) {
        mDate = date;
        return this;
    }

    @WorkerThread
    public List<Star> getStars() throws IOException {
        Call<List<Star>> dummyCall = createGithubService().getStargazers(
                mLogin, mRepositoryName, mPage);
        Response<List<Star>> paginationResponse = dummyCall.execute();
        if (paginationResponse.isSuccessful()) {

            Pagination pagination = new Pagination();
            pagination.parse(paginationResponse);
            int page = pagination.getLastPage();

            List<Star> stars = new ArrayList<>();
            for (int i = page; page > 0; i--) {
                Call<List<Star>> call = createGithubService().getStargazers(
                        mLogin, mRepositoryName, String.valueOf(i));
                Response<List<Star>> response = call.execute();
                if (response.isSuccessful()) {
                    List<Star> starsForPage = response.body();
                    if (starsForPage != null) {
                        stars.addAll(starsForPage);

                        if (starsForPage.size() > 0
// Path: github-api/src/main/java/com/dmitrymalkovich/android/githubapi/core/time/TimeConverter.java
// public class TimeConverter {
//     private static final String LOG_TAG = TimeConverter.class.getSimpleName();
// 
//     public static long iso8601ToMilliseconds(String date) {
//         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
//         long timeInMilliseconds = 0;
//         try {
//             Date parsedDate = df.parse(date);
//             timeInMilliseconds = parsedDate.getTime();
//         } catch (ParseException e) {
//             Log.e(LOG_TAG, e.getMessage(), e);
//         }
//         return timeInMilliseconds;
//     }
// 
//     public static TimeZone getGitHubDefaultTimeZone() {
//         return TimeZone.getTimeZone("GMT");
//     }
// }
// 
// Path: github-api/src/main/java/com/dmitrymalkovich/android/githubapi/core/data/Star.java
// @SuppressWarnings("all")
// public class Star {
// 
//     @SerializedName("user")
//     public User mUser;
//     @SerializedName("starred_at")
//     private String mStarredAt;
// 
//     public String getStarredAt() {
//         return mStarredAt;
//     }
// 
//     private class User {
//         @SerializedName("id")
//         private long mId;
// 
//         @SerializedName("login")
//         private String mLogin;
// 
//         @SerializedName("url")
//         private String mUrl;
// 
//         public long getId() {
//             return mId;
//         }
// 
//         public String getLogin() {
//             return mLogin;
//         }
// 
//         public String getUrl() {
//             return mUrl;
//         }
//     }
// }


// Path: github-api/src/main/java/com/dmitrymalkovich/android/githubapi/core/StargazersService.java
import android.support.annotation.WorkerThread;
import com.dmitrymalkovich.android.githubapi.core.time.TimeConverter;
import com.dmitrymalkovich.android.githubapi.core.data.Star;
import org.eclipse.egit.github.core.Repository;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import retrofit2.Call;
import retrofit2.Response;

        return this;
    }

    public StargazersService setDate(long date) {
        mDate = date;
        return this;
    }

    @WorkerThread
    public List<Star> getStars() throws IOException {
        Call<List<Star>> dummyCall = createGithubService().getStargazers(
                mLogin, mRepositoryName, mPage);
        Response<List<Star>> paginationResponse = dummyCall.execute();
        if (paginationResponse.isSuccessful()) {

            Pagination pagination = new Pagination();
            pagination.parse(paginationResponse);
            int page = pagination.getLastPage();

            List<Star> stars = new ArrayList<>();
            for (int i = page; page > 0; i--) {
                Call<List<Star>> call = createGithubService().getStargazers(
                        mLogin, mRepositoryName, String.valueOf(i));
                Response<List<Star>> response = call.execute();
                if (response.isSuccessful()) {
                    List<Star> starsForPage = response.body();
                    if (starsForPage != null) {
                        stars.addAll(starsForPage);

                        if (starsForPage.size() > 0
                                && TimeConverter.iso8601ToMilliseconds(