using Microsoft.Extensions.Configuration;
using RestSharp;
namespace LazyBear.MCP.Services.GitLab;
///
/// Фабрика клиента RestSharp для GitLab API
///
public static class GitLabClientFactory
{
private static readonly TimeSpan[] BackoffDurations =
{
TimeSpan.FromMilliseconds(1000),
TimeSpan.FromMilliseconds(2000),
TimeSpan.FromMilliseconds(4000)
};
///
/// Создание клиента RestSharp для GitLab API
///
/// Конфигурация из DI
/// Client или null при ошибке инициализации
public static RestClient? CreateClient(IConfiguration configuration)
{
var gitlabUrl = configuration["GitLab:Url"] ?? string.Empty;
if (string.IsNullOrWhiteSpace(gitlabUrl))
{
return null;
}
var config = new RestClientOptions(gitlabUrl)
{
UserAgent = "LazyBear-GitLab-MCP",
Timeout = TimeSpan.FromMilliseconds(30000)
};
return new RestClient(config);
}
}