Пример #1
0
        public async Task <List <ReferringSiteModel> > GetReferringSites(string owner, string repo)
        {
            if (GitHubAuthenticationService.IsDemoUser)
            {
                //Yield off of main thread to generate MobileReferringSiteModels
                await Task.Yield();

                var referringSitesList = new List <ReferringSiteModel>();

                for (int i = 0; i < DemoDataConstants.ReferringSitesCount; i++)
                {
                    referringSitesList.Add(new ReferringSiteModel(DemoDataConstants.GetRandomNumber(), DemoDataConstants.GetRandomNumber(), DemoDataConstants.GetRandomText()));
                }

                return(referringSitesList);
            }
            else
            {
                var token = await GitHubAuthenticationService.GetGitHubToken().ConfigureAwait(false);

                var referringSites = await AttemptAndRetry_Mobile(() => GithubApiClient.GetReferingSites(owner, repo, GetGitHubBearerTokenHeader(token))).ConfigureAwait(false);

                return(referringSites);
            }
        }
Пример #2
0
        public async IAsyncEnumerable <MobileReferringSiteModel> GetReferringSites(string owner, string repo)
        {
            if (GitHubAuthenticationService.IsDemoUser)
            {
                //Yield off of main thread to generate MobileReferringSiteModels
                await Task.Yield();

                for (int i = 0; i < DemoDataConstants.ReferringSitesCount; i++)
                {
                    yield return(new MobileReferringSiteModel(new ReferringSiteModel(DemoDataConstants.GetRandomNumber(), DemoDataConstants.GetRandomNumber(), DemoDataConstants.GetRandomText()), "DefaultProfileImage"));
                }

                //Allow UI to update
                await Task.Delay(1000).ConfigureAwait(false);
            }
            else
            {
                var token = await GitHubAuthenticationService.GetGitHubToken().ConfigureAwait(false);

                var referringSites = await AttemptAndRetry_Mobile(() => GithubApiClient.GetReferingSites(owner, repo, GetGitHubBearerTokenHeader(token))).ConfigureAwait(false);

                await foreach (var referringSite in getMobileReferringSiteModels(referringSites).ConfigureAwait(false))
                {
                    yield return(referringSite);
                }
Пример #3
0
        public async Task <RepositoryClonesModel> GetRepositoryCloneStatistics(string owner, string repo)
        {
            if (GitHubAuthenticationService.IsDemoUser)
            {
                //Yield off of the main thread to generate dailyViewsModelList
                await Task.Yield();

                var dailyViewsModelList = new List <DailyClonesModel>();

                for (int i = 0; i < 14; i++)
                {
                    var count      = DemoDataConstants.GetRandomNumber() / 2; //Ensures the average clone count is smaller than the average view count
                    var uniqeCount = count / 2;                               //Ensures uniqueCount is always less than count

                    dailyViewsModelList.Add(new DailyClonesModel(DateTimeOffset.UtcNow.Subtract(TimeSpan.FromDays(i)), count, uniqeCount));
                }

                return(new RepositoryClonesModel(dailyViewsModelList.Sum(x => x.TotalClones), dailyViewsModelList.Sum(x => x.TotalUniqueClones), dailyViewsModelList));
            }
            else
            {
                var token = await GitHubAuthenticationService.GetGitHubToken().ConfigureAwait(false);

                return(await AttemptAndRetry_Mobile(() => GithubApiClient.GetRepositoryCloneStatistics(owner, repo, GetGitHubBearerTokenHeader(token))).ConfigureAwait(false));
            }
        }
Пример #4
0
        public async Task <RepositoryViewsResponseModel> GetRepositoryViewStatistics(string owner, string repo, CancellationToken cancellationToken = default)
        {
            if (GitHubAuthenticationService.IsDemoUser)
            {
                //Yield off of the main thread to generate dailyViewsModelList
                await Task.Yield();

                var dailyViewsModelList = new List <DailyViewsModel>();

                for (int i = 1; i < 14; i++)
                {
                    var count      = DemoDataConstants.GetRandomNumber();
                    var uniqeCount = count / 2; //Ensures uniqueCount is always less than count

                    dailyViewsModelList.Add(new DailyViewsModel(DateTimeOffset.UtcNow.Subtract(TimeSpan.FromDays(i)), count, uniqeCount));
                }

                //Add one trending repo
                dailyViewsModelList.Add(new DailyViewsModel(DateTimeOffset.UtcNow, DemoDataConstants.MaximumRandomNumber * 4, DemoDataConstants.MaximumRandomNumber / 2));

                return(new RepositoryViewsResponseModel(repo, owner, dailyViewsModelList.Sum(x => x.TotalViews), dailyViewsModelList.Sum(x => x.TotalUniqueViews), dailyViewsModelList));
            }
            else
            {
                var token = await GitHubAuthenticationService.GetGitHubToken().ConfigureAwait(false);

                var response = await AttemptAndRetry_Mobile(() => GithubApiClient.GetRepositoryViewStatistics(owner, repo, GetGitHubBearerTokenHeader(token))).ConfigureAwait(false);

                return(new RepositoryViewsResponseModel(repo, owner, response.TotalCount, response.TotalUniqueCount, response.DailyViewsList));
            }
        }
Пример #5
0
        async Task <RepositoryConnection> GetRepositoryConnection(string repositoryOwner, string?endCursor, CancellationToken cancellationToken, int numberOfRepositoriesPerRequest = 100)
        {
            var token = await GitHubAuthenticationService.GetGitHubToken().ConfigureAwait(false);

            var data = await ExecuteGraphQLRequest(() => GitHubApiClient.RepositoryConnectionQuery(new RepositoryConnectionQueryContent(repositoryOwner, getEndCursorString(endCursor), numberOfRepositoriesPerRequest), GetGitHubBearerTokenHeader(token)), cancellationToken).ConfigureAwait(false);

            return(data.GitHubUser.RepositoryConnection);
        public async Task <Repository> GetRepository(string repositoryOwner, string repositoryName, int numberOfIssuesPerRequest = 100)
        {
            var token = await GitHubAuthenticationService.GetGitHubToken().ConfigureAwait(false);

            var data = await ExecuteGraphQLRequest(() => GitHubApiClient.RepositoryQuery(new RepositoryQueryContent(repositoryOwner, repositoryName, numberOfIssuesPerRequest), GetGitHubBearerTokenHeader(token))).ConfigureAwait(false);

            return(data.Repository);
        }
        public async Task <User> GetUser(string username)
        {
            var token = await GitHubAuthenticationService.GetGitHubToken().ConfigureAwait(false);

            var data = await ExecuteGraphQLRequest(() => GitHubApiClient.UserQuery(new UserQueryContent(username), GetGitHubBearerTokenHeader(token))).ConfigureAwait(false);

            return(data.User);
        }
        public async Task <(string login, string name, Uri avatarUri)> GetCurrentUserInfo()
        {
            var token = await GitHubAuthenticationService.GetGitHubToken().ConfigureAwait(false);

            var data = await ExecuteGraphQLRequest(() => GitHubApiClient.ViewerLoginQuery(new ViewerLoginQueryContent(), GetGitHubBearerTokenHeader(token))).ConfigureAwait(false);

            return(data.Viewer.Alias, data.Viewer.Name, data.Viewer.AvatarUri);
        }
Пример #9
0
        public async IAsyncEnumerable <MobileReferringSiteModel> GetReferingSites(string owner, string repo)
        {
            var token = await GitHubAuthenticationService.GetGitHubToken().ConfigureAwait(false);

            var referringSites = await AttemptAndRetry_Mobile(() => GithubApiClient.GetReferingSites(owner, repo, GetGitHubBearerTokenHeader(token))).ConfigureAwait(false);

            await foreach (var referringSite in getMobileReferringSiteModels(referringSites).ConfigureAwait(false))
            {
                yield return(referringSite);
            }
Пример #10
0
        public async Task <RepositoryClonesModel> GetRepositoryCloneStatistics(string owner, string repo)
        {
            var token = await GitHubAuthenticationService.GetGitHubToken().ConfigureAwait(false);

            return(await AttemptAndRetry_Mobile(() => GithubApiClient.GetRepositoryCloneStatistics(owner, repo, GetGitHubBearerTokenHeader(token))).ConfigureAwait(false));
        }
Пример #11
0
 public Task <GitHubToken> GetGitHubToken() => GitHubAuthenticationService.GetGitHubToken();