internal TraktSyncHistoryRequest(TraktClient Client, TraktHistoryItemType Type = TraktHistoryItemType.Unspecified, int?Id = null, int?Page = null, int?Limit = null, DateTimeOffset?From = null, DateTimeOffset?To = null) : base(Client) { this.Id = Id; this.Type = Type; this.Page = Page; this.Limit = Limit; this.From = From; this.To = To; Template = "sync/history"; if (Type != TraktHistoryItemType.Unspecified) { Template += $"/{Helpers.TraktEnumHelper.GetDescription(Type)}"; } if (Id != null) { Template += $"/{Id}"; } Dictionary <string, string> QuerySet = new Dictionary <string, string>(); if (From != null) { QuerySet.Add("start_at", From.Value.ToString("yyyy-MM-ddTHH:mm:ssK", System.Globalization.CultureInfo.InvariantCulture)); } if (To != null) { QuerySet.Add("end_at", To.Value.ToString("yyyy-MM-ddTHH:mm:ssK", System.Globalization.CultureInfo.InvariantCulture)); } if (Page != null) { QuerySet.Add("page", Page.Value.ToString()); } if (Limit != null) { QuerySet.Add("limit", Limit.Value.ToString()); } if (QuerySet.Any()) { Template += "?"; Template += string.Join("&", QuerySet.Select(query => $"{query.Key}={query.Value}")); } }
/// <summary> /// Returns movies and episodes that a user has watched, sorted by most recent. /// </summary> /// <param name="Type">Media object type</param> /// <param name="From">What date to fetch history from</param> /// <param name="To">What date to stop fetching history from</param> /// <param name="Id">Media object ID to get history for.</param> /// <param name="Page">Page to fetch (Based on Limit size)</param> /// <param name="Limit">Limit per Page</param> /// <returns></returns> public async Task <IEnumerable <TraktSyncHistoryResponse> > GetHistoryAsync(TraktHistoryItemType Type, DateTimeOffset?From = null, DateTimeOffset?To = null, int?Id = null, int?Page = null, int?Limit = null) { return(await SendAsync(new TraktSyncHistoryRequest(Client, Type, Id, Page, Limit, From, To))); }