public void TryParseHostedSshV3_Success(string url, string account, string repositoryPath, string repositoryName) { Assert.True(TeamFoundationUrlParser.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); }
// 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 = TeamFoundationUrlParser.IsVisualStudioHostedServer(host); var prefix = isVisualStudioHost ? "vs-ssh." : "ssh."; if (!host.StartsWith(prefix)) { return(null); } if (!TeamFoundationUrlParser.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)); }
protected override Uri GetDefaultContentUriFromHostUri(string authority, Uri gitUri) { var gitHost = gitUri.GetHost(); return(TeamFoundationUrlParser.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 (!TeamFoundationUrlParser.TryParseOnPremSsh(uri, out var repositoryPath, out var repositoryName)) { return(null); } return (UriUtilities.Combine( UriUtilities.Combine("https://" + uri.Host, repositoryPath), "_git/" + repositoryName)); }
protected override string BuildSourceLinkUrl(Uri contentUri, Uri gitUri, string relativeUrl, string revisionId, ITaskItem hostItem) { if (!TeamFoundationUrlParser.TryParseHostedHttp(gitUri.Host, 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=/*"); }
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 (!TeamFoundationUrlParser.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=/*"); }
public void TryParseOnPremSsh_Success(string url, string repositoryPath, string repositoryName) { Assert.True(TeamFoundationUrlParser.TryParseOnPremSsh(new Uri(url, UriKind.Absolute), out var actualRepositoryPath, out var actualRepositoryName)); Assert.Equal(repositoryPath, actualRepositoryPath); Assert.Equal(repositoryName, actualRepositoryName); }
public void TryParseOnPremSsh_Error(string url) { Assert.False(TeamFoundationUrlParser.TryParseOnPremSsh(new Uri(url, UriKind.Absolute), out var _, out var _)); }
public void TryParseOnPremHttp_Success(string relativeUrl, string repositoryPath, string repositoryName) { Assert.True(TeamFoundationUrlParser.TryParseOnPremHttp(relativeUrl, out var actualRepositoryPath, out var actualRepositoryName)); Assert.Equal(repositoryPath, actualRepositoryPath); Assert.Equal(repositoryName, actualRepositoryName); }
public void TryParseOnPremHttp_Error(string relativeUrl) { Assert.False(TeamFoundationUrlParser.TryParseOnPremHttp(relativeUrl, out var _, out var _)); }
public void TryParseHostedHttp_Error(string host, string relativeUrl) { Assert.False(TeamFoundationUrlParser.TryParseHostedHttp(host, relativeUrl, out _, out _)); }