Пример #1
0
        public async Task CreateReservation(string?locale)
        {
            var client      = CreateClient();
            var countryCode = "US";

            var pageablePhonePlanGroups = client.GetPhonePlanGroupsAsync(countryCode, locale);
            var phonePlanGroups         = await pageablePhonePlanGroups.ToEnumerableAsync().ConfigureAwait(false);

            string phonePlanGroupId   = phonePlanGroups.First(group => group.PhoneNumberType == PhoneNumberType.TollFree).PhonePlanGroupId;
            var    pageablePhonePlans = client.GetPhonePlansAsync(countryCode, phonePlanGroupId, locale);
            var    phonePlan          = (await pageablePhonePlans.ToEnumerableAsync()).First();
            var    areaCode           = phonePlan.AreaCodes.First();

            var reservationOptions = new CreateReservationOptions("My reservation", "my description", new[] { phonePlan.PhonePlanId }, areaCode);

            reservationOptions.Quantity = 1;
            var reservationOperation = await client.StartReservationAsync(reservationOptions);

            await reservationOperation.WaitForCompletionAsync().ConfigureAwait(false);

            Assert.IsNotNull(reservationOperation);
            Assert.IsTrue(reservationOperation.HasCompleted);
            Assert.IsTrue(reservationOperation.HasValue);

            var reservation = reservationOperation.Value;

            Assert.IsNotNull(reservation);

            Assert.AreEqual(ReservationStatus.Reserved, reservation.Status);
            Assert.AreEqual(areaCode, reservation.AreaCode);
            Assert.IsNull(reservation.ErrorCode);
            Assert.AreEqual(1, reservation.PhoneNumbers?.Count);
        }
Пример #2
0
        public async Task CreateReservationErrorState(string?locale)
        {
            var client      = CreateClient();
            var countryCode = "US";

            var pageablePhonePlanGroups = client.GetPhonePlanGroupsAsync(countryCode, locale);
            var phonePlanGroups         = await pageablePhonePlanGroups.ToEnumerableAsync().ConfigureAwait(false);

            string phonePlanGroupId   = phonePlanGroups.First(group => group.PhoneNumberType == PhoneNumberType.TollFree).PhonePlanGroupId;
            var    pageablePhonePlans = client.GetPhonePlansAsync(countryCode, phonePlanGroupId, locale);
            var    phonePlan          = (await pageablePhonePlans.ToEnumerableAsync()).First();
            var    tollFreeAreaCode   = phonePlan.AreaCodes.First();

            string geographicPhonePlanGroupId = phonePlanGroups.First(group => group.PhoneNumberType == PhoneNumberType.Geographic).PhonePlanGroupId;
            var    geographicPhonePlanId      = (await client.GetPhonePlansAsync(countryCode, geographicPhonePlanGroupId, locale).ToEnumerableAsync()).First().PhonePlanId;

            var reservationOptions = new CreateReservationOptions("My reservation", "my description", new[] { geographicPhonePlanId }, tollFreeAreaCode);

            reservationOptions.Quantity = 1;
            var reservationOperation = await client.StartReservationAsync(reservationOptions);

            try
            {
                await reservationOperation.WaitForCompletionAsync().ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                Assert.AreEqual("Reservation has failed.", ex.Message);
                return;
            }

            Assert.Fail("WaitForCompletionAsync should have thrown an exception.");
        }
        public async Task GetAllReservations()
        {
            // Arrange
            var client = CreateClient();

            const string locale      = "en-US";
            const string countryCode = "US";

            var pageablePhonePlanGroups = client.GetPhonePlanGroupsAsync(countryCode, locale);
            var phonePlanGroups         = await pageablePhonePlanGroups.ToEnumerableAsync().ConfigureAwait(false);

            string phonePlanGroupId   = phonePlanGroups.First(group => group.PhoneNumberType == PhoneNumberType.TollFree).PhonePlanGroupId;
            var    pageablePhonePlans = client.GetPhonePlansAsync(countryCode, phonePlanGroupId, locale);
            var    phonePlan          = (await pageablePhonePlans.ToEnumerableAsync()).First();
            var    areaCode           = phonePlan.AreaCodes.First();

            var reservationOptions = new CreateReservationOptions("My reservation", "my description", new[] { phonePlan.PhonePlanId }, areaCode);

            reservationOptions.Quantity = 1;
            var reservationOperation = await client.StartReservationAsync(reservationOptions);

            await reservationOperation.WaitForCompletionAsync().ConfigureAwait(false);

            // Act
            var reservationsPagable = client.GetAllReservationsAsync();
            var reservations        = await reservationsPagable.ToEnumerableAsync();

            Assert.IsNotEmpty(reservations);
        }
Пример #4
0
 /// <summary> Starts a phone number reservation. </summary>
 /// <param name="body"> Defines the reservation options. </param>
 /// <param name="cancellationToken"> The cancellation token to use. </param>
 /// <returns> A <see cref="PhoneNumberReservationOperation"/>. </returns>
 public virtual PhoneNumberReservationOperation StartReservation(CreateReservationOptions body, CancellationToken cancellationToken = default)
 {
     using DiagnosticScope scope = ClientDiagnostics.CreateScope($"{nameof(PhoneNumberAdministrationClient)}.{nameof(StartReservation)}");
     scope.Start();
     try
     {
         var response = RestClient.CreateSearch(body, cancellationToken);
         return(new PhoneNumberReservationOperation(
                    this,
                    response.Value.ReservationId,
                    response.GetRawResponse(),
                    cancellationToken));
     }
     catch (Exception ex)
     {
         scope.Failed(ex);
         throw;
     }
 }
        public async Task PurchaseAndReleaseAsync()
        {
            if (!IncludePhoneNumberLiveTests)
            {
                Assert.Ignore("Include phone number live tests flag is off.");
            }

            const string locale           = "en-US";
            var          connectionString = TestEnvironment.ConnectionString;
            var          client           = CreateClient(false);

            const string countryCode = "US";

            #region Snippet:GetPhonePlanGroupsAsync
            var phonePlanGroups = client.GetPhonePlanGroupsAsync(countryCode, locale);

            await foreach (var phonePlanGroup in phonePlanGroups)
            {
                Console.WriteLine($"Plan group: {phonePlanGroup.LocalizedName}, type: {phonePlanGroup.PhoneNumberType}");
            }
            #endregion Snippet:GetPhonePlanGroupsAsync

            var phonePlanGroupsList = await phonePlanGroups.ToEnumerableAsync();

            string phonePlanGroupId = phonePlanGroupsList.First(group => group.PhoneNumberType == PhoneNumberType.TollFree).PhonePlanGroupId;

            #region Snippet:GetPhonePlansAsync
            var phonePlans = client.GetPhonePlansAsync(countryCode, phonePlanGroupId, locale);
            await foreach (var phonePlan in phonePlans)
            {
                Console.WriteLine($"Plan: {phonePlan.LocalizedName}, {phonePlan.LocationType}");
            }
            #endregion Snippet:GetPhonePlansAsync

            var firstphonePlan = (await phonePlans.ToEnumerableAsync()).First();
            var areaCode       = firstphonePlan.AreaCodes.First();
            var phonePlanId    = firstphonePlan.PhonePlanId;

            #region Snippet:ReservePhoneNumbersAsync
            var reservationName        = "My reservation";
            var reservationDescription = "reservation description";
            var reservationOptions     = new CreateReservationOptions(reservationName, reservationDescription, new[] { phonePlanId }, areaCode);
            reservationOptions.Quantity = 1;

            var reserveOperation = await client.StartReservationAsync(reservationOptions);

            //@@ await reserveOperation.WaitForCompletionAsync();
            /*@@*/ await WaitForCompletionAsync(reserveOperation);

            #endregion Snippet:ReservePhoneNumbersAsync

            reserveOperation = new PhoneNumberReservationOperation(client, reserveOperation.Id);

            #region Snippet:PersistReservePhoneNumbersOperationAsync
            var reservationId = reserveOperation.Id;

            // persist reservationId and then continue with a new operation

            //@@var reserveOperation = new PhoneNumberReservationOperation(client, reservationId);
            //@@ await reserveOperation.WaitForCompletionAsync();
            /*@@*/ await WaitForCompletionAsync(reserveOperation);

            #endregion Snippet:PersistReservePhoneNumbersOperationAsync

            #region Snippet:StartPurchaseReservationAsync
            var purchaseOperation = await client.StartPurchaseReservationAsync(reservationId);

            //@@ await purchaseOperation.WaitForCompletionAsync();
            /*@@*/ await WaitForCompletionAsync(purchaseOperation);

            #endregion Snippet:StartPurchaseReservationAsync

            #region Snippet:ListAcquiredPhoneNumbersAsync
            var acquiredPhoneNumbers = client.GetAllPhoneNumbersAsync(locale);

            await foreach (var phoneNumber in acquiredPhoneNumbers)
            {
                Console.WriteLine($"Phone number: {phoneNumber.PhoneNumber}, activation state: {phoneNumber.ActivationState}");
            }
            #endregion Snippet:ListAcquiredPhoneNumbersAsync

            var acquiredPhoneNumber = reserveOperation.Value.PhoneNumbers.Single();
            acquiredPhoneNumbers = client.GetAllPhoneNumbersAsync(locale);
            var beforeReleaseNumberCount = (await acquiredPhoneNumbers.ToEnumerableAsync()).Count;

            #region Snippet:ReleasePhoneNumbersAsync
            //@@var acquiredPhoneNumber = "<acquired_phone_number>";
            var releaseOperation = client.StartReleasePhoneNumber(new PhoneNumberIdentifier(acquiredPhoneNumber));
            //@@ await releaseOperation.WaitForCompletionAsync();
            /*@@*/ await WaitForCompletionAsync(releaseOperation);

            #endregion Snippet:ReleasePhoneNumbersAsync

            acquiredPhoneNumbers = client.GetAllPhoneNumbersAsync(locale);
            var afterReleaseNumberCount = (await acquiredPhoneNumbers.ToEnumerableAsync()).Count;
            Assert.AreEqual(1, beforeReleaseNumberCount - afterReleaseNumberCount);
        }
        public void PurchaseAndRelease()
        {
            if (!IncludePhoneNumberLiveTests)
            {
                Assert.Ignore("Include phone number live tests flag is off.");
            }

            const string locale           = "en-US";
            var          connectionString = TestEnvironment.ConnectionString;

            #region Snippet:CreatePhoneNumberAdministrationClient
            // Get a connection string to our Azure Communication resource.
            //@@var connectionString = "<connection_string>";
            var client = new PhoneNumberAdministrationClient(connectionString);
            #endregion Snippet:CreatePhoneNumberAdministrationClient

            client = CreateClient(false);

            const string countryCode = "US";

            #region Snippet:GetPhonePlanGroups
            var phonePlanGroups = client.GetPhonePlanGroups(countryCode, locale);

            foreach (var phonePlanGroup in phonePlanGroups)
            {
                Console.WriteLine($"Plan group: {phonePlanGroup.LocalizedName}, type: {phonePlanGroup.PhoneNumberType}");
            }
            #endregion Snippet:GetPhonePlanGroups

            var tollFreePhonePlanGroup = phonePlanGroups.First(group => group.PhoneNumberType == PhoneNumberType.TollFree);
            var phonePlanGroupId       = tollFreePhonePlanGroup.PhonePlanGroupId;

            #region Snippet:GetPhonePlans
            var phonePlans = client.GetPhonePlans(countryCode, phonePlanGroupId, locale);
            foreach (var phonePlan in phonePlans)
            {
                Console.WriteLine($"Plan: {phonePlan.LocalizedName}, {phonePlan.LocationType}");
            }
            #endregion Snippet:GetPhonePlans

            var tollFreePhonePlan = phonePlans.First();
            var phonePlanId       = tollFreePhonePlan.PhonePlanId;
            var areaCode          = tollFreePhonePlan.AreaCodes.First();

            #region Snippet:ReservePhoneNumbers
            var reservationName        = "My reservation";
            var reservationDescription = "reservation description";
            var reservationOptions     = new CreateReservationOptions(reservationName, reservationDescription, new[] { phonePlanId }, areaCode);
            reservationOptions.Quantity = 1;

            var reserveOperation = client.StartReservation(reservationOptions);

            while (!reserveOperation.HasCompleted)
            {
                //@@ Thread.Sleep(2000);
                /*@@*/ SleepIfNotInPlaybackMode();

                reserveOperation.UpdateStatus();
            }

            #endregion Snippet:ReservePhoneNumbers

            reserveOperation = new PhoneNumberReservationOperation(client, reserveOperation.Id);

            #region Snippet:PersistReservePhoneNumbersOperation
            var reservationId = reserveOperation.Id;

            // persist reservationId and then continue with a new operation

            //@@var reserveOperation = new PhoneNumberReservationOperation(client, reservationId);

            while (!reserveOperation.HasCompleted)
            {
                //@@ Thread.Sleep(2000);
                /*@@*/ SleepIfNotInPlaybackMode();

                reserveOperation.UpdateStatus();
            }
            #endregion Snippet:PersistReservePhoneNumbersOperation

            #region Snippet:StartPurchaseReservation
            var purchaseOperation = client.StartPurchaseReservation(reservationId);

            while (!purchaseOperation.HasCompleted)
            {
                //@@ Thread.Sleep(2000);
                /*@@*/ SleepIfNotInPlaybackMode();

                purchaseOperation.UpdateStatus();
            }
            #endregion Snippet:StartPurchaseReservation

            #region Snippet:ListAcquiredPhoneNumbers
            var acquiredPhoneNumbers = client.GetAllPhoneNumbers(locale);

            foreach (var phoneNumber in acquiredPhoneNumbers)
            {
                Console.WriteLine($"Phone number: {phoneNumber.PhoneNumber}, activation state: {phoneNumber.ActivationState}");
            }
            #endregion Snippet:ListAcquiredPhoneNumbers

            var acquiredPhoneNumber = reserveOperation.Value.PhoneNumbers.Single();
            acquiredPhoneNumbers = client.GetAllPhoneNumbers(locale);
            var beforeReleaseNumberCount = acquiredPhoneNumbers.Count();

            #region Snippet:ReleasePhoneNumbers
            //@@var acquiredPhoneNumber = "<acquired_phone_number>";
            var releaseOperation = client.StartReleasePhoneNumber(new PhoneNumberIdentifier(acquiredPhoneNumber));

            while (!releaseOperation.HasCompleted)
            {
                //@@ Thread.Sleep(2000);
                /*@@*/ SleepIfNotInPlaybackMode();

                releaseOperation.UpdateStatus();
            }
            #endregion Snippet:ReleasePhoneNumbers

            acquiredPhoneNumbers = client.GetAllPhoneNumbers(locale);
            var afterReleaseNumberCount = acquiredPhoneNumbers.Count();
            Assert.AreEqual(1, beforeReleaseNumberCount - afterReleaseNumberCount);
        }
Пример #7
0
        public async Task CreateGeographicalReservation(string?locale)
        {
            var          client      = CreateClient();
            const string countryCode = "US";

            var pageablePhonePlanGroups = client.GetPhonePlanGroupsAsync(countryCode, locale);
            var phonePlanGroups         = await pageablePhonePlanGroups.ToEnumerableAsync().ConfigureAwait(false);

            var phonePlanGroup     = phonePlanGroups.First(group => group.PhoneNumberType == PhoneNumberType.Geographic);
            var pageablePhonePlans = client.GetPhonePlansAsync(countryCode, phonePlanGroup.PhonePlanGroupId, locale);
            var phonePlan          = (await pageablePhonePlans.ToEnumerableAsync()).First();

            var locationOptionsResponse = await client.GetPhonePlanLocationOptionsAsync(countryCode, phonePlanGroup.PhonePlanGroupId, phonePlan.PhonePlanId);

            var state = locationOptionsResponse.Value.LocationOptions.Options.First();

            var locationOptionsQueries = new List <LocationOptionsQuery>
            {
                new LocationOptionsQuery
                {
                    LabelId      = "state",
                    OptionsValue = state.Value
                },
                new LocationOptionsQuery
                {
                    LabelId      = "city",
                    OptionsValue = state.LocationOptions.First().Options.First().Value
                }
            };

            var areaCodes = await client.GetAllAreaCodesAsync(phonePlan.LocationType.ToString(), countryCode, phonePlan.PhonePlanId, locationOptionsQueries);

            var areaCode = areaCodes.Value.PrimaryAreaCodes.First();

            var reservationOptions = new CreateReservationOptions("My reservation", "my description", new[] { phonePlan.PhonePlanId }, areaCode);

            reservationOptions.Quantity = 1;
            var reservationOperation = await client.StartReservationAsync(reservationOptions);

            if (TestEnvironment.Mode == RecordedTestMode.Playback)
            {
                await reservationOperation.WaitForCompletionAsync(TimeSpan.Zero, default).ConfigureAwait(false);
            }
            else
            {
                await reservationOperation.WaitForCompletionAsync().ConfigureAwait(false);
            }

            Assert.IsNotNull(reservationOperation);
            Assert.IsTrue(reservationOperation.HasCompleted);
            Assert.IsTrue(reservationOperation.HasValue);

            var reservation = reservationOperation.Value;

            Assert.IsNotNull(reservation);

            Assert.AreEqual(ReservationStatus.Reserved, reservation.Status);
            Assert.AreEqual(areaCode, reservation.AreaCode);
            Assert.IsNull(reservation.ErrorCode);
            Assert.AreEqual(1, reservation.PhoneNumbers?.Count);

            await client.CancelReservationAsync(reservationOperation.Id);
        }