com.miz.apis.trakt.Trakt.java Source code

Java tutorial

Introduction

Here is the source code for com.miz.apis.trakt.Trakt.java

Source

/*
 * Copyright (C) 2014 Michell Bak
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.miz.apis.trakt;

import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.text.TextUtils;

import com.miz.functions.MediumMovie;
import com.miz.functions.MizLib;
import com.miz.functions.Movie;
import com.miz.mizuu.MizuuApplication;
import com.miz.mizuu.R;
import com.miz.mizuu.TvShow;
import com.miz.mizuu.TvShowEpisode;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;

import org.json.JSONArray;
import org.json.JSONObject;

import java.util.Collection;
import java.util.List;

import static com.miz.functions.PreferenceKeys.SYNC_WITH_TRAKT;
import static com.miz.functions.PreferenceKeys.TRAKT_PASSWORD;
import static com.miz.functions.PreferenceKeys.TRAKT_USERNAME;

public class Trakt {

    private Trakt() {
    } // No instantiation

    public static String getApiKey(Context context) {
        String key = context.getString(R.string.trakt_api_key);
        if (TextUtils.isEmpty(key) || key.equals("add_your_own"))
            throw new RuntimeException("You need to add a Trakt API key!");
        return key;
    }

    public static boolean performMovieCheckin(String tmdbId, Context c) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password))
            return false;

        try {
            // Cancel any current check-in
            Request request = MizLib.getTraktAuthenticationRequest(
                    "http://api.trakt.tv/movie/cancelcheckin/" + getApiKey(c), username, password);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            if (!response.isSuccessful())
                return false;
        } catch (Exception e) {
            return false;
        }

        try {
            // Perform the new check-in
            JSONObject holder = new JSONObject();
            holder.put("username", username);
            holder.put("password", password);
            holder.put("tmdb_id", tmdbId);
            holder.put("app_version", c.getPackageManager().getPackageInfo(c.getPackageName(), 0).versionName);
            holder.put("app_date", c.getPackageManager().getPackageInfo(c.getPackageName(), 0).versionName);

            Request request = MizLib.getJsonPostRequest("http://api.trakt.tv/movie/checkin/" + getApiKey(c),
                    holder);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean performMovieCheckin(Movie movie, Context c) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password))
            return false;

        try {
            // Cancel any current check-in
            Request request = MizLib.getTraktAuthenticationRequest(
                    "http://api.trakt.tv/movie/cancelcheckin/" + getApiKey(c), username, password);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            if (!response.isSuccessful())
                return false;
        } catch (Exception e) {
            return false;
        }

        try {
            // Perform the new check-in
            JSONObject holder = new JSONObject();
            holder.put("username", username);
            holder.put("password", password);
            holder.put("imdb_id", movie.getImdbId());
            holder.put("tmdb_id", movie.getImdbId());
            holder.put("title", movie.getTitle());
            holder.put("year", movie.getReleaseYear().replace("(", "").replace(")", ""));
            holder.put("app_version", c.getPackageManager().getPackageInfo(c.getPackageName(), 0).versionName);
            holder.put("app_date", c.getPackageManager().getPackageInfo(c.getPackageName(), 0).versionName);

            Request request = MizLib.getJsonPostRequest("http://api.trakt.tv/movie/checkin/" + getApiKey(c),
                    holder);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean performEpisodeCheckin(TvShowEpisode episode, Context c) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password))
            return false;

        try {
            // Cancel any current check-in
            Request request = MizLib.getTraktAuthenticationRequest(
                    "http://api.trakt.tv/show/cancelcheckin/" + getApiKey(c), username, password);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            if (!response.isSuccessful())
                return false;
        } catch (Exception e) {
            return false;
        }

        try {
            // Perform the new check-in
            JSONObject holder = new JSONObject();
            holder.put("username", username);
            holder.put("password", password);
            holder.put("tvdb_id", episode.getShowId());
            holder.put("title", "");
            holder.put("year", "");
            holder.put("season", episode.getSeason());
            holder.put("episode", episode.getEpisode());
            holder.put("app_version", c.getPackageManager().getPackageInfo(c.getPackageName(), 0).versionName);
            holder.put("app_date", c.getPackageManager().getPackageInfo(c.getPackageName(), 0).versionName);

            Request request = MizLib.getJsonPostRequest("http://api.trakt.tv/show/checkin/" + getApiKey(c), holder);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean markMovieAsWatched(List<Movie> movies, Context c) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password) || movies.size() == 0)
            return false;

        try {
            JSONObject holder = new JSONObject();
            holder.put("username", username);
            holder.put("password", password);

            JSONArray array = new JSONArray();
            int count = movies.size();
            for (int i = 0; i < count; i++) {
                JSONObject jsonMovie = new JSONObject();
                jsonMovie.put("imdb_id", movies.get(i).getImdbId());
                jsonMovie.put("tmdb_id", movies.get(i).getTmdbId());
                jsonMovie.put("year", movies.get(i).getReleaseYear());
                jsonMovie.put("title", movies.get(i).getTitle());
                array.put(jsonMovie);
            }
            holder.put("movies", array);

            Request request = MizLib
                    .getJsonPostRequest((movies.get(0).hasWatched() ? "http://api.trakt.tv/movie/seen/"
                            : "http://api.trakt.tv/movie/unseen/") + getApiKey(c), holder);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean markMoviesAsWatched(List<MediumMovie> movies, Context c) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password) || movies.size() == 0)
            return false;

        try {
            JSONObject holder = new JSONObject();
            holder.put("username", username);
            holder.put("password", password);

            JSONArray array = new JSONArray();
            int count = movies.size();
            for (int i = 0; i < count; i++) {
                JSONObject jsonMovie = new JSONObject();
                jsonMovie.put("tmdb_id", movies.get(i).getTmdbId());
                jsonMovie.put("year", movies.get(i).getReleaseYear());
                jsonMovie.put("title", movies.get(i).getTitle());
                array.put(jsonMovie);
            }
            holder.put("movies", array);

            Request request = MizLib
                    .getJsonPostRequest((movies.get(0).hasWatched() ? "http://api.trakt.tv/movie/seen/"
                            : "http://api.trakt.tv/movie/unseen/") + getApiKey(c), holder);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean changeSeasonWatchedStatus(String showId, int season, Context c, boolean watched) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password))
            return false;

        try {
            JSONObject holder = new JSONObject();
            holder.put("username", username);
            holder.put("password", password);
            holder.put("imdb_id", "");
            holder.put("tvdb_id", showId);
            holder.put("title", "");
            holder.put("year", "");
            holder.put("season", season);

            Request request = MizLib.getJsonPostRequest(
                    "http://api.trakt.tv/show/season/" + (!watched ? "un" : "") + "seen/" + getApiKey(c), holder);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean markEpisodeAsWatched(String showId, List<com.miz.functions.TvShowEpisode> episodes,
            Context c, boolean watched) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)
                || !settings.getBoolean(SYNC_WITH_TRAKT, false) || episodes.size() == 0)
            return false;

        try {
            JSONObject holder = new JSONObject();
            holder.put("username", username);
            holder.put("password", password);
            holder.put("imdb_id", "");
            holder.put("tvdb_id", showId);
            holder.put("title", "");
            holder.put("year", "");

            JSONArray array = new JSONArray();
            int count = episodes.size();
            for (int i = 0; i < count; i++) {
                JSONObject jsonMovie = new JSONObject();
                jsonMovie.put("season", episodes.get(i).getSeason());
                jsonMovie.put("episode", episodes.get(i).getEpisode());
                array.put(jsonMovie);
            }
            holder.put("episodes", array);

            Request request = MizLib.getJsonPostRequest(
                    "http://api.trakt.tv/show/episode/" + (!watched ? "un" : "") + "seen/" + getApiKey(c), holder);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();

            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean markTvShowAsWatched(TraktTvShow show, Context c) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password))
            return false;

        try {
            JSONObject json = new JSONObject();
            json.put("username", username);
            json.put("password", password);
            json.put("tvdb_id", show.getId());
            json.put("title", show.getTitle());

            JSONArray array = new JSONArray();
            for (String season : show.getSeasons().keySet()) {
                Collection<String> episodes = show.getSeasons().get(season);
                for (String episode : episodes) {
                    JSONObject jsonShow = new JSONObject();
                    jsonShow.put("season", season);
                    jsonShow.put("episode", episode);
                    array.put(jsonShow);
                }
            }
            json.put("episodes", array);

            Request request = MizLib.getJsonPostRequest("http://api.trakt.tv/show/episode/seen/" + getApiKey(c),
                    json);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean addMoviesToLibrary(List<Movie> movies, Context c) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password) || movies.size() == 0)
            return false;

        try {
            JSONObject json = new JSONObject();
            json.put("username", username);
            json.put("password", password);

            JSONArray array = new JSONArray();
            int count = movies.size();
            for (int i = 0; i < count; i++) {
                JSONObject jsonMovie = new JSONObject();
                jsonMovie.put("imdb_id", movies.get(i).getImdbId());
                jsonMovie.put("tmdb_id", movies.get(i).getTmdbId());
                jsonMovie.put("year", movies.get(i).getReleaseYear());
                jsonMovie.put("title", movies.get(i).getTitle());
                array.put(jsonMovie);
            }
            json.put("movies", array);

            Request request = MizLib.getJsonPostRequest("http://api.trakt.tv/movie/library/" + getApiKey(c), json);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean movieWatchlist(List<Movie> movies, Context c) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password) || movies.size() == 0)
            return false;

        try {
            JSONObject json = new JSONObject();
            json.put("username", username);
            json.put("password", password);

            JSONArray array = new JSONArray();
            int count = movies.size();
            for (int i = 0; i < count; i++) {
                JSONObject jsonMovie = new JSONObject();
                jsonMovie.put("imdb_id", movies.get(i).getImdbId());
                jsonMovie.put("tmdb_id", movies.get(i).getTmdbId());
                jsonMovie.put("year", movies.get(i).getReleaseYear());
                jsonMovie.put("title", movies.get(i).getTitle());
                array.put(jsonMovie);
            }
            json.put("movies", array);

            Request request = MizLib
                    .getJsonPostRequest((movies.get(0).toWatch() ? "http://api.trakt.tv/movie/watchlist/"
                            : "http://api.trakt.tv/movie/unwatchlist/") + getApiKey(c), json);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean moviesWatchlist(List<MediumMovie> movies, Context c) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password) || movies.size() == 0)
            return false;

        try {
            JSONObject json = new JSONObject();
            json.put("username", username);
            json.put("password", password);

            JSONArray array = new JSONArray();
            int count = movies.size();
            for (int i = 0; i < count; i++) {
                JSONObject jsonMovie = new JSONObject();
                jsonMovie.put("tmdb_id", movies.get(i).getTmdbId());
                jsonMovie.put("year", movies.get(i).getReleaseYear());
                jsonMovie.put("title", movies.get(i).getTitle());
                array.put(jsonMovie);
            }
            json.put("movies", array);

            Request request = MizLib
                    .getJsonPostRequest((movies.get(0).toWatch() ? "http://api.trakt.tv/movie/watchlist/"
                            : "http://api.trakt.tv/movie/unwatchlist/") + getApiKey(c), json);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean movieFavorite(List<Movie> movies, Context c) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password) || movies.size() == 0)
            return false;

        try {
            JSONObject json = new JSONObject();
            json.put("username", username);
            json.put("password", password);

            JSONArray array = new JSONArray();
            int count = movies.size();
            for (int i = 0; i < count; i++) {
                JSONObject jsonMovie = new JSONObject();
                jsonMovie.put("imdb_id", movies.get(i).getImdbId());
                jsonMovie.put("tmdb_id", movies.get(i).getTmdbId());
                jsonMovie.put("year", movies.get(i).getReleaseYear());
                jsonMovie.put("title", movies.get(i).getTitle());
                jsonMovie.put("rating", movies.get(i).isFavourite() ? "love" : "unrate");
                array.put(jsonMovie);
            }
            json.put("movies", array);

            Request request = MizLib.getJsonPostRequest("http://api.trakt.tv/rate/movies/" + getApiKey(c), json);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean moviesFavorite(List<MediumMovie> movies, Context c) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password) || movies.size() == 0)
            return false;

        try {
            JSONObject json = new JSONObject();
            json.put("username", username);
            json.put("password", password);

            JSONArray array = new JSONArray();
            int count = movies.size();
            for (int i = 0; i < count; i++) {
                JSONObject jsonMovie = new JSONObject();
                jsonMovie.put("tmdb_id", movies.get(i).getTmdbId());
                jsonMovie.put("year", movies.get(i).getReleaseYear());
                jsonMovie.put("title", movies.get(i).getTitle());
                jsonMovie.put("rating", movies.get(i).isFavourite() ? "love" : "unrate");
                array.put(jsonMovie);
            }
            json.put("movies", array);

            Request request = MizLib.getJsonPostRequest("http://api.trakt.tv/rate/movies/" + getApiKey(c), json);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean hasTraktAccount(Context c) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        return !(TextUtils.isEmpty(username) || TextUtils.isEmpty(password));
    }

    public static boolean addTvShowToLibrary(TraktTvShow show, Context c) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password))
            return false;

        try {
            JSONObject json = new JSONObject();
            json.put("username", username);
            json.put("password", password);
            json.put("tvdb_id", show.getId());
            json.put("title", show.getTitle());

            JSONArray array = new JSONArray();
            for (String season : show.getSeasons().keySet()) {
                Collection<String> episodes = show.getSeasons().get(season);
                for (String episode : episodes) {
                    JSONObject jsonShow = new JSONObject();
                    jsonShow.put("season", season);
                    jsonShow.put("episode", episode);
                    array.put(jsonShow);
                }
            }
            json.put("episodes", array);

            Request request = MizLib.getJsonPostRequest("http://api.trakt.tv/show/episode/library/" + getApiKey(c),
                    json);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean tvShowFavorite(List<TvShow> shows, Context c) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password) || shows.size() == 0)
            return false;

        try {
            JSONObject json = new JSONObject();
            json.put("username", username);
            json.put("password", password);

            JSONArray array = new JSONArray();
            int count = shows.size();
            for (int i = 0; i < count; i++) {
                JSONObject jsonShow = new JSONObject();
                jsonShow.put("tvdb_id", shows.get(i).getId());
                jsonShow.put("title", shows.get(i).getTitle());
                jsonShow.put("rating", shows.get(i).isFavorite() ? "love" : "unrate");
                array.put(jsonShow);
            }
            json.put("shows", array);

            Request request = MizLib.getJsonPostRequest("http://api.trakt.tv/rate/shows/" + getApiKey(c), json);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();
            return response.isSuccessful();
        } catch (Exception e) {
            return false;
        }
    }

    public static int WATCHED = 1, RATINGS = 2, WATCHLIST = 3, COLLECTION = 4;

    public static JSONArray getMovieLibrary(Context c, int type) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password))
            return new JSONArray();

        try {
            String url = "";
            if (type == WATCHED) {
                url = "http://api.trakt.tv/user/library/movies/watched.json/" + getApiKey(c) + "/" + username;
            } else if (type == RATINGS) {
                url = "http://api.trakt.tv/user/ratings/movies.json/" + getApiKey(c) + "/" + username + "/love";
            } else if (type == WATCHLIST) {
                url = "http://api.trakt.tv/user/watchlist/movies.json/" + getApiKey(c) + "/" + username;
            } else if (type == COLLECTION) {
                url = "http://api.trakt.tv/user/library/movies/collection.json/" + getApiKey(c) + "/" + username;
            }

            Request request = MizLib.getTraktAuthenticationRequest(url, username, password);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();

            if (response.isSuccessful())
                return new JSONArray(response.body().string());
            return new JSONArray();
        } catch (Exception e) {
            return new JSONArray();
        }
    }

    public static JSONArray getTvShowLibrary(Context c, int type) {
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(c);
        String username = settings.getString(TRAKT_USERNAME, "").trim();
        String password = settings.getString(TRAKT_PASSWORD, "");

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password))
            return new JSONArray();

        try {
            String url = "";
            if (type == WATCHED) {
                url = "http://api.trakt.tv/user/library/shows/watched.json/" + getApiKey(c) + "/" + username;
            } else if (type == RATINGS) {
                url = "http://api.trakt.tv/user/ratings/shows.json/" + getApiKey(c) + "/" + username + "/love";
            } else if (type == COLLECTION) {
                url = "http://api.trakt.tv/user/library/shows/collection.json/" + getApiKey(c) + "/" + username;
            }

            Request request = MizLib.getTraktAuthenticationRequest(url, username, password);
            Response response = MizuuApplication.getOkHttpClient().newCall(request).execute();

            if (response.isSuccessful())
                return new JSONArray(response.body().string());
            return new JSONArray();
        } catch (Exception e) {
            return new JSONArray();
        }
    }

    public static Show getShowSummary(Context context, String showId) {
        return new Show(MizLib.getJSONObject(context,
                "http://api.trakt.tv/show/summary.json/" + getApiKey(context) + "/" + showId));
    }

    public static com.miz.apis.trakt.Movie getMovieSummary(Context context, String movieId) {
        return new com.miz.apis.trakt.Movie(MizLib.getJSONObject(context,
                "http://api.trakt.tv/movie/summary.json/" + getApiKey(context) + "/" + movieId));
    }
}