public async Task <PaginationResponse <Event <TEvent, TUser> > > GetAllAsync <TEvent, TUser>(string userId = null, string from = null, string to = null, string name = null, uint limit = 100, string[] expand = null) { var additionalParams = new Dictionary <string, string>(); additionalParams.Add(nameof(limit), limit.ToString()); if (userId != null) { additionalParams.Add("user_id", userId); } if (from != null) { additionalParams.Add(nameof(from), from); } if (to != null) { additionalParams.Add(nameof(to), to); } if (name != null) { additionalParams.Add(nameof(name), name); } if (expand != null) { additionalParams.Add(nameof(expand), string.Join(",", expand)); } return(await HttpConnection.GetAsync <PaginationResponse <Event <TEvent, TUser> > >("/events", additionalParams)); }
public async Task <AnalyticsTimelineResponse> GetEventAnalyticsTimelineAsync(bool distinct = false, AnalyticsTimelineGroup group = AnalyticsTimelineGroup.Day, DateTime?from = default(DateTime?), DateTime?to = default(DateTime?), string userId = null, string name = null) { var additionalParams = new Dictionary <string, string>(); additionalParams.Add(nameof(distinct), distinct.ToString().ToLowerInvariant()); additionalParams.Add(nameof(group), group.ToString().ToLowerInvariant()); if (from != null) { additionalParams.Add(nameof(from), $"{from?.ToString("yyyy-MM-ddTHH:mm:ss.fff")}Z"); } if (to != null) { additionalParams.Add(nameof(to), $"{to?.ToString("yyyy-MM-ddTHH:mm:ss.fff")}Z"); } if (userId != null) { additionalParams.Add("user_id", userId); } if (name != null) { additionalParams.Add(nameof(name), name); } return(await HttpConnection.GetAsync <AnalyticsTimelineResponse>("/analytics/events/timeline", additionalParams)); }
public async Task <Session <TSession, TUser> > GetAsync <TSession, TUser>(string id, string[] expand = null) { var additionalParams = new Dictionary <string, string>(); if (expand != null) { additionalParams.Add(nameof(expand), string.Join(",", expand)); } return(await HttpConnection.GetAsync <Session <TSession, TUser> >($"/sessions/{id}", additionalParams)); }
public async Task <ApiAuthentication <TApiAuthentication, TUser> > GetAsync <TApiAuthentication, TUser>(string key, string[] expand = null) { var additionalParams = new Dictionary <string, string>(); if (expand != null) { additionalParams.Add(nameof(expand), string.Join(",", expand)); } return(await HttpConnection.GetAsync <ApiAuthentication <TApiAuthentication, TUser> >($"/api_authentication/{key}", additionalParams)); }
public async Task ThrownHttpExceptionPropagates() { // arrange var exception = new HttpRequestException("This is an expected exception."); var httpMessenger = Substitute.For <IHttpMessenger>(); httpMessenger.GetAsync(Arg.Any <Uri>()).Returns <Task <string> >(x => throw exception); var httpConnection = new HttpConnection(httpMessenger, Settings.ApiKey); // act & assert await Assert.ThrowsAsync <HttpRequestException>(() => httpConnection.GetAsync <TestModel>(new Uri("anything", UriKind.Relative))); }
public async Task <User <T> > GetByAsync <T>(UserSearchField searchField, string searchValue, string[] expand = null) { var additionalParams = new Dictionary <string, string>(); if (expand != null) { additionalParams.Add(nameof(expand), string.Join(",", expand)); } return(await HttpConnection.GetAsync <User <T> >( $"/users/{searchField.ToString().ToLowerInvariant()}:{searchValue}", additionalParams)); }
public async Task <Dictionary <string, int> > GetEventAnalyticsAsync(string[] days = null) { if (days == null) { days = new[] { "total", "7", "28" } } ; return(await HttpConnection.GetAsync <Dictionary <string, int> >("/analytics/events", new Dictionary <string, string> { { "days", string.Join(",", days) } })); }
public async Task ErrorStatusCodeResultsInException() { const string response = "{'error':'Object Not Found','limit':0,'offset':0,'number_of_page_results':0,'number_of_total_results':0,'status_code':101,'results':[]}"; // arrange var httpMessenger = Substitute.For <IHttpMessenger>(); httpMessenger.GetAsync(Arg.Any <Uri>()).Returns(Task.FromResult(response)); var httpConnection = new HttpConnection(httpMessenger, Settings.ApiKey); // act & assert var exception = await Assert.ThrowsAsync <ComicVineException>(() => httpConnection.GetAsync <TestModel>(new Uri("anything", UriKind.Relative))); Assert.Contains("Object Not Found", exception.Message, StringComparison.OrdinalIgnoreCase); }
public async Task JsonWithItemArrayDoesNotThrow() { const string response = "{'error':'OK','limit':1,'offset':0,'number_of_page_results':1,'number_of_total_results':1,'status_code':1,'results':[],'version':'1.0'}"; // arrange var httpMessenger = Substitute.For <IHttpMessenger>(); httpMessenger.GetAsync(Arg.Any <Uri>()).Returns(Task.FromResult(response)); var httpConnection = new HttpConnection(httpMessenger, Settings.ApiKey); // act var result = await httpConnection.GetAsync <TestModel>(new Uri("anything", UriKind.Relative)); // assert Assert.Equal(StatusCode.Ok, result.StatusCode); Assert.Null(result.Results); }
public async Task <PaginationResponse <User <T> > > GetAllAsync <T>(string from = null, string to = null, uint limit = 100, string[] expand = null) { var additionalParams = new Dictionary <string, string>(); additionalParams.Add(nameof(limit), limit.ToString()); if (from != null) { additionalParams.Add(nameof(from), from); } if (to != null) { additionalParams.Add(nameof(to), to); } if (expand != null) { additionalParams.Add(nameof(expand), string.Join(",", expand)); } return(await HttpConnection.GetAsync <PaginationResponse <User <T> > >("/users", additionalParams)); }
public async Task <AnalyticsListResponse <EventAnalytic> > GetEventAnalyticsListAsync() { return(await HttpConnection.GetAsync <AnalyticsListResponse <EventAnalytic> >("/analytics/events/list")); }