コード例 #1
0
        public void RemoveMovie(TmdbMovie movie, string sessionId)
        {
            if (null == movie)
            {
                throw new ArgumentNullException(nameof(movie));
            }
            if (null == sessionId)
            {
                throw new ArgumentNullException(nameof(sessionId));
            }
            if (0 == sessionId.Length)
            {
                throw new ArgumentException(nameof(sessionId) + " must not be empty.", nameof(sessionId));
            }
            var movieId = movie.Id;
            var args    = new JsonObject();

            args.Add("session_id", sessionId);
            var payload = new JsonObject();

            payload.Add("media_id", movieId);
            var id = GetField("id", -1);

            if (-1 < id)
            {
                Tmdb.Invoke(string.Concat("/list/" + id.ToString() + "/remove_item"), args, payload);
            }
        }
コード例 #2
0
        static KeyValuePair <string, DateTime> _CreateGuestSession()
        {
            var d = Tmdb.Invoke("/authentication/guest_session/new");

            if (null != d)
            {
                object o;
                string rt = null;
                if (d.TryGetValue("guest_session_id", out o))
                {
                    rt = o as string;
                }
                DateTime dt = default(DateTime);
                if (d.TryGetValue("expires_at", out o))
                {
                    var s = o as string;
                    if (!string.IsNullOrEmpty(s))
                    {
                        dt = _ParseDateTime(s);
                    }
                }
                return(new KeyValuePair <string, DateTime>(rt, dt));
            }
            throw new Exception("Error in response.");
        }
コード例 #3
0
        public static KeyValuePair <string, DateTime> AuthenticateRequestToken(string requestToken, string username, string password)
        {
            var body = new JsonObject().Synchronize();

            body.Add("username", username);
            body.Add("password", password);
            body.Add("request_token", requestToken);
            var d = Tmdb.Invoke("/authentication/token/validate_with_login", null, body);

            if (null != d)
            {
                object o;
                string rt = null;
                if (d.TryGetValue("request_token", out o))
                {
                    rt = o as string;
                }
                DateTime dt = default(DateTime);
                if (d.TryGetValue("expires_at", out o))
                {
                    var s = o as string;
                    if (!string.IsNullOrEmpty(s))
                    {
                        dt = _ParseDateTime(s);
                    }
                }
                return(new KeyValuePair <string, DateTime>(rt, dt));
            }
            return(default(KeyValuePair <string, DateTime>));
        }
コード例 #4
0
ファイル: TmdbPerson.cs プロジェクト: wangzhefeng2000/Json
        // gets all roles combined in a single (uncached) request
        public TmdbRole[] GetRoles()
        {
            var credits = Tmdb.Invoke(string.Concat("/", string.Join("/", PathIdentity), "/combined_credits"));

            if (null != credits)
            {
                var result = new List <TmdbRole>();
                // we're going to effectively "join" the cast and "crew" elements like we do with Images on the TmdbPrimaryClass.
                object o;
                var    hasResults = false;
                if (credits.TryGetValue("cast", out o))
                {
                    var l = o as IList <object>;
                    hasResults = true;
                    result.AddRange(JsonArray.ToArray(l, (d) => new TmdbCastMember((IDictionary <string, object>)d)));
                }
                if (credits.TryGetValue("crew", out o))
                {
                    var l = o as IList <object>;
                    hasResults = true;
                    result.AddRange(JsonArray.ToArray(l, (d) => new TmdbCrewMember((IDictionary <string, object>)d)));
                }
                if (hasResults)
                {
                    return(result.ToArray());
                }
            }
            return(null);
        }
コード例 #5
0
ファイル: TmdbPerson.cs プロジェクト: wangzhefeng2000/Json
        public static TmdbPerson GetLatest()
        {
            var json = Tmdb.Invoke("/person/latest");

            if (null != json)
            {
                return(new TmdbPerson(json));
            }
            return(null);
        }
コード例 #6
0
ファイル: TmdbMovie.cs プロジェクト: wangzhefeng2000/Json
        public static TmdbMovie GetLatest()
        {
            var json = Tmdb.Invoke("/movie/latest");

            if (null != json)
            {
                return(new TmdbMovie(json));
            }
            return(null);
        }
コード例 #7
0
        public static TmdbShow GetLatest()
        {
            var json = Tmdb.Invoke("/tv/latest");

            if (null != json)
            {
                return(new TmdbShow(json));
            }
            return(null);
        }
コード例 #8
0
ファイル: TmdbSession.cs プロジェクト: wangzhefeng2000/Json
 public void Close()
 {
     if (!_isDisposed)
     {
         var payload = new JsonObject();
         payload.Add("session_id", Id);
         Tmdb.Invoke("/authentication/session", null, payload, httpMethod: "DELETE");
     }
     _isDisposed = true;
 }
コード例 #9
0
        protected void EnsureFetchedExternalIds()
        {
            var l = GetField <IList <object> >("external_ids");

            if (null == l)
            {
                var json = Tmdb.Invoke(string.Concat("/", string.Join("/", PathIdentity), "/external_ids"));
                if (null != json)
                {
                    Json.Add("external_ids", json);
                }
            }
        }
コード例 #10
0
        public void ClearRating(TmdbSession session = null)
        {
            var args = new JsonObject();

            if (null != session)
            {
                args.Add("session_id", session.Id);
            }
            else
            {
                args.Add("guest_session_id", Tmdb.GuestSessionId);
            }
            Tmdb.Invoke(string.Concat("/", string.Join("/", PathIdentity), "/rating"), args, httpMethod: "DELETE");
        }
コード例 #11
0
        void _EnsureFetchedCredits()
        {
            var credits = GetField <IList <object> >("credits");

            if (null != credits)
            {
                return;
            }
            var json = Tmdb.Invoke(string.Concat("/", string.Join("/", PathIdentity), "/credits"));

            if (null != json)
            {
                Json["credits"] = json;
            }
        }
コード例 #12
0
        public TmdbMediaAccountInfo GetAccountInfo(TmdbSession session = null)
        {
            var args = new JsonObject();

            if (null == session)
            {
                args.Add("guest_session_id", Tmdb.GuestSessionId);
            }
            else
            {
                args.Add("session_id", session.Id);
            }
            var json = Tmdb.Invoke(string.Concat("/", string.Join("/", PathIdentity), "/account_states"));

            return(new TmdbMediaAccountInfo(json));
        }
コード例 #13
0
 protected void FetchJson(string path = null, Func <object, object> fixupResponse = null, Func <object, object> fixupError = null)
 {
     try
     {
         var json = Tmdb.Invoke(path ?? string.Join("/", PathIdentity), null, null, fixupResponse, fixupError);
         JsonObject.CopyTo(json, Json);
     }
     catch (JsonRpcException rex)
     {
         if (rex.ErrorCode == -39)
         {
             return;
         }
         throw;
     }
 }
コード例 #14
0
        void _EnsureFetchedContentRatings()
        {
            var l = GetField <IList <object> >("content_ratings");

            if (null == l)
            {
                var    json = Tmdb.Invoke(string.Concat("/", string.Join("/", PathIdentity), "/alternative_titles"));
                object o;
                if (json.TryGetValue("results", out o))
                {
                    l = o as IList <object>;
                    if (null != l)
                    {
                        Json["content_ratings"] = l;
                    }
                }
            }
        }
コード例 #15
0
        void _EnsureFetchedReleases()
        {
            var l = GetField <IList <object> >("releases");

            if (null == l)
            {
                var    json = Tmdb.Invoke(string.Concat("/", string.Join("/", _ParentPathIdentity), "/release_dates"));
                object o;
                if (json.TryGetValue("results", out o))
                {
                    l = o as IList <object>;
                }
                if (null != l)
                {
                    Json.Add("keywords", l);
                }
            }
        }
コード例 #16
0
        public void ClearMovies(string sessionId)
        {
            if (null == sessionId)
            {
                throw new ArgumentNullException(nameof(sessionId));
            }
            if (0 == sessionId.Length)
            {
                throw new ArgumentException(nameof(sessionId) + " must not be empty.", nameof(sessionId));
            }
            var args = new JsonObject();

            args.Add("session_id", sessionId);
            args.Add("confirm", true);
            var id = GetField("id", -1);

            if (-1 < id)
            {
                Tmdb.Invoke(string.Concat("/list/" + id.ToString() + "/remove_item"), args, httpMethod: "POST");
            }
        }
コード例 #17
0
        public void Rate(double rating, TmdbSession session = null)
        {
            if (0.5d > rating || 10d < rating)
            {
                throw new ArgumentOutOfRangeException(nameof(rating));
            }
            var args = new JsonObject();

            if (null != session)
            {
                args.Add("session_id", session.Id);
            }
            else
            {
                args.Add("guest_session_id", Tmdb.GuestSessionId);
            }
            var payload = new JsonObject();

            payload.Add("value", rating);
            Tmdb.Invoke(string.Concat("/", string.Join("/", PathIdentity), "/rating"), args, payload);
        }
コード例 #18
0
ファイル: TmdbSession.cs プロジェクト: wangzhefeng2000/Json
        public TmdbMovieList CreateMovieList(string name = null, string description = null, string language = null)
        {
            _CheckDisposed();
            var args = new JsonObject();

            args.Add("session_id", Id);
            var payload = new JsonObject();

            if (null != name)
            {
                payload.Add("name", name);
            }
            if (null != description)
            {
                payload.Add("description", name);
            }
            if (null != language)
            {
                payload.Add("language", name);
            }

            var d = Tmdb.Invoke(string.Concat("/list/", Id), args, payload);

            if (null != d)
            {
                object o;
                if (d.TryGetValue("list_id", out o))
                {
                    var id = o as string;
                    if (!string.IsNullOrEmpty(id))
                    {
                        // create the object to initialize the movie list with
                        var j = new JsonObject();
                        j.Add("id", id);
                        return(new TmdbMovieList(j));
                    }
                }
            }
            return(null);
        }
コード例 #19
0
ファイル: TmdbSession.cs プロジェクト: wangzhefeng2000/Json
        public bool DeleteMovieList(TmdbMovieList list)
        {
            _CheckDisposed();
            if (null == list)
            {
                throw new ArgumentNullException(nameof(list));
            }
            var args = new JsonObject();

            args.Add("session_id", Id);
            var d = Tmdb.Invoke(string.Concat("/list/", Id), args, httpMethod: "DELETE");

            if (null != d)
            {
                object o;
                if (d.TryGetValue("status_code", out o) && o is int && 13 == (int)o)
                {
                    return(true);
                }
            }
            return(false);
        }
コード例 #20
0
        // this isn't really a great idea since it sends a web request to get one bit of info
        // you can get all at once using the Movies property, albeit indirectly
        public bool ContainsMovie(TmdbMovie movie)
        {
            var args = new JsonObject();

            args.Add("movie_id", movie.Id);
            var id = GetField("id", -1);             // optimization
            IDictionary <string, object> d = null;

            if (-1 != id)
            {
                d = Tmdb.Invoke(string.Concat("/list/", id.ToString(), "/item_status", args));
            }
            if (null != d)
            {
                object o;
                if (d.TryGetValue("item_present", out o) && o is bool && (bool)o)
                {
                    return(true);
                }
            }
            return(false);
        }
コード例 #21
0
        public static TmdbPrimary[] Find(string externalId, TmdbExternalIdType type)
        {
            string t;

            switch (type)
            {
            case TmdbExternalIdType.ImdbId:
                t = "imdb_id";
                break;

#pragma warning disable 0612
            case TmdbExternalIdType.FreebaseMid:
#pragma warning restore 0612
                t = "freebase_mid";
                break;

#pragma warning disable 0612
            case TmdbExternalIdType.FreebaseId:
#pragma warning restore 0612
                t = "freebase_id";
                break;

            case TmdbExternalIdType.FacebookId:
                t = "facebook_id";
                break;

            case TmdbExternalIdType.InstagramId:
                t = "instagram_id";
                break;

            case TmdbExternalIdType.TwitterId:
                t = "twitter_id";
                break;

            case TmdbExternalIdType.TvdbId:
                t = "tvdb_id";
                break;

            default:
                t = null;
                break;
            }

            var hasResults = false;
            var args       = new JsonObject();
            args.Add("external_source", t);
            var result = new List <TmdbPrimary>();
            var d      = Tmdb.Invoke(string.Concat("/find/", externalId), args);
            if (null != d)
            {
                object o;
                if (d.TryGetValue("movie_results", out o))
                {
                    var l = o as IList <object>;
                    if (null != l)
                    {
                        result.AddRange(JsonArray.ToArray(l, (dd) => new TmdbMovie((IDictionary <string, object>)dd)));
                        hasResults = true;
                    }
                }
                if (d.TryGetValue("tv_results", out o))
                {
                    var l = o as IList <object>;
                    if (null != l)
                    {
                        result.AddRange(JsonArray.ToArray(l, (dd) => new TmdbShow((IDictionary <string, object>)dd)));
                        hasResults = true;
                    }
                }
                if (d.TryGetValue("person_results", out o))
                {
                    hasResults = true;
                    var l = o as IList <object>;
                    if (null != l)
                    {
                        result.AddRange(JsonArray.ToArray(l, (dd) => new TmdbPerson((IDictionary <string, object>)dd)));
                        hasResults = true;
                    }
                }
                if (hasResults)
                {
                    return(result.ToArray());
                }
            }
            return(null);
        }