/// <summary> /// Checks into the given <see cref="ITraktEpisode" />. Use this method, if the given episode has no valid ids. /// <para>OAuth authorization required.</para> /// <para> /// See <a href="http://docs.trakt.apiary.io/#reference/checkin/check-into-an-item">"Trakt API Doc - Checkin: Checkin"</a> for more information. /// </para> /// </summary> /// <param name="episode">The <see cref="ITraktEpisode" />, which will be checked in.</param> /// <param name="show">The <see cref="ITraktShow" />, which will be used to check into the given episode.</param> /// <param name="appVersion">Optional application version for the checkin.</param> /// <param name="appBuildDate">Optional application build date for the checkin. Will be converted to the Trakt date-format.</param> /// <param name="message">The message, which will be used for sharing. If none is given, the user's default message will be used.</param> /// <param name="sharing">Optional sharing settings, which will override the user's default sharing settings.</param> /// <param name="foursquareVenueID">Optional Foursquare venue id for the checkin.</param> /// <param name="foursquareVenueName">Optional Foursquare venue name for the checkin.</param> /// <param name="cancellationToken"></param> /// <returns>An <see cref="ITraktEpisodeCheckinPostResponse" /> instance, containing the successfully checked in episode's data.</returns> /// <exception cref="TraktException">Thrown, if the request fails.</exception> /// <exception cref="ArgumentException">Thrown, if the given show's title is null or empty.</exception> /// <exception cref="ArgumentNullException">Thrown, if the given episode is null. Thrown, if the given show is null.</exception> /// <exception cref="ArgumentOutOfRangeException">Thrown, if the given episode's season number or the given episode's number is below zero.</exception> public Task <TraktResponse <ITraktEpisodeCheckinPostResponse> > CheckIntoEpisodeWithShowAsync(ITraktEpisode episode, ITraktShow show, string appVersion = null, DateTime?appBuildDate = null, string message = null, ITraktSharing sharing = null, string foursquareVenueID = null, string foursquareVenueName = null, CancellationToken cancellationToken = default) { var requestBody = new TraktEpisodeCheckinPost { Episode = episode, Show = show, Message = message, Sharing = sharing, FoursquareVenueId = foursquareVenueID, FoursquareVenueName = foursquareVenueName }; if (!string.IsNullOrEmpty(appVersion)) { requestBody.AppVersion = appVersion; } if (appBuildDate.HasValue) { requestBody.AppDate = appBuildDate.Value.ToTraktDateString(); } var requestHandler = new RequestHandler(Client); return(requestHandler.ExecuteSingleItemRequestAsync(new CheckinRequest <ITraktEpisodeCheckinPostResponse, ITraktEpisodeCheckinPost> { RequestBody = requestBody }, cancellationToken)); }
public void TestTraktEpisodeCheckinPostDefaultConstructor() { var episodeCheckin = new TraktEpisodeCheckinPost(); episodeCheckin.Sharing.Should().BeNull(); episodeCheckin.Message.Should().BeNullOrEmpty(); episodeCheckin.AppVersion.Should().BeNullOrEmpty(); episodeCheckin.AppDate.Should().BeNull(); episodeCheckin.FoursquareVenueId.Should().BeNullOrEmpty(); episodeCheckin.FoursquareVenueName.Should().BeNullOrEmpty(); episodeCheckin.Episode.Should().BeNull(); episodeCheckin.Show.Should().BeNull(); }
public async Task <TraktEpisodeCheckinPostResponse> CheckIntoEpisodeWithShowAsync([NotNull] TraktEpisode episode, [NotNull] TraktShow show, string appVersion = null, DateTime?appBuildDate = null, string message = null, TraktSharing sharing = null, string foursquareVenueID = null, string foursquareVenueName = null) { Validate(episode, show); var requestBody = new TraktEpisodeCheckinPost { Episode = new TraktEpisode { Ids = episode.Ids, SeasonNumber = episode.SeasonNumber, Number = episode.Number }, Show = new TraktShow { Title = show.Title }, Message = message, Sharing = sharing, FoursquareVenueId = foursquareVenueID, FoursquareVenueName = foursquareVenueName }; if (!string.IsNullOrEmpty(appVersion)) { requestBody.AppVersion = appVersion; } if (appBuildDate.HasValue) { requestBody.AppDate = appBuildDate.Value.ToTraktDateString(); } return(await QueryAsync(new TraktCheckinRequest <TraktEpisodeCheckinPostResponse, TraktEpisodeCheckinPost>(Client) { RequestBody = requestBody })); }
public override async Task <ITraktEpisodeCheckinPost> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default) { CheckJsonTextReader(jsonReader); if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject) { var sharingReader = new SharingObjectJsonReader(); var episodeReader = new EpisodeObjectJsonReader(); var showReader = new ShowObjectJsonReader(); ITraktEpisodeCheckinPost episodeCheckinPost = new TraktEpisodeCheckinPost(); while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName) { var propertyName = jsonReader.Value.ToString(); switch (propertyName) { case JsonProperties.PROPERTY_NAME_SHARING: episodeCheckinPost.Sharing = await sharingReader.ReadObjectAsync(jsonReader, cancellationToken); break; case JsonProperties.PROPERTY_NAME_MESSAGE: episodeCheckinPost.Message = await jsonReader.ReadAsStringAsync(cancellationToken); break; case JsonProperties.PROPERTY_NAME_APP_VERSION: episodeCheckinPost.AppVersion = await jsonReader.ReadAsStringAsync(cancellationToken); break; case JsonProperties.PROPERTY_NAME_APP_DATE: episodeCheckinPost.AppDate = await jsonReader.ReadAsStringAsync(cancellationToken); break; case JsonProperties.PROPERTY_NAME_VENUE_ID: episodeCheckinPost.FoursquareVenueId = await jsonReader.ReadAsStringAsync(cancellationToken); break; case JsonProperties.PROPERTY_NAME_VENUE_NAME: episodeCheckinPost.FoursquareVenueName = await jsonReader.ReadAsStringAsync(cancellationToken); break; case JsonProperties.PROPERTY_NAME_SHOW: episodeCheckinPost.Show = await showReader.ReadObjectAsync(jsonReader, cancellationToken); break; case JsonProperties.PROPERTY_NAME_EPISODE: episodeCheckinPost.Episode = await episodeReader.ReadObjectAsync(jsonReader, cancellationToken); break; default: await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken); break; } } return(episodeCheckinPost); } return(await Task.FromResult(default(ITraktEpisodeCheckinPost))); }
public void TestTraktEpisodeCheckinPostWriteJson() { var sharing = new TraktSharing { Facebook = true, Twitter = false, Tumblr = true }; var message = "checkin in now"; var appVersion = "App Version 1.0.0"; var appDate = DateTime.UtcNow.ToString("yyyy-MM-dd"); var venueId = "venue id"; var venueName = "venue name"; var episodeNr = 1; var seasonNr = 1; var episodeTitle = "Pilot"; var episodeTraktId = 16U; var episodeTvdb = 349232U; var episodeImdb = "tt0959621"; var episodeTmdb = 62085U; var episodeTvRage = 637041U; var showTitle = "Breaking Bad"; var showYear = 2008; var showTraktId = 1U; var showSlug = "breaking-bad"; var showTvdb = 81189U; var showImdb = "tt0903747"; var showTmdb = 1396U; var showTvRage = 18164U; var episode = new TraktEpisode { SeasonNumber = seasonNr, Number = episodeNr, Title = episodeTitle, Ids = new TraktEpisodeIds { Trakt = episodeTraktId, Tvdb = episodeTvdb, Imdb = episodeImdb, Tmdb = episodeTmdb, TvRage = episodeTvRage } }; var show = new TraktShow { Title = showTitle, Year = showYear, Ids = new TraktShowIds { Trakt = showTraktId, Slug = showSlug, Tvdb = showTvdb, Imdb = showImdb, Tmdb = showTmdb, TvRage = showTvRage } }; var episodeCheckin = new TraktEpisodeCheckinPost { Sharing = sharing, Message = message, AppVersion = appVersion, AppDate = appDate, FoursquareVenueId = venueId, FoursquareVenueName = venueName, Episode = episode, Show = show }; var strJson = JsonConvert.SerializeObject(episodeCheckin); strJson.Should().NotBeNullOrEmpty(); var episodeCheckinFromJson = JsonConvert.DeserializeObject <TraktEpisodeCheckinPost>(strJson); episodeCheckinFromJson.Should().NotBeNull(); episodeCheckinFromJson.Sharing.Should().NotBeNull(); episodeCheckinFromJson.Sharing.Facebook.Should().BeTrue(); episodeCheckinFromJson.Sharing.Twitter.Should().BeFalse(); episodeCheckinFromJson.Sharing.Tumblr.Should().BeTrue(); episodeCheckinFromJson.Message.Should().Be(message); episodeCheckinFromJson.AppVersion.Should().Be(appVersion); episodeCheckinFromJson.AppDate.Should().NotBeNull().And.NotBeEmpty().And.Be(appDate); episodeCheckinFromJson.FoursquareVenueId.Should().Be(venueId); episodeCheckinFromJson.FoursquareVenueName.Should().Be(venueName); episodeCheckinFromJson.Episode.Should().NotBeNull(); episodeCheckinFromJson.Episode.SeasonNumber.Should().Be(seasonNr); episodeCheckinFromJson.Episode.Number.Should().Be(episodeNr); episodeCheckinFromJson.Episode.Title.Should().Be(episodeTitle); episodeCheckinFromJson.Episode.Ids.Should().NotBeNull(); episodeCheckinFromJson.Episode.Ids.Trakt.Should().Be(episodeTraktId); episodeCheckinFromJson.Episode.Ids.Tvdb.Should().Be(episodeTvdb); episodeCheckinFromJson.Episode.Ids.Imdb.Should().Be(episodeImdb); episodeCheckinFromJson.Episode.Ids.Tmdb.Should().Be(episodeTmdb); episodeCheckinFromJson.Episode.Ids.TvRage.Should().Be(episodeTvRage); episodeCheckinFromJson.Show.Should().NotBeNull(); episodeCheckinFromJson.Show.Title.Should().Be(showTitle); episodeCheckinFromJson.Show.Year.Should().Be(showYear); episodeCheckinFromJson.Show.Ids.Should().NotBeNull(); episodeCheckinFromJson.Show.Ids.Trakt.Should().Be(showTraktId); episodeCheckinFromJson.Show.Ids.Slug.Should().Be(showSlug); episodeCheckinFromJson.Show.Ids.Tvdb.Should().Be(showTvdb); episodeCheckinFromJson.Show.Ids.Imdb.Should().Be(showImdb); episodeCheckinFromJson.Show.Ids.Tmdb.Should().Be(showTmdb); episodeCheckinFromJson.Show.Ids.TvRage.Should().Be(showTvRage); }