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); } }
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); }
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)); } }
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)); } }
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); }
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); }
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)); }
public Task <GitHubToken> GetGitHubToken() => GitHubAuthenticationService.GetGitHubToken();