3using System.Threading.Tasks;
5using Microsoft.Extensions.Logging;
39 : base(logger, remoteUrl)
48 CancellationToken cancellationToken)
50 var gitHubService = repositorySettings.AccessToken !=
null
57 PullRequest? pr =
null;
58 ApiException? exception =
null;
59 string? errorMessage =
null;
60 if (gitHubService ==
null)
61 errorMessage =
"GITHUB API ERROR: AUTH FAILURE";
67 catch (RateLimitExceededException ex)
70 errorMessage =
"GITHUB API ERROR: RATE LIMITED";
73 catch (AuthorizationException ex)
75 errorMessage =
"GITHUB API ERROR: BAD CREDENTIALS";
78 catch (NotFoundException ex)
81 errorMessage =
"GITHUB API ERROR: PULL REQUEST NOT FOUND";
85 if (exception !=
null)
86 Logger.LogWarning(exception,
"Error retrieving pull request metadata!");
88 var revisionToUse = parameters.TargetCommitSha ==
null
89 || pr?.Head.Sha.StartsWith(parameters.
TargetCommitSha, StringComparison.OrdinalIgnoreCase) ==
true
95 Author = pr?.User.Login ?? errorMessage,
96 BodyAtMerge = pr?.Body ?? errorMessage ?? String.Empty,
97 TitleAtMerge = pr?.Title ?? errorMessage ?? String.Empty,
99 Number = parameters.
Number,
100 TargetCommitSha = revisionToUse,
101 Url = pr?.HtmlUrl ?? $
"https://github.com/{RemoteRepositoryOwner}/{RemoteRepositoryName}/pull/{parameters.Number}",
Represents configurable settings for a git repository.
string? AccessToken
The token/password to access the git repository with. Can also be a TGS encoded app private key....
Parameters for creating a TestMerge.
virtual ? string TargetCommitSha
The sha of the test merge revision to merge. If not specified, the latest commit from the source will...
string? Comment
Optional comment about the test.
int Number
The number of the test merge source.
GitHub IGitRemoteFeatures.
override string TestMergeLocalBranchNameFormatter
Get.
GitHubRemoteFeatures(IGitHubServiceFactory gitHubServiceFactory, ILogger< GitHubRemoteFeatures > logger, Uri remoteUrl)
Initializes a new instance of the GitHubRemoteFeatures class.
override string TestMergeRefSpecFormatter
Gets a formatter string which creates the remote refspec for fetching the HEAD of passed in test merg...
override async ValueTask< Models.TestMerge > GetTestMergeImpl(TestMergeParameters parameters, RepositorySettings repositorySettings, CancellationToken cancellationToken)
readonly IGitHubServiceFactory gitHubServiceFactory
The IGitHubServiceFactory for the GitHubRemoteFeatures.
Base class for implementing IGitRemoteFeatures.
string RemoteRepositoryOwner
If RemoteGitProvider is not RemoteGitProvider.Unknown this will be set with the owner of the reposito...
ILogger< GitRemoteFeaturesBase > Logger
The ILogger for the GitRemoteFeaturesBase.
string RemoteRepositoryName
If RemoteGitProvider is not RemoteGitProvider.Unknown this will be set with the name of the repositor...
Identifies a repository either by its RepositoryId or Owner and Name.
Factory for IGitHubServices.
ValueTask< IGitHubService > CreateService(CancellationToken cancellationToken)
Create a IGitHubService.
RemoteGitProvider
Indicates the remote git host.