Skip to content

Commit 8d66ee8

Browse files
committed
make an interface for the api so that clients/servers can implement it
1 parent 6c039a8 commit 8d66ee8

File tree

2 files changed

+59
-17
lines changed

2 files changed

+59
-17
lines changed

DotNut/Api/CashuHttpClient.cs

+32-17
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
namespace DotNut.Api;
88

9-
public class CashuHttpClient
9+
public class CashuHttpClient : ICashuApi
1010
{
1111
private readonly HttpClient _httpClient;
1212

@@ -35,52 +35,67 @@ public async Task<GetKeysetsResponse> GetKeys(KeysetId keysetId, CancellationTok
3535
var response = await _httpClient.GetAsync($"v1/keys/{keysetId}", cancellationToken);
3636
return await HandleResponse<GetKeysetsResponse>(response, cancellationToken);
3737
}
38+
3839
public async Task<PostSwapResponse> Swap(PostSwapRequest request, CancellationToken cancellationToken = default)
3940

4041
{
41-
var response = await _httpClient.PostAsync($"v1/swap", new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"), cancellationToken);
42+
var response = await _httpClient.PostAsync($"v1/swap",
43+
new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"), cancellationToken);
4244
return await HandleResponse<PostSwapResponse>(response, cancellationToken);
4345
}
44-
46+
4547
public async Task<TResponse> CreateMintQuote<TResponse, TRequest>(string method, TRequest request, CancellationToken
4648
cancellationToken = default)
4749
{
48-
var response = await _httpClient.PostAsync($"v1/mint/quote/{method}", new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"), cancellationToken);
50+
var response = await _httpClient.PostAsync($"v1/mint/quote/{method}",
51+
new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"), cancellationToken);
4952
return await HandleResponse<TResponse>(response, cancellationToken);
5053
}
51-
public async Task<TResponse> CreateMeltQuote<TResponse, TRequest>(string method, TRequest request, CancellationToken
54+
55+
public async Task<TResponse> CreateMeltQuote<TResponse, TRequest>(string method, TRequest request, CancellationToken
5256
cancellationToken = default)
5357
{
54-
var response = await _httpClient.PostAsync($"v1/melt/quote/{method}", new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"), cancellationToken);
58+
var response = await _httpClient.PostAsync($"v1/melt/quote/{method}",
59+
new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"), cancellationToken);
5560
return await HandleResponse<TResponse>(response, cancellationToken);
5661
}
57-
public async Task<TResponse> Melt<TResponse, TRequest>(string method, TRequest request, CancellationToken
62+
63+
public async Task<TResponse> Melt<TResponse, TRequest>(string method, TRequest request, CancellationToken
5864
cancellationToken = default)
5965
{
60-
var response = await _httpClient.PostAsync($"v1/melt/{method}", new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"), cancellationToken);
66+
var response = await _httpClient.PostAsync($"v1/melt/{method}",
67+
new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"), cancellationToken);
6168
return await HandleResponse<TResponse>(response, cancellationToken);
6269
}
63-
70+
6471
public async Task<TResponse> CheckMintQuote<TResponse>(string method, string quoteId, CancellationToken
6572
cancellationToken = default)
6673
{
6774
var response = await _httpClient.GetAsync($"v1/mint/quote/{method}/{quoteId}", cancellationToken);
6875
return await HandleResponse<TResponse>(response, cancellationToken);
69-
}
70-
71-
public async Task<TResponse> Mint<TRequest,TResponse>(string method, TRequest request, CancellationToken cancellationToken = default)
76+
}
77+
78+
public async Task<TResponse> Mint<TRequest, TResponse>(string method, TRequest request,
79+
CancellationToken cancellationToken = default)
7280
{
73-
var response = await _httpClient.PostAsync($"v1/mint/{method}", new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"), cancellationToken);
81+
var response = await _httpClient.PostAsync($"v1/mint/{method}",
82+
new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"), cancellationToken);
7483
return await HandleResponse<TResponse>(response, cancellationToken);
7584
}
76-
public async Task<PostCheckStateResponse> CheckState(PostCheckStateRequest request, CancellationToken cancellationToken = default)
85+
86+
public async Task<PostCheckStateResponse> CheckState(PostCheckStateRequest request,
87+
CancellationToken cancellationToken = default)
7788
{
78-
var response = await _httpClient.PostAsync($"v1/checkstate", new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"), cancellationToken);
89+
var response = await _httpClient.PostAsync($"v1/checkstate",
90+
new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"), cancellationToken);
7991
return await HandleResponse<PostCheckStateResponse>(response, cancellationToken);
8092
}
81-
public async Task<PostRestoreResponse> Restore(PostRestoreRequest request, CancellationToken cancellationToken = default)
93+
94+
public async Task<PostRestoreResponse> Restore(PostRestoreRequest request,
95+
CancellationToken cancellationToken = default)
8296
{
83-
var response = await _httpClient.PostAsync($"v1/restore", new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"), cancellationToken);
97+
var response = await _httpClient.PostAsync($"v1/restore",
98+
new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, "application/json"), cancellationToken);
8499
return await HandleResponse<PostRestoreResponse>(response, cancellationToken);
85100
}
86101

DotNut/Api/ICashuApi.cs

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using DotNut.ApiModels;
2+
3+
namespace DotNut.Api;
4+
5+
public interface ICashuApi
6+
{
7+
Task<GetKeysResponse> GetKeys(CancellationToken cancellationToken = default);
8+
Task<GetKeysetsResponse> GetKeys(KeysetId keysetId, CancellationToken cancellationToken = default);
9+
Task<GetKeysetsResponse> GetKeysets(CancellationToken cancellationToken = default);
10+
Task<PostSwapResponse> Swap(PostSwapRequest request, CancellationToken cancellationToken = default);
11+
12+
Task<TResponse> CreateMintQuote<TResponse, TRequest>(string method, TRequest request, CancellationToken
13+
cancellationToken = default);
14+
15+
Task<TResponse> CreateMeltQuote<TResponse, TRequest>(string method, TRequest request, CancellationToken
16+
cancellationToken = default);
17+
18+
Task<TResponse> Melt<TResponse, TRequest>(string method, TRequest request, CancellationToken
19+
cancellationToken = default);
20+
21+
Task<TResponse> CheckMintQuote<TResponse>(string method, string quoteId, CancellationToken
22+
cancellationToken = default);
23+
24+
Task<TResponse> Mint<TRequest,TResponse>(string method, TRequest request, CancellationToken cancellationToken = default);
25+
Task<PostCheckStateResponse> CheckState(PostCheckStateRequest request, CancellationToken cancellationToken = default);
26+
Task<PostRestoreResponse> Restore(PostRestoreRequest request, CancellationToken cancellationToken = default);
27+
}

0 commit comments

Comments
 (0)