From 358b24e49c4df3aa76dbed9f0c87225216e3196f Mon Sep 17 00:00:00 2001 From: Anthony Maisak Date: Sun, 5 Jan 2025 18:14:10 +0200 Subject: [PATCH] added 'madeInUkraine' account type --- src/Monobank.Core/Models/Account.cs | 2 +- .../Models/Consts/AccountTypes.cs | 5 ++++- src/Monobank.Core/Models/Error.cs | 4 ++-- src/Monobank.Core/Models/Statement.cs | 12 ++++++------ src/Monobank.Core/Models/UserInfo.cs | 18 +++++++++--------- src/Monobank.Core/Models/WebHookModel.cs | 12 +++++++----- src/Monobank.Core/Monobank.Core.csproj | 9 ++++++--- src/Monobank.Core/Services/ClientService.cs | 11 ++++++----- src/Monobank.Core/Services/CurrencyService.cs | 14 ++++---------- src/Monobank.Tests/Monobank.Tests.csproj | 12 ++++++------ src/MonobankClient.sln | 6 ++++++ 11 files changed, 57 insertions(+), 48 deletions(-) diff --git a/src/Monobank.Core/Models/Account.cs b/src/Monobank.Core/Models/Account.cs index 2aa13bd..1b34cde 100644 --- a/src/Monobank.Core/Models/Account.cs +++ b/src/Monobank.Core/Models/Account.cs @@ -7,7 +7,7 @@ namespace Monobank.Core.Models public class Account { [JsonPropertyName("id")] - public string Id { get; set; } + public string Id { get; set; } = string.Empty; [JsonPropertyName("balance")] public long Balance { get; set; } diff --git a/src/Monobank.Core/Models/Consts/AccountTypes.cs b/src/Monobank.Core/Models/Consts/AccountTypes.cs index 0d2a4f5..bf2948e 100644 --- a/src/Monobank.Core/Models/Consts/AccountTypes.cs +++ b/src/Monobank.Core/Models/Consts/AccountTypes.cs @@ -25,6 +25,9 @@ public enum AccountTypes Yellow = 6, [EnumMember(Value = "eAid")] - EAid = 7 + EAid = 7, + + [EnumMember(Value = "madeInUkraine")] + MadeInUkraine = 8 } } diff --git a/src/Monobank.Core/Models/Error.cs b/src/Monobank.Core/Models/Error.cs index 727bd72..9b9b79e 100644 --- a/src/Monobank.Core/Models/Error.cs +++ b/src/Monobank.Core/Models/Error.cs @@ -4,7 +4,7 @@ namespace Monobank.Core.Models { public class Error { - [JsonPropertyName("errorDescription")] - public string Description { get; set; } + [JsonPropertyName("errorDescription")] + public string Description { get; set; } = string.Empty; } } diff --git a/src/Monobank.Core/Models/Statement.cs b/src/Monobank.Core/Models/Statement.cs index b501a36..efa0e12 100644 --- a/src/Monobank.Core/Models/Statement.cs +++ b/src/Monobank.Core/Models/Statement.cs @@ -8,13 +8,13 @@ namespace Monobank.Core.Models public class Statement { [JsonPropertyName("id")] - public string Id { get; set; } + public string Id { get; set; } = string.Empty; [JsonPropertyName("time")] public long TimeInSeconds { get; set; } [JsonPropertyName("description")] - public string Description { get; set; } + public string Description { get; set; } = string.Empty; [JsonPropertyName("mcc")] public int MerchantCategoryCode { get; set; } @@ -41,16 +41,16 @@ public class Statement public long Balance { get; set; } [JsonPropertyName("comment")] - public string Comment { get; set; } + public string Comment { get; set; } = string.Empty; [JsonPropertyName("receiptId")] - public string ReceiptId { get; set; } + public string ReceiptId { get; set; } = string.Empty; [JsonPropertyName("counterEdrpou")] - public string CounterEdrpou { get; set; } + public string CounterEdrpou { get; set; } = string.Empty; [JsonPropertyName("counterIban")] - public string CounterIban { get; set; } + public string CounterIban { get; set; } = string.Empty; #region Custom properties diff --git a/src/Monobank.Core/Models/UserInfo.cs b/src/Monobank.Core/Models/UserInfo.cs index f311487..1bcf699 100644 --- a/src/Monobank.Core/Models/UserInfo.cs +++ b/src/Monobank.Core/Models/UserInfo.cs @@ -5,16 +5,16 @@ namespace Monobank.Core.Models { public class UserInfo { - [JsonPropertyName("clientId")] - public string Id { get; set; } + [JsonPropertyName("clientId")] + public string Id { get; set; } = string.Empty; + + [JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; - [JsonPropertyName("name")] - public string Name { get; set; } + [JsonPropertyName("webHookUrl")] + public string? WebHookUrl { get; set; } - [JsonPropertyName("webHookUrl")] - public string WebHookUrl { get; set; } - - [JsonPropertyName("accounts")] - public ICollection Accounts { get; set; } + [JsonPropertyName("accounts")] + public ICollection Accounts { get; set; } = []; } } diff --git a/src/Monobank.Core/Models/WebHookModel.cs b/src/Monobank.Core/Models/WebHookModel.cs index 6b8ba06..9c44154 100644 --- a/src/Monobank.Core/Models/WebHookModel.cs +++ b/src/Monobank.Core/Models/WebHookModel.cs @@ -5,16 +5,18 @@ namespace Monobank.Core.Models public class WebHookModel { [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("data")] - public WebHookData Data { get; set; } + public string Type { get; set; } = string.Empty; + + [JsonPropertyName("data")] + public WebHookData Data { get; set; } = null!; } public class WebHookData { [JsonPropertyName("account")] - public string Account { get; set; } + public string Account { get; set; } = string.Empty; + [JsonPropertyName("statementItem")] - public Statement StatementItem { get; set; } + public Statement StatementItem { get; set; } = null!; } } diff --git a/src/Monobank.Core/Monobank.Core.csproj b/src/Monobank.Core/Monobank.Core.csproj index effb118..603aee0 100644 --- a/src/Monobank.Core/Monobank.Core.csproj +++ b/src/Monobank.Core/Monobank.Core.csproj @@ -2,12 +2,15 @@ netstandard2.1 + true + enable + latest Monobank.API.Core API monobank net-standard-2 Anthony Maisak Anthony Maisak Monobank.ua API wrapper - Copyright 2024 + Copyright 2025 https://github.com/maisak/monobank-api https://github.com/maisak/monobank-api logo.png @@ -15,13 +18,13 @@ README.md Git Updated code to reflect API changes. - 1.2 + 1.3 - + diff --git a/src/Monobank.Core/Services/ClientService.cs b/src/Monobank.Core/Services/ClientService.cs index 1d2e554..e6c195b 100644 --- a/src/Monobank.Core/Services/ClientService.cs +++ b/src/Monobank.Core/Services/ClientService.cs @@ -25,7 +25,7 @@ public ClientService(HttpClient client, string token) _httpClient.DefaultRequestHeaders.Add(TokenHeader, token); } - public async Task GetClientInfoAsync() + public async Task GetClientInfoAsync() { var uri = new Uri(ClientInfoEndpoint, UriKind.Relative); var response = await _httpClient.GetAsync(uri); @@ -33,8 +33,9 @@ public async Task GetClientInfoAsync() if (!response.IsSuccessStatusCode) { var error = JsonSerializer.Deserialize(responseString); - throw new Exception(error.Description); + throw new Exception(error!.Description); } + return JsonSerializer.Deserialize(responseString); } @@ -56,16 +57,16 @@ public async Task> GetStatementsAsync(DateTime from, Date if (!response.IsSuccessStatusCode) { var error = JsonSerializer.Deserialize(responseString); - throw new Exception(error.Description); + throw new Exception(error!.Description); } _previousRequestTimestamp = DateTime.UtcNow; - return JsonSerializer.Deserialize>(responseString); + return JsonSerializer.Deserialize>(responseString) ?? []; } public async Task SetWebhookAsync(string url) { // create body containing webhook url - var body = JsonSerializer.Serialize(new {webHookUrl = url}); + var body = JsonSerializer.Serialize(new { webHookUrl = url }); // uri to call var uri = new Uri(WebhookEndpoint, UriKind.Relative); // set webhook diff --git a/src/Monobank.Core/Services/CurrencyService.cs b/src/Monobank.Core/Services/CurrencyService.cs index df8a284..d4c0dbd 100644 --- a/src/Monobank.Core/Services/CurrencyService.cs +++ b/src/Monobank.Core/Services/CurrencyService.cs @@ -7,28 +7,22 @@ namespace Monobank.Core.Services { - public class CurrencyService + public class CurrencyService(HttpClient client) { private const string CurrencyEndpoint = "bank/currency"; - private readonly HttpClient _httpClient; - - public CurrencyService(HttpClient client) - { - _httpClient = client; - } public async Task> GetCurrencies() { var uri = new Uri($"{CurrencyEndpoint}", UriKind.Relative); - var response = await _httpClient.GetAsync(uri); + var response = await client.GetAsync(uri); var responseString = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { var error = JsonSerializer.Deserialize(responseString); - throw new Exception(error.Description); + throw new Exception(error!.Description); } - return JsonSerializer.Deserialize>(responseString); + return JsonSerializer.Deserialize>(responseString) ?? []; } } } diff --git a/src/Monobank.Tests/Monobank.Tests.csproj b/src/Monobank.Tests/Monobank.Tests.csproj index 5f2bf6b..872bd9b 100644 --- a/src/Monobank.Tests/Monobank.Tests.csproj +++ b/src/Monobank.Tests/Monobank.Tests.csproj @@ -1,20 +1,20 @@ - net8.0 - + net9.0 false + latest - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/src/MonobankClient.sln b/src/MonobankClient.sln index 449dd9e..30130d4 100644 --- a/src/MonobankClient.sln +++ b/src/MonobankClient.sln @@ -7,6 +7,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Monobank.Core", "Monobank.C EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Monobank.Tests", "Monobank.Tests\Monobank.Tests.csproj", "{163928F8-82AB-47C1-B794-99FD516704AE}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution items", "Solution items", "{C382ABF6-3EFD-4C3A-84D4-A2A9DABD6E3E}" + ProjectSection(SolutionItems) = preProject + ..\.gitignore = ..\.gitignore + ..\README.md = ..\README.md + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU