Skip to content

Commit 2d42325

Browse files
committed
chore: change to CSharp language version 9
change to CSharp language version 9 Signed-off-by: STRRL <im@strrl.dev>
1 parent 1bfa90f commit 2d42325

18 files changed

+478
-438
lines changed

reddio-csharp/crypto-csharp.sln.DotSettings.user

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
2-
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=4123da31_002D1ab1_002D4c5c_002Dbf63_002D710bd276e207/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" IsActive="True" Name="ReddioClientTests" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;
2+
<s:String x:Key="/Default/Environment/Highlighting/HighlightingSourceSnapshotLocation/@EntryValue">/home/strrl/.cache/JetBrains/Rider2022.2/resharper-host/temp/Rider/vAny/CoverageData/_crypto-csharp.-1419227475/Snapshot/snapshot.utdcvr</s:String>
3+
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=4123da31_002D1ab1_002D4c5c_002Dbf63_002D710bd276e207/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" Name="ReddioClientTests" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;
34
&lt;TestAncestor&gt;
45
&lt;TestId&gt;xUnit::94DEE188-2D3D-4107-872F-713AB912A6DD::net6.0::Reddio.Tests.Api.V1.ReddioClientTests&lt;/TestId&gt;
56
&lt;/TestAncestor&gt;
Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,34 @@
1+
using System;
2+
using System.Threading;
3+
using System.Threading.Tasks;
14
using Reddio.Api.V1.Rest;
25

3-
namespace Reddio.Api.V1;
4-
5-
/// <summary>
6-
/// High-Level API.
7-
/// </summary>
8-
public interface IReddioClient
6+
namespace Reddio.Api.V1
97
{
10-
public Task<ResponseWrapper<TransferResponse>> Transfer(
11-
String starkKey,
12-
String privateKey,
13-
String amount,
14-
String contractAddress,
15-
String tokenId,
16-
String type,
17-
String receiver,
18-
Int64 expirationTimeStamp
19-
);
8+
/// <summary>
9+
/// High-Level API.
10+
/// </summary>
11+
public interface IReddioClient
12+
{
13+
public Task<ResponseWrapper<TransferResponse>> Transfer(
14+
string starkKey,
15+
string privateKey,
16+
string amount,
17+
string contractAddress,
18+
string tokenId,
19+
string type,
20+
string receiver,
21+
Int64 expirationTimeStamp
22+
);
2023

21-
public Task<ResponseWrapper<GetRecordResponse>> GetRecord(string starkKey, Int64 sequenceId);
22-
public Task<ResponseWrapper<GetRecordResponse>> WaitingTransferGetApproved(string starkKey, Int64 sequenceId);
24+
public Task<ResponseWrapper<GetRecordResponse>> GetRecord(string starkKey, Int64 sequenceId);
25+
public Task<ResponseWrapper<GetRecordResponse>> WaitingTransferGetApproved(string starkKey, Int64 sequenceId);
2326

24-
public Task<ResponseWrapper<GetRecordResponse>> WaitingTransferGetApproved(
25-
string starkKey,
26-
Int64 sequenceId,
27-
TimeSpan interval,
28-
CancellationToken cancellationToken
29-
);
27+
public Task<ResponseWrapper<GetRecordResponse>> WaitingTransferGetApproved(
28+
string starkKey,
29+
Int64 sequenceId,
30+
TimeSpan interval,
31+
CancellationToken cancellationToken
32+
);
33+
}
3034
}
Lines changed: 117 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -1,136 +1,141 @@
1-
using System.Globalization;
2-
using System.Numerics;
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Threading;
4+
using System.Threading.Tasks;
35
using Reddio.Api.V1.Rest;
46
using Reddio.Crypto;
57

6-
namespace Reddio.Api.V1;
7-
8-
public class ReddioClient : IReddioClient
8+
namespace Reddio.Api.V1
99
{
10-
private IReddioRestClient _restClient;
11-
12-
public ReddioClient(IReddioRestClient restClient)
10+
public class ReddioClient : IReddioClient
1311
{
14-
_restClient = restClient;
15-
}
12+
private IReddioRestClient _restClient;
1613

17-
public async Task<ResponseWrapper<TransferResponse>> Transfer(string starkKey, string privateKey, string amount,
18-
string contractAddress, string tokenId, string type,
19-
string receiver, long expirationTimeStamp = 4194303)
20-
{
21-
var assetId = await GetAssetId(contractAddress, tokenId, type);
22-
var (senderVaultId, receiverVaultId) = await GetVaultIds(assetId, starkKey, receiver);
14+
public ReddioClient(IReddioRestClient restClient)
15+
{
16+
_restClient = restClient;
17+
}
2318

24-
var getNonceResponse = await _restClient.GetNonce(new GetNonceMessage(starkKey));
25-
var nonce = getNonceResponse.Data.Nonce;
19+
public async Task<ResponseWrapper<TransferResponse>> Transfer(string starkKey, string privateKey, string amount,
20+
string contractAddress, string tokenId, string type,
21+
string receiver, long expirationTimeStamp = 4194303)
22+
{
23+
var assetId = await GetAssetId(contractAddress, tokenId, type);
24+
var (senderVaultId, receiverVaultId) = await GetVaultIds(assetId, starkKey, receiver);
2625

27-
var signature = SignTransferMessage(privateKey,
28-
amount,
29-
nonce,
30-
senderVaultId,
31-
assetId,
32-
receiverVaultId,
33-
receiver,
34-
expirationTimeStamp);
26+
var getNonceResponse = await _restClient.GetNonce(new GetNonceMessage(starkKey));
27+
var nonce = getNonceResponse.Data.Nonce;
3528

36-
var transferMessage = new TransferMessage(
37-
assetId,
38-
starkKey,
39-
amount,
40-
nonce,
41-
senderVaultId,
42-
receiver,
43-
receiverVaultId,
44-
expirationTimeStamp,
45-
signature
46-
);
47-
return await _restClient.Transfer(transferMessage);
48-
}
29+
var signature = SignTransferMessage(privateKey,
30+
amount,
31+
nonce,
32+
senderVaultId,
33+
assetId,
34+
receiverVaultId,
35+
receiver,
36+
expirationTimeStamp);
37+
38+
var transferMessage = new TransferMessage(
39+
assetId,
40+
starkKey,
41+
amount,
42+
nonce,
43+
senderVaultId,
44+
receiver,
45+
receiverVaultId,
46+
expirationTimeStamp,
47+
signature
48+
);
49+
return await _restClient.Transfer(transferMessage);
50+
}
4951

50-
public async Task<ResponseWrapper<GetRecordResponse>> GetRecord(string starkKey, long sequenceId)
51-
{
52-
return await this._restClient.GetRecord(new GetRecordMessage(starkKey, sequenceId));
53-
}
52+
public async Task<ResponseWrapper<GetRecordResponse>> GetRecord(string starkKey, long sequenceId)
53+
{
54+
return await this._restClient.GetRecord(new GetRecordMessage(starkKey, sequenceId));
55+
}
5456

55-
public async Task<ResponseWrapper<GetRecordResponse>> WaitingTransferGetApproved(string starkKey, long sequenceId)
56-
{
57-
var interval = TimeSpan.FromSeconds(5);
58-
var timeout = TimeSpan.FromMinutes(1);
59-
CancellationTokenSource source = new CancellationTokenSource(timeout);
60-
return await WaitingTransferGetApproved(starkKey, sequenceId, interval, source.Token);
61-
}
57+
public async Task<ResponseWrapper<GetRecordResponse>> WaitingTransferGetApproved(string starkKey,
58+
long sequenceId)
59+
{
60+
var interval = TimeSpan.FromSeconds(5);
61+
var timeout = TimeSpan.FromMinutes(1);
62+
CancellationTokenSource source = new CancellationTokenSource(timeout);
63+
return await WaitingTransferGetApproved(starkKey, sequenceId, interval, source.Token);
64+
}
6265

63-
public async Task<ResponseWrapper<GetRecordResponse>> WaitingTransferGetApproved(string starkKey, long sequenceId,
64-
TimeSpan interval,
65-
CancellationToken cancellationToken)
66-
{
67-
var getRecordMessage = new GetRecordMessage(starkKey, sequenceId);
68-
for (;;)
66+
public async Task<ResponseWrapper<GetRecordResponse>> WaitingTransferGetApproved(string starkKey,
67+
long sequenceId,
68+
TimeSpan interval,
69+
CancellationToken cancellationToken)
6970
{
70-
cancellationToken.ThrowIfCancellationRequested();
71-
var response = await _restClient.GetRecord(getRecordMessage);
72-
if (SequenceRecord.SequenceStatusAccepted == response.Data[0].Status)
71+
var getRecordMessage = new GetRecordMessage(starkKey, sequenceId);
72+
for (;;)
7373
{
74-
return response;
74+
cancellationToken.ThrowIfCancellationRequested();
75+
var response = await _restClient.GetRecord(getRecordMessage);
76+
if (SequenceRecord.SequenceStatusAccepted == response.Data[0].Status)
77+
{
78+
return response;
79+
}
80+
81+
await Task.Delay(interval, cancellationToken);
7582
}
76-
77-
await Task.Delay(interval, cancellationToken);
7883
}
79-
}
8084

81-
internal async Task<string> GetAssetId(string contractAddress, string tokenId, string type)
82-
{
83-
var getAssetIdMessage = new GetAssetIdMessage(contractAddress, type, tokenId);
84-
var getAssetIdResponse = await _restClient.GetAssetId(getAssetIdMessage);
85-
var assetId = getAssetIdResponse.Data.AssetId;
86-
return assetId;
87-
}
85+
internal async Task<string> GetAssetId(string contractAddress, string tokenId, string type)
86+
{
87+
var getAssetIdMessage = new GetAssetIdMessage(contractAddress, type, tokenId);
88+
var getAssetIdResponse = await _restClient.GetAssetId(getAssetIdMessage);
89+
var assetId = getAssetIdResponse.Data.AssetId;
90+
return assetId;
91+
}
8892

89-
internal Signature SignTransferMessage(
90-
String privateKey,
91-
String amount,
92-
Int64 nonce,
93-
String senderVaultId,
94-
String token,
95-
String receiverVaultId,
96-
String receiverPublicKey,
97-
Int64 expirationTimeStamp = 4194303
98-
)
99-
{
100-
var (r, s) = CryptoService.Sign(
101-
CryptoService.ParsePositive(privateKey.ToLower().Replace("0x", "")),
102-
CryptoService.GetTransferMsgHash(
103-
Int64.Parse(amount),
104-
nonce,
105-
Int64.Parse(senderVaultId),
106-
CryptoService.ParsePositive(token.ToLower().Replace("0x", "")),
107-
Int64.Parse(receiverVaultId),
108-
CryptoService.ParsePositive(receiverPublicKey.ToLower().Replace("0x", "")),
109-
expirationTimeStamp,
93+
internal Signature SignTransferMessage(
94+
string privateKey,
95+
string amount,
96+
Int64 nonce,
97+
string senderVaultId,
98+
string token,
99+
string receiverVaultId,
100+
string receiverPublicKey,
101+
Int64 expirationTimeStamp = 4194303
102+
)
103+
{
104+
var (r, s) = CryptoService.Sign(
105+
CryptoService.ParsePositive(privateKey.ToLower().Replace("0x", "")),
106+
CryptoService.GetTransferMsgHash(
107+
Int64.Parse(amount),
108+
nonce,
109+
Int64.Parse(senderVaultId),
110+
CryptoService.ParsePositive(token.ToLower().Replace("0x", "")),
111+
Int64.Parse(receiverVaultId),
112+
CryptoService.ParsePositive(receiverPublicKey.ToLower().Replace("0x", "")),
113+
expirationTimeStamp,
114+
null
115+
),
110116
null
111-
),
112-
null
113-
);
114-
var result = new Signature($"0x{r.ToString("x")}", $"0x{s.ToString("x")}");
115-
return result;
116-
}
117+
);
118+
var result = new Signature($"0x{r.ToString("x")}", $"0x{s.ToString("x")}");
119+
return result;
120+
}
117121

118-
internal async Task<(String, String)> GetVaultIds(string assetId, string starkKey, string receiver)
119-
{
120-
var getVaultIdResponse =
121-
await _restClient.GetVaultId(new GetVaultIdMessage(assetId, new List<string> { starkKey, receiver }));
122-
var senderVaultId = getVaultIdResponse.Data.VaultIds[0];
123-
var receiverVaultId = getVaultIdResponse.Data.VaultIds[1];
124-
return (senderVaultId, receiverVaultId);
125-
}
122+
internal async Task<(string, string)> GetVaultIds(string assetId, string starkKey, string receiver)
123+
{
124+
var getVaultIdResponse =
125+
await _restClient.GetVaultId(new GetVaultIdMessage(assetId, new List<string> { starkKey, receiver }));
126+
var senderVaultId = getVaultIdResponse.Data.VaultIds[0];
127+
var receiverVaultId = getVaultIdResponse.Data.VaultIds[1];
128+
return (senderVaultId, receiverVaultId);
129+
}
126130

127-
public static ReddioClient Mainnet()
128-
{
129-
return new ReddioClient(ReddioRestClient.Mainnet());
130-
}
131+
public static ReddioClient Mainnet()
132+
{
133+
return new ReddioClient(ReddioRestClient.Mainnet());
134+
}
131135

132-
public static ReddioClient Testnet()
133-
{
134-
return new ReddioClient(ReddioRestClient.Testnet());
136+
public static ReddioClient Testnet()
137+
{
138+
return new ReddioClient(ReddioRestClient.Testnet());
139+
}
135140
}
136141
}
Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
using System.Text.Json.Serialization;
22

3-
namespace Reddio.Api.V1.Rest;
4-
5-
public class GetAssetIdMessage
3+
namespace Reddio.Api.V1.Rest
64
{
7-
[JsonPropertyName("contract_address")] public String ContractAddress { get; set; }
8-
[JsonPropertyName("type")] public String Type { get; set; }
9-
[JsonPropertyName("token_id")] public String TokenId { get; set; }
10-
11-
public GetAssetIdMessage()
5+
public class GetAssetIdMessage
126
{
13-
}
7+
[JsonPropertyName("contract_address")] public string ContractAddress { get; set; }
8+
[JsonPropertyName("type")] public string Type { get; set; }
9+
[JsonPropertyName("token_id")] public string TokenId { get; set; }
1410

15-
public GetAssetIdMessage(string contractAddress, string type, string tokenId)
16-
{
17-
ContractAddress = contractAddress;
18-
Type = type;
19-
TokenId = tokenId;
11+
public GetAssetIdMessage()
12+
{
13+
}
14+
15+
public GetAssetIdMessage(string contractAddress, string type, string tokenId)
16+
{
17+
ContractAddress = contractAddress;
18+
Type = type;
19+
TokenId = tokenId;
20+
}
2021
}
2122
}
Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
using System.Text.Json.Serialization;
22

3-
namespace Reddio.Api.V1.Rest;
4-
5-
public class GetAssetIdResponse
3+
namespace Reddio.Api.V1.Rest
64
{
7-
[JsonPropertyName("asset_id")] public String AssetId { get; set; }
8-
9-
public GetAssetIdResponse()
5+
public class GetAssetIdResponse
106
{
11-
}
7+
[JsonPropertyName("asset_id")] public string AssetId { get; set; }
128

13-
public GetAssetIdResponse(string assetId)
14-
{
15-
AssetId = assetId;
9+
public GetAssetIdResponse()
10+
{
11+
}
12+
13+
public GetAssetIdResponse(string assetId)
14+
{
15+
AssetId = assetId;
16+
}
1617
}
1718
}

0 commit comments

Comments
 (0)