/// <summary> Search for available phone numbers to purchase. </summary> /// <param name="twoLetterIsoCountryName"> The ISO 3166-2 country code, e.g. US. </param> /// <param name="phoneNumberType"> The type of phone numbers to search for. </param> /// <param name="phoneNumberAssignmentType"> The assignment type of the phone numbers to search for. </param> /// <param name="capabilities"> Capabilities of a phone number. </param> /// <param name="options"> The phone number search options. </param> /// <param name="cancellationToken"> The cancellation token to use. </param> /// <exception cref="ArgumentNullException"> <paramref name="twoLetterIsoCountryName"/> is null. </exception> public virtual SearchAvailablePhoneNumbersOperation StartSearchAvailablePhoneNumbers(string twoLetterIsoCountryName, PhoneNumberType phoneNumberType, PhoneNumberAssignmentType phoneNumberAssignmentType, PhoneNumberCapabilities capabilities, PhoneNumberSearchOptions options = null, CancellationToken cancellationToken = default) { Argument.AssertNotNull(twoLetterIsoCountryName, nameof(twoLetterIsoCountryName)); Argument.AssertNotNull(capabilities, nameof(capabilities)); using var scope = _clientDiagnostics.CreateScope($"{nameof(PhoneNumbersClient)}.{nameof(StartSearchAvailablePhoneNumbers)}"); scope.Start(); try { var searchRequest = new PhoneNumberSearchRequest(phoneNumberType, phoneNumberAssignmentType, capabilities) { AreaCode = options?.AreaCode, Quantity = options?.Quantity }; var originalResponse = RestClient.SearchAvailablePhoneNumbers(twoLetterIsoCountryName, searchRequest, cancellationToken); return(new SearchAvailablePhoneNumbersOperation(_clientDiagnostics, _pipeline, RestClient.CreateSearchAvailablePhoneNumbersRequest(twoLetterIsoCountryName, searchRequest).Request, originalResponse)); } catch (Exception e) { scope.Failed(e); throw; } }
internal HttpMessage CreateSearchAvailablePhoneNumbersRequest(string countryCode, PhoneNumberSearchRequest body) { var message = _pipeline.CreateMessage(); var request = message.Request; request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); uri.AppendPath("/availablePhoneNumbers/countries/", false); uri.AppendPath(countryCode, true); uri.AppendPath("/:search", false); uri.AppendQuery("api-version", apiVersion, true); request.Uri = uri; request.Headers.Add("Accept", "application/json"); request.Headers.Add("Content-Type", "application/json"); var content = new Utf8JsonRequestContent(); content.JsonWriter.WriteObjectValue(body); request.Content = content; return(message); }
public async Task <ResponseWithHeaders <PhoneNumbersSearchAvailablePhoneNumbersHeaders> > SearchAvailablePhoneNumbersAsync(string countryCode, PhoneNumberSearchRequest body, CancellationToken cancellationToken = default) { if (countryCode == null) { throw new ArgumentNullException(nameof(countryCode)); } if (body == null) { throw new ArgumentNullException(nameof(body)); } using var message = CreateSearchAvailablePhoneNumbersRequest(countryCode, body); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); var headers = new PhoneNumbersSearchAvailablePhoneNumbersHeaders(message.Response); switch (message.Response.Status) { case 202: return(ResponseWithHeaders.FromValue(headers, message.Response)); default: throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); } }
public virtual SearchAvailablePhoneNumbersOperation StartSearchAvailablePhoneNumbers(string countryCode, PhoneNumberSearchRequest body, CancellationToken cancellationToken = default) { if (countryCode == null) { throw new ArgumentNullException(nameof(countryCode)); } if (body == null) { throw new ArgumentNullException(nameof(body)); } using var scope = _clientDiagnostics.CreateScope("InternalPhoneNumbersClient.StartSearchAvailablePhoneNumbers"); scope.Start(); try { var originalResponse = RestClient.SearchAvailablePhoneNumbers(countryCode, body, cancellationToken); return(new SearchAvailablePhoneNumbersOperation(_clientDiagnostics, _pipeline, RestClient.CreateSearchAvailablePhoneNumbersRequest(countryCode, body).Request, originalResponse)); } catch (Exception e) { scope.Failed(e); throw; } }