using RestSharp;
namespace LazyBear.MCP.Services.GitLab;
///
/// Обертка над RestSharp RestClient для GitLab API
///
public sealed class GitLabApiClient : IDisposable
{
public RestClient RestClient { get; }
///
/// Конструктор
///
/// URL GitLab
public GitLabApiClient(string url)
{
_restClient = new RestClient(url);
}
private readonly RestClient _restClient;
///
/// Создание запроса GET
///
public RestRequest GetRequest(string resource)
{
var request = new RestRequest(resource, Method.Get);
return request;
}
///
/// Создание запроса POST
///
public RestRequest PostRequest(string resource)
{
var request = new RestRequest(resource, Method.Post);
return request;
}
///
/// Создание запроса PUT
///
public RestRequest PutRequest(string resource)
{
var request = new RestRequest(resource, Method.Put);
return request;
}
///
/// Создание запроса DELETE
///
public RestRequest DeleteRequest(string resource)
{
var request = new RestRequest(resource, Method.Delete);
return request;
}
///
/// Выполнение запроса
///
public async System.Threading.Tasks.Task ExecuteAsync(RestRequest request, System.Threading.CancellationToken? cancellationToken = null)
{
if (cancellationToken.HasValue)
{
return await _restClient.ExecuteAsync(request, cancellationToken.Value);
}
return await _restClient.ExecuteAsync(request);
}
public void Dispose()
{
_restClient.Dispose();
}
}