Exemplo n.º 1
0
 public void TryParseHostedSshV3_Success(string url, string account, string repositoryPath, string repositoryName)
 {
     Assert.True(AzureDevOpsUrlParser.TryParseHostedSsh(new Uri(url, UriKind.Absolute), out var actualAccount, out var actualRepositoryPath, out var actualRepositoryName));
     Assert.Equal(account, actualAccount);
     Assert.Equal(repositoryPath, actualRepositoryPath);
     Assert.Equal(repositoryName, actualRepositoryName);
 }
Exemplo n.º 2
0
        // Translates
        //   ssh://{account}@{ssh-subdomain}.{domain}:{port}/{repositoryPath}/_ssh/{"_full"|"_optimized"}/{repositoryName}
        // to
        //   https://{http-domain}/{account}/{repositoryPath}/_git/{repositoryName}
        //
        // Dommain mapping:
        //   ssh://vs-ssh.*.com -> https://{account}.*.com
        //   ssh://ssh.*.com -> https://*.com/{account}
        protected override string TranslateSshUrl(Uri uri)
        {
            var host = uri.GetHost();
            var isVisualStudioHost = AzureDevOpsUrlParser.IsVisualStudioHostedServer(host);
            var prefix             = isVisualStudioHost ? "vs-ssh." : "ssh.";

            if (!host.StartsWith(prefix))
            {
                return(null);
            }

            if (!AzureDevOpsUrlParser.TryParseHostedSsh(uri, out var account, out var repositoryPath, out var repositoryName))
            {
                return(null);
            }

            var result = host.Substring(prefix.Length);

            if (isVisualStudioHost)
            {
                result = account + "." + result;
            }
            else
            {
                result = result + "/" + account;
            }

            return
                (UriUtilities.Combine(
                     UriUtilities.Combine("https://" + result, repositoryPath), "_git/" + repositoryName));
        }
Exemplo n.º 3
0
        protected override Uri GetDefaultContentUriFromHostUri(string authority, Uri gitUri)
        {
            var gitHost = gitUri.GetHost();

            return(AzureDevOpsUrlParser.IsVisualStudioHostedServer(gitHost) ?
                   new Uri($"{gitUri.Scheme}://{gitHost.Substring(0, gitHost.IndexOf('.'))}.{authority}", UriKind.Absolute) :
                   new Uri($"{gitUri.Scheme}://{authority}", UriKind.Absolute));
        }
        // Translates
        //   ssh://{account}@{domain}:{port}/{repositoryPath}/_ssh/{"_full"|"_optimized"}/{repositoryName}
        // to
        //   https://{domain}/{repositoryPath}/_git/{repositoryName}
        protected override string?TranslateSshUrl(Uri uri)
        {
            if (!AzureDevOpsUrlParser.TryParseOnPremSsh(uri, out var repositoryPath, out var repositoryName))
            {
                return(null);
            }

            return
                (UriUtilities.Combine(
                     UriUtilities.Combine("https://" + uri.Host, repositoryPath), "_git/" + repositoryName));
        }
Exemplo n.º 5
0
        protected override string BuildSourceLinkUrl(Uri contentUri, Uri gitUri, string relativeUrl, string revisionId, ITaskItem hostItem)
        {
            if (!AzureDevOpsUrlParser.TryParseHostedHttp(gitUri.GetHost(), relativeUrl, out var projectPath, out var repositoryName))
            {
                Log.LogError(CommonResources.ValueOfWithIdentityIsInvalid, Names.SourceRoot.RepositoryUrlFullName, SourceRoot.ItemSpec, gitUri);
                return(null);
            }

            return
                (UriUtilities.Combine(
                     UriUtilities.Combine(contentUri.ToString(), projectPath), $"_apis/git/repositories/{repositoryName}/items") +
                 $"?api-version=1.0&versionType=commit&version={revisionId}&path=/*");
        }
Exemplo n.º 6
0
        protected override string BuildSourceLinkUrl(Uri contentUri, Uri gitUri, string relativeUrl, string revisionId, ITaskItem hostItem)
        {
            var virtualDirectory = hostItem.GetMetadata(VirtualDirectoryMetadataName);

            if (string.IsNullOrEmpty(virtualDirectory))
            {
                Log.LogError(CommonResources.ItemOfItemGroupMustSpecifyMetadata, hostItem.ItemSpec, HostsItemGroupName, VirtualDirectoryMetadataName);
                return(null);
            }

            if (!AzureDevOpsUrlParser.TryParseOnPremHttp(relativeUrl, virtualDirectory, out var projectPath, out var repositoryName))
            {
                Log.LogError(CommonResources.ValueOfWithIdentityIsInvalid, Names.SourceRoot.RepositoryUrlFullName, SourceRoot.ItemSpec, gitUri);
                return(null);
            }

            return
                (UriUtilities.Combine(
                     UriUtilities.Combine(contentUri.ToString(), projectPath), $"_apis/git/repositories/{repositoryName}/items") +
                 $"?api-version=1.0&versionType=commit&version={revisionId}&path=/*");
        }
Exemplo n.º 7
0
 public void TryParseHostedSsh_Error(string url)
 {
     Assert.False(AzureDevOpsUrlParser.TryParseOnPremSsh(new Uri(url, UriKind.Absolute), out var _, out var _));
 }
Exemplo n.º 8
0
 public void TryParseHostedHttp_Success(string host, string relativeUrl, string repositoryPath, string repositoryName)
 {
     Assert.True(AzureDevOpsUrlParser.TryParseHostedHttp(host, relativeUrl, out var actualRepositoryPath, out var actualRepositoryName));
     Assert.Equal(repositoryPath, actualRepositoryPath);
     Assert.Equal(repositoryName, actualRepositoryName);
 }
Exemplo n.º 9
0
 public void TryParseHostedHttp_Error(string host, string relativeUrl)
 {
     Assert.False(AzureDevOpsUrlParser.TryParseHostedHttp(host, relativeUrl, out _, out _));
 }
Exemplo n.º 10
0
 public void TryParseOnPremSsh_Success(string url, string repositoryPath, string repositoryName)
 {
     Assert.True(AzureDevOpsUrlParser.TryParseOnPremSsh(new Uri(url, UriKind.Absolute), out var actualRepositoryPath, out var actualRepositoryName));
     Assert.Equal(repositoryPath, actualRepositoryPath);
     Assert.Equal(repositoryName, actualRepositoryName);
 }
Exemplo n.º 11
0
 public void TryParseOnPremHttp_Success(string relativeUrl, string virtualDirectory, string projectPath, string repositoryName)
 {
     Assert.True(AzureDevOpsUrlParser.TryParseOnPremHttp(relativeUrl, virtualDirectory, out var actualProjectPath, out var actualRepositoryName));
     Assert.Equal(projectPath, actualProjectPath);
     Assert.Equal(repositoryName, actualRepositoryName);
 }
Exemplo n.º 12
0
 public void TryParseOnPremHttp_Error(string relativeUrl, string virtualDir = "/")
 {
     Assert.False(AzureDevOpsUrlParser.TryParseOnPremHttp(relativeUrl, virtualDir, out _, out _));
 }