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); } }
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."); }
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>)); }
// 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); }
public static TmdbPerson GetLatest() { var json = Tmdb.Invoke("/person/latest"); if (null != json) { return(new TmdbPerson(json)); } return(null); }
public static TmdbMovie GetLatest() { var json = Tmdb.Invoke("/movie/latest"); if (null != json) { return(new TmdbMovie(json)); } return(null); }
public static TmdbShow GetLatest() { var json = Tmdb.Invoke("/tv/latest"); if (null != json) { return(new TmdbShow(json)); } return(null); }
public void Close() { if (!_isDisposed) { var payload = new JsonObject(); payload.Add("session_id", Id); Tmdb.Invoke("/authentication/session", null, payload, httpMethod: "DELETE"); } _isDisposed = true; }
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); } } }
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"); }
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; } }
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)); }
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; } }
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; } } } }
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); } } }
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"); } }
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); }
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); }
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); }
// 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); }
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); }