mirror of
https://github.com/actions/runner.git
synced 2025-12-10 12:36:23 +00:00
65 lines
2.2 KiB
C#
65 lines
2.2 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Net.Http.Headers;
|
|
|
|
namespace GitHub.Runner.Sdk
|
|
{
|
|
public static class UrlUtil
|
|
{
|
|
public static bool IsHostedServer(UriBuilder gitHubUrl)
|
|
{
|
|
if (StringUtil.ConvertToBoolean(Environment.GetEnvironmentVariable("GITHUB_ACTIONS_RUNNER_FORCE_GHES")))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return
|
|
string.Equals(gitHubUrl.Host, "github.com", StringComparison.OrdinalIgnoreCase) ||
|
|
string.Equals(gitHubUrl.Host, "www.github.com", StringComparison.OrdinalIgnoreCase) ||
|
|
string.Equals(gitHubUrl.Host, "github.localhost", StringComparison.OrdinalIgnoreCase) ||
|
|
gitHubUrl.Host.EndsWith(".ghe.localhost", StringComparison.OrdinalIgnoreCase) ||
|
|
gitHubUrl.Host.EndsWith(".ghe.com", StringComparison.OrdinalIgnoreCase);
|
|
}
|
|
|
|
public static Uri GetCredentialEmbeddedUrl(Uri baseUrl, string username, string password)
|
|
{
|
|
ArgUtil.NotNull(baseUrl, nameof(baseUrl));
|
|
|
|
// return baseurl when there is no username and password
|
|
if (string.IsNullOrEmpty(username) && string.IsNullOrEmpty(password))
|
|
{
|
|
return baseUrl;
|
|
}
|
|
|
|
UriBuilder credUri = new(baseUrl);
|
|
|
|
// ensure we have a username, uribuild will throw if username is empty but password is not.
|
|
if (string.IsNullOrEmpty(username))
|
|
{
|
|
username = "emptyusername";
|
|
}
|
|
|
|
// escape chars in username for uri
|
|
credUri.UserName = Uri.EscapeDataString(username);
|
|
|
|
// escape chars in password for uri
|
|
if (!string.IsNullOrEmpty(password))
|
|
{
|
|
credUri.Password = Uri.EscapeDataString(password);
|
|
}
|
|
|
|
return credUri.Uri;
|
|
}
|
|
|
|
public static string GetGitHubRequestId(HttpResponseHeaders headers)
|
|
{
|
|
if (headers != null &&
|
|
headers.TryGetValues("x-github-request-id", out var headerValues))
|
|
{
|
|
return headerValues.FirstOrDefault();
|
|
}
|
|
return string.Empty;
|
|
}
|
|
}
|
|
}
|