public static async Task <RepositoryNameAndRemoteUrlMapping> GetRepositoryNameAndRemoteUrlMapping( this IRepositoryNameFromRemoteUrlConvention repositoryNameFromRemoteUrlConvention, RemoteRepositoryUrl remoteRepositoryUrl) { var repositoryName = await repositoryNameFromRemoteUrlConvention.GetRepositoryNameFromRemoteUrl(remoteRepositoryUrl); var mapping = new RepositoryNameAndRemoteUrlMapping(repositoryName, remoteRepositoryUrl); return(mapping); }
protected override Task <RepositoryNameAndRemoteUrlMapping> DeserializeTokens(string[] tokens) { var repositoryNameToken = tokens[0]; var remoteRepositoryUrlToken = tokens[1]; var repositoryName = RepositoryName.From(repositoryNameToken); var remoteRepositoryUrl = RemoteRepositoryUrl.From(remoteRepositoryUrlToken); var mapping = new RepositoryNameAndRemoteUrlMapping(repositoryName, remoteRepositoryUrl); return(Task.FromResult(mapping)); }
public Task <RepositoryName> GetRepositoryNameFromRemoteUrl(RemoteRepositoryUrl remoteRepositoryUrl) { // Example: https://api.github.com/repos/SafetyCone/R5T.Aalborg var url = new Uri(remoteRepositoryUrl.Value); var hostTokens = url.Host.Split('.'); var hostToken = hostTokens[1]; var isGitHub = hostToken == "github"; var remoteRepositoryProviderNameToken = isGitHub ? "GitHub" : throw new Exception($"Unrecognized host token: '{hostToken}'"); var segments = url.Segments; var organizationNameToken = segments.SecondToLast().ExceptLast(); var repositoryNameToken = segments.Last(); var repositoryNameValue = $"{remoteRepositoryProviderNameToken}/{organizationNameToken}/{repositoryNameToken}"; var repositoryName = RepositoryName.From(repositoryNameValue); return(Task.FromResult(repositoryName)); }