public GitLabApi(string serverUrl, IGitAccessTokenSource accessTokenSource, string proxyUrl, IMemoryCache cache) { _cache = cache; _client = new RestClient(serverUrl.TrimEnd('/') + "/api/v4"); if (accessTokenSource.Type == TokenType.OAuth) { _client.AddDefaultHeader("Authorization", $"Bearer {accessTokenSource.AccessToken}"); } else if (accessTokenSource.Type == TokenType.Custom) { _client.AddDefaultHeader("Private-Token", accessTokenSource.AccessToken); } if (!string.IsNullOrWhiteSpace(proxyUrl)) { _client.ConfigureWebRequest(wr => { wr.Proxy = new WebProxy(proxyUrl) { BypassProxyOnLocal = false }; }); } var serializer = new JsonSerializer(); serializer.ContractResolver = new GitLabContractResolver(); _client.ClearHandlers(); _client.AddHandler("application/json", new NewtonsoftDeserializer(serializer)); }
public static GitLabApi CreateGitLabApi(string serverUrl, IGitAccessTokenSource accessTokenSource, string proxyUrl, IMemoryCache cache, bool readOnly) { if (readOnly) { return(new ReadOnlyGitLabApi(serverUrl, accessTokenSource, proxyUrl, cache)); } else { return(new GitLabApi(serverUrl, accessTokenSource, proxyUrl, cache)); } }
public ReadOnlyGitLabApi(string serverUrl, IGitAccessTokenSource accessTokenSource, string proxyUrl, IMemoryCache cache) : base(serverUrl, accessTokenSource, proxyUrl, cache) { }