Пример #1
0
        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);
        }
Пример #2
0
        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));
        }