From 0d18216691a638abe7cafb36e150d1c65c94558a Mon Sep 17 00:00:00 2001 From: tr00d Date: Wed, 4 Dec 2024 08:08:16 +0100 Subject: [PATCH] feat: update auth for Numbers --- Vonage.Test/NumbersTests.cs | 12 ++++++------ Vonage/Numbers/NumbersClient.cs | 30 ++++++++++++++++-------------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/Vonage.Test/NumbersTests.cs b/Vonage.Test/NumbersTests.cs index b90886bb..d1caa246 100644 --- a/Vonage.Test/NumbersTests.cs +++ b/Vonage.Test/NumbersTests.cs @@ -96,7 +96,7 @@ public async Task GetAvailableNumbersAsync() const string expectedResponse = @"{""count"": 1234,""numbers"": [{""country"": ""GB"",""msisdn"": ""447700900000"",""type"": ""mobile-lvn"",""cost"": ""1.25"",""features"": [""VOICE"",""SMS""]}]}"; var expectedUri = - $"{this.RestUrl}/number/search?country=GB&api_key={this.ApiKey}&api_secret={this.ApiSecret}&"; + $"{this.RestUrl}/number/search?country=GB&"; var request = new NumberSearchRequest {Country = "GB"}; this.Setup(expectedUri, expectedResponse); var response = await this.client.NumbersClient.GetAvailableNumbersAsync(request); @@ -116,7 +116,7 @@ public async Task GetAvailableNumbersAsyncWithAdditionalData() const string expectedResponse = @"{""count"": 1234,""numbers"": [{""country"": ""GB"",""msisdn"": ""447700900000"",""type"": ""mobile-lvn"",""cost"": ""1.25"",""features"": [""VOICE"",""SMS""], ""moHttpUrl"": ""https://example.com/webhooks/inbound-sms"", ""messagesCallbackType"": ""app"", ""messagesCallbackValue"": ""aaaaaaaa-bbbb-cccc-dddd-0123456789ab"", ""voiceCallbackType"": ""app"", ""voiceCallbackValue"": ""aaaaaaaa-bbbb-cccc-dddd-0123456789ab""}]}"; var expectedUri = - $"{this.RestUrl}/number/search?country=GB&api_key={this.ApiKey}&api_secret={this.ApiSecret}&"; + $"{this.RestUrl}/number/search?country=GB&"; var request = new NumberSearchRequest {Country = "GB"}; this.Setup(expectedUri, expectedResponse); var response = await this.client.NumbersClient.GetAvailableNumbersAsync(request); @@ -141,7 +141,7 @@ public async Task GetAvailableNumbersAsyncWithCredentials() const string expectedResponse = @"{""count"": 1234,""numbers"": [{""country"": ""GB"",""msisdn"": ""447700900000"",""type"": ""mobile-lvn"",""cost"": ""1.25"",""features"": [""VOICE"",""SMS""]}]}"; var expectedUri = - $"{this.RestUrl}/number/search?country=GB&type=mobile-lvn&pattern=12345&search_pattern=1&features=SMS&size=10&index=1&api_key={this.ApiKey}&api_secret={this.ApiSecret}&"; + $"{this.RestUrl}/number/search?country=GB&type=mobile-lvn&pattern=12345&search_pattern=1&features=SMS&size=10&index=1&"; var request = new NumberSearchRequest { Country = "GB", Type = "mobile-lvn", Pattern = "12345", SearchPattern = SearchPattern.Contains, @@ -165,7 +165,7 @@ public async Task GetOwnedNumbersAsync() const string expectedResponse = @"{""count"": 1234,""numbers"": [{""country"": ""GB"",""msisdn"": ""447700900000"",""type"": ""mobile-lvn"",""cost"": ""1.25"",""features"": [""VOICE"",""SMS""]}]}"; var expectedUri = - $"{this.RestUrl}/account/numbers?country=GB&api_key={this.ApiKey}&api_secret={this.ApiSecret}&"; + $"{this.RestUrl}/account/numbers?country=GB&"; var request = new NumberSearchRequest {Country = "GB"}; this.Setup(expectedUri, expectedResponse); var response = await this.client.NumbersClient.GetOwnedNumbersAsync(request); @@ -186,7 +186,7 @@ public async Task GetOwnedNumbersAsyncWithAdditionalData() const string expectedResponse = @"{""count"": 1234,""numbers"": [{""country"": ""GB"",""msisdn"": ""447700900000"",""type"": ""mobile-lvn"",""cost"": ""1.25"",""features"": [""VOICE"",""SMS""], ""moHttpUrl"": ""https://example.com/webhooks/inbound-sms"", ""messagesCallbackType"": ""app"", ""messagesCallbackValue"": ""aaaaaaaa-bbbb-cccc-dddd-0123456789ab"", ""voiceCallbackType"": ""app"", ""voiceCallbackValue"": ""aaaaaaaa-bbbb-cccc-dddd-0123456789ab""}]}"; var expectedUri = - $"{this.RestUrl}/account/numbers?country=GB&api_key={this.ApiKey}&api_secret={this.ApiSecret}&"; + $"{this.RestUrl}/account/numbers?country=GB&"; var request = new NumberSearchRequest {Country = "GB"}; this.Setup(expectedUri, expectedResponse); var response = await this.client.NumbersClient.GetOwnedNumbersAsync(request); @@ -212,7 +212,7 @@ public async Task GetOwnedNumbersAsyncWithCredentials() const string expectedResponse = @"{""count"": 1234,""numbers"": [{""country"": ""GB"",""msisdn"": ""447700900000"",""type"": ""mobile-lvn"",""cost"": ""1.25"",""features"": [""VOICE"",""SMS""],""app_id"": ""9907a0d2-5206-4ec0-af8c-b335685ef9b8""}]}"; var expectedUri = - $"{this.RestUrl}/account/numbers?country=GB&type=mobile-lvn&pattern=12345&search_pattern=1&features=SMS&size=10&index=1&application_id=testApp&api_key={this.ApiKey}&api_secret={this.ApiSecret}&"; + $"{this.RestUrl}/account/numbers?country=GB&type=mobile-lvn&pattern=12345&search_pattern=1&features=SMS&size=10&index=1&application_id=testApp&"; var request = new NumberSearchRequest { Country = "GB", Type = "mobile-lvn", Pattern = "12345", SearchPattern = SearchPattern.Contains, diff --git a/Vonage/Numbers/NumbersClient.cs b/Vonage/Numbers/NumbersClient.cs index f655b1c3..2bdde6d1 100644 --- a/Vonage/Numbers/NumbersClient.cs +++ b/Vonage/Numbers/NumbersClient.cs @@ -1,7 +1,9 @@ +#region using System.Net.Http; using System.Threading.Tasks; using Vonage.Common; using Vonage.Request; +#endregion namespace Vonage.Numbers; @@ -11,7 +13,7 @@ public class NumbersClient : INumbersClient private const string SuccessStatusCode = "200"; private readonly Configuration configuration; private readonly ITimeProvider timeProvider = new TimeProvider(); - + /// /// Constructor for NumbersClients. /// @@ -21,19 +23,19 @@ public NumbersClient(Credentials credentials = null) this.Credentials = credentials; this.configuration = Configuration.Instance; } - + internal NumbersClient(Credentials credentials, Configuration configuration, ITimeProvider timeProvider) { this.Credentials = credentials; this.configuration = configuration; this.timeProvider = timeProvider; } - + /// /// Gets or sets credentials to be used in further requests. /// public Credentials Credentials { get; set; } - + /// public async Task BuyANumberAsync(NumberTransactionRequest request, Credentials creds = null) @@ -48,7 +50,7 @@ public async Task BuyANumberAsync(NumberTransactionRe ValidateNumbersResponse(response); return response; } - + /// public async Task CancelANumberAsync(NumberTransactionRequest request, Credentials creds = null) @@ -63,27 +65,27 @@ public async Task CancelANumberAsync(NumberTransactio ValidateNumbersResponse(response); return response; } - + /// public Task GetAvailableNumbersAsync(NumberSearchRequest request, Credentials creds = null) => ApiRequest.Build(this.GetCredentials(creds), this.configuration, this.timeProvider) .DoGetRequestWithQueryParametersAsync( ApiRequest.GetBaseUri(ApiRequest.UriType.Rest, this.configuration, "/number/search"), - AuthType.Query, + AuthType.Basic, request ); - + /// public Task GetOwnedNumbersAsync(NumberSearchRequest request, Credentials creds = null) => ApiRequest.Build(this.GetCredentials(creds), this.configuration, this.timeProvider) .DoGetRequestWithQueryParametersAsync( ApiRequest.GetBaseUri(ApiRequest.UriType.Rest, this.configuration, "/account/numbers"), - AuthType.Query, + AuthType.Basic, request ); - + /// public Task TransferANumberAsync(NumberTransferRequest request, string apiKey, Credentials creds = null) => @@ -95,7 +97,7 @@ public Task TransferANumberAsync(NumberTransferRequest r request, AuthType.Basic ); - + /// public async Task UpdateANumberAsync(UpdateNumberRequest request, Credentials creds = null) @@ -110,12 +112,12 @@ public async Task UpdateANumberAsync(UpdateNumberRequ ValidateNumbersResponse(response); return response; } - + private static string FormatQueryStringCredentials(Credentials credentials) => $"api_key={credentials.ApiKey}&api_secret={credentials.ApiSecret}"; - + private Credentials GetCredentials(Credentials overridenCredentials) => overridenCredentials ?? this.Credentials; - + private static void ValidateNumbersResponse(NumberTransactionResponse response) { if (response.ErrorCode != SuccessStatusCode)