示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
        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));
        }
示例#5
0
            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)));
            }
示例#6
0
        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));
        }
示例#7
0
        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) }
            }));
        }
示例#8
0
            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);
            }
示例#9
0
            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);
            }
示例#10
0
        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));
        }
示例#11
0
 public async Task <AnalyticsListResponse <EventAnalytic> > GetEventAnalyticsListAsync()
 {
     return(await HttpConnection.GetAsync <AnalyticsListResponse <EventAnalytic> >("/analytics/events/list"));
 }