Exemple #1
0
        /// <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));
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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
            }));
        }
Exemple #4
0
        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)));
        }
Exemple #5
0
        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);
        }