// 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)); }
protected override string?BuildSourceLinkUrl(Uri contentUri, Uri gitUri, string relativeUrl, string revisionId, ITaskItem?hostItem) { var path = GetVersion(hostItem) >= s_versionWithNewUrlFormat ? "-/raw/" + revisionId + "/*" : "raw/" + revisionId + "/*"; return(UriUtilities.Combine(UriUtilities.Combine(contentUri.ToString(), relativeUrl), path)); }
// 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)); }
private static string BuildSourceLinkUrlForCloudEdition(Uri contentUri, string relativeUrl, string revisionId) { // change bitbucket.org to api.bitbucket.org UriBuilder apiUriBuilder = new UriBuilder(contentUri); apiUriBuilder.Host = $"api.{apiUriBuilder.Host}"; string relativeApiUrl = UriUtilities.Combine(UriUtilities.Combine("2.0/repositories", relativeUrl), $"src/{revisionId}/*"); return(UriUtilities.Combine(apiUriBuilder.Uri.ToString(), relativeApiUrl)); }
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 trimLeadingSlash = relativeUrl.TrimStart('/'); var trimmedContentUrl = contentUri.ToString().TrimEnd('/', '\\'); // p = project/path // a = action // hb = SHA/revision // f = repo file path var gitwebRawUrl = UriUtilities.Combine(trimmedContentUrl, $"?p={trimLeadingSlash}.git;a=blob_plain;hb={revisionId};f=*"); return(gitwebRawUrl); }
internal static string BuildSourceLinkUrlForEnterpriseEdition( Uri contentUri, string relativeBaseUrl, string projectName, string repositoryName, string commitSha, Version version) { var relativeUrl = (version >= s_versionWithNewUrlFormat) ? $"projects/{projectName}/repos/{repositoryName}/raw/*?at={commitSha}" : $"projects/{projectName}/repos/{repositoryName}/browse/*?at={commitSha}&raw"; return(UriUtilities.Combine(contentUri.ToString(), UriUtilities.Combine(relativeBaseUrl, relativeUrl))); }
protected override string?BuildSourceLinkUrl(Uri contentUri, Uri gitUri, string relativeUrl, string revisionId, ITaskItem?hostItem) { var virtualDirectory = hostItem?.GetMetadata(VirtualDirectoryMetadataName) ?? ""; 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=/*"); }
private string BuildSourceLinkUrlForEnterpriseEdition(Uri contentUri, string relativeUrl, string revisionId, ITaskItem hostItem) { var bitbucketEnterpriseVersion = GetBitbucketEnterpriseVersion(hostItem); var splits = relativeUrl.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); var isSshRepoUri = !(splits.Length == 3 && splits[0] == "scm"); var projectName = isSshRepoUri ? splits[0] : splits[1]; var repositoryName = isSshRepoUri ? splits[1] : splits[2]; var relativeUrlForBitbucketEnterprise = GetRelativeUrlForBitbucketEnterprise(projectName, repositoryName, revisionId, bitbucketEnterpriseVersion); var result = UriUtilities.Combine(contentUri.ToString(), relativeUrlForBitbucketEnterprise); return(result); }
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=/*"); }
protected override Uri GetDefaultContentUriFromRepositoryUri(Uri repositoryUri) => new Uri(UriUtilities.Combine(repositoryUri.ToString(), "repo-default"), UriKind.Absolute);
protected override string?BuildSourceLinkUrl(Uri contentUri, Uri gitUri, string relativeUrl, string revisionId, ITaskItem?hostItem) => UriUtilities.Combine(UriUtilities.Combine(contentUri.ToString(), relativeUrl), revisionId + "/*");
private static string BuildSourceLinkUrlForCloudEdition(Uri contentUri, string relativeUrl, string revisionId) { return(UriUtilities.Combine(UriUtilities.Combine(contentUri.ToString(), relativeUrl), "raw/" + revisionId + "/*")); }