* Added SendRequestAsync
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful

* Changed method names
This commit is contained in:
2026-01-23 10:40:44 +01:00
parent 94f9ff0154
commit 2e2d8f5df4
3 changed files with 41 additions and 19 deletions

View File

@@ -6,15 +6,7 @@ public class GiteaConfiguration
public string Owner { get; set; } = string.Empty; public string Owner { get; set; } = string.Empty;
public string Repository { get; set; } = string.Empty; public string Repository { get; set; } = string.Empty;
public string Branch { get; set; } = string.Empty; public string Branch { get; set; } = string.Empty;
public string RequestUrl { get; set; } public string ApiToken { get; set; } = string.Empty;
public GiteaConfiguration() public string RequestUrl => $"{Host}/api/v1/repos/{Owner}/{Repository}";
{
RequestUrl = GetRequestUrl();
}
private string GetRequestUrl()
{
return $"{Host}/api/v1/repos/{Owner}/{Repository}/contents";
}
} }

View File

@@ -1,12 +1,15 @@
using Gitea.Net.Api; using Gitea.Net.Api;
using Gitea.Net.Client; using Gitea.Net.Client;
using Gitea.Net.Model; using Gitea.Net.Model;
using HttpMethod = System.Net.Http.HttpMethod;
namespace Services.Gitea; namespace Services.Gitea;
public class GiteaService : IGiteaService public class GiteaService : IGiteaService
{ {
public RepositoryApi CreateGiteaClient(string basePath, string giteaApiToken) private static readonly HttpClient HttpClient = new();
public RepositoryApi CreateGiteaClientAsync(string basePath, string giteaApiToken)
{ {
var config = new Configuration var config = new Configuration
{ {
@@ -20,7 +23,7 @@ public class GiteaService : IGiteaService
return new RepositoryApi(config); return new RepositoryApi(config);
} }
public async Task<List<Commit>> GetLastCommits(RepositoryApi repositoryApi, GiteaConfiguration configuration, public async Task<List<Commit>> GetLastCommitsAsync(RepositoryApi repositoryApi, GiteaConfiguration configuration,
int limit) int limit)
{ {
var lastCommits = await repositoryApi.RepoGetAllCommitsAsync(configuration.Owner, configuration.Repository, var lastCommits = await repositoryApi.RepoGetAllCommitsAsync(configuration.Owner, configuration.Repository,
@@ -28,17 +31,41 @@ public class GiteaService : IGiteaService
return lastCommits; return lastCommits;
} }
public async Task<Commit?> GetLastCommit(RepositoryApi repositoryApi, GiteaConfiguration configuration) public async Task<Commit?> GetLastCommitAsync(RepositoryApi repositoryApi, GiteaConfiguration configuration)
{ {
var lastCommit = await GetLastCommits(repositoryApi, configuration, 1); var lastCommit = await GetLastCommitsAsync(repositoryApi, configuration, 1);
return lastCommit.FirstOrDefault(); return lastCommit.FirstOrDefault();
} }
public async Task<ContentsResponse> GetFileContent(RepositoryApi repositoryApi, GiteaConfiguration configuration, public async Task<ContentsResponse> GetFileContentAsync(RepositoryApi repositoryApi,
GiteaConfiguration configuration,
string filename) string filename)
{ {
var repoGetContentsAsync = var repoGetContentsAsync =
await repositoryApi.RepoGetContentsAsync(configuration.Owner, configuration.Repository, filename); await repositoryApi.RepoGetContentsAsync(configuration.Owner, configuration.Repository, filename);
return repoGetContentsAsync; return repoGetContentsAsync;
} }
public async Task<(bool Status, string Response)> SendRequestAsync(GiteaConfiguration configuration,
string endpoint, HttpContent content)
{
var requestUrl = $"{configuration.RequestUrl}/{endpoint}";
var request = new HttpRequestMessage(HttpMethod.Post, requestUrl)
{
Content = content,
Headers = { {"Content-Type", "application/json"}, { "Authorization", $"token {configuration.ApiToken}" } }
};
try
{
var giteaResponse = await HttpClient.SendAsync(request);
var response = await giteaResponse.Content.ReadAsStringAsync();
return (giteaResponse.IsSuccessStatusCode, response);
}
catch (Exception ex)
{
throw new Exception($"Error while sending request to Gitea: {ex.Message}", ex);
}
}
} }

View File

@@ -5,11 +5,14 @@ namespace Services.Gitea;
public interface IGiteaService public interface IGiteaService
{ {
RepositoryApi CreateGiteaClient(string basePath, string giteaApiToken); RepositoryApi CreateGiteaClientAsync(string basePath, string giteaApiToken);
Task<List<Commit>> GetLastCommits(RepositoryApi repositoryApi, GiteaConfiguration configuration, int limit); Task<List<Commit>> GetLastCommitsAsync(RepositoryApi repositoryApi, GiteaConfiguration configuration, int limit);
Task<ContentsResponse> GetFileContent(RepositoryApi repositoryApi, GiteaConfiguration configuration, Task<ContentsResponse> GetFileContentAsync(RepositoryApi repositoryApi, GiteaConfiguration configuration,
string filename); string filename);
Task<Commit?> GetLastCommit(RepositoryApi repositoryApi, GiteaConfiguration configuration); Task<Commit?> GetLastCommitAsync(RepositoryApi repositoryApi, GiteaConfiguration configuration);
Task<(bool Status, string Response)> SendRequestAsync(GiteaConfiguration configuration, string endpoint,
HttpContent content);
} }