/** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for * license information. * * Code generated by Microsoft (R) AutoRest Code Generator. */ package com.microsoft.azure.management.cdn.implementation; import com.google.common.reflect.TypeToken; import com.microsoft.azure.AzureClient; import com.microsoft.azure.AzureServiceClient; import com.microsoft.azure.AzureServiceFuture; import com.microsoft.azure.ListOperationCallback; import com.microsoft.azure.management.cdn.CheckNameAvailabilityInput; import com.microsoft.azure.management.cdn.ErrorResponseException; import com.microsoft.azure.Page; import com.microsoft.azure.PagedList; import com.microsoft.rest.credentials.ServiceClientCredentials; import com.microsoft.rest.RestClient; import com.microsoft.rest.ServiceCallback; import com.microsoft.rest.ServiceFuture; import com.microsoft.rest.ServiceResponse; import java.io.IOException; import java.util.List; import okhttp3.ResponseBody; import retrofit2.http.Body; import retrofit2.http.GET; import retrofit2.http.Header; import retrofit2.http.Headers; import retrofit2.http.Path; import retrofit2.http.POST; import retrofit2.http.Query; import retrofit2.http.Url; import retrofit2.Response; import rx.functions.Func1; import rx.Observable; /** * Initializes a new instance of the CdnManagementClientImpl class. */ public class CdnManagementClientImpl extends AzureServiceClient { /** The Retrofit service to perform REST calls. */ private CdnManagementClientService service; /** the {@link AzureClient} used for long running operations. */ private AzureClient azureClient; /** * Gets the {@link AzureClient} used for long running operations. * @return the azure client; */ public AzureClient getAzureClient() { return this.azureClient; } /** Azure Subscription ID. */ private String subscriptionId; /** * Gets Azure Subscription ID. * * @return the subscriptionId value. */ public String subscriptionId() { return this.subscriptionId; } /** * Sets Azure Subscription ID. * * @param subscriptionId the subscriptionId value. * @return the service client itself */ public CdnManagementClientImpl withSubscriptionId(String subscriptionId) { this.subscriptionId = subscriptionId; return this; } /** Version of the API to be used with the client request. Current version is 2016-10-02. */ private String apiVersion; /** * Gets Version of the API to be used with the client request. Current version is 2016-10-02. * * @return the apiVersion value. */ public String apiVersion() { return this.apiVersion; } /** Gets or sets the preferred language for the response. */ private String acceptLanguage; /** * Gets Gets or sets the preferred language for the response. * * @return the acceptLanguage value. */ public String acceptLanguage() { return this.acceptLanguage; } /** * Sets Gets or sets the preferred language for the response. * * @param acceptLanguage the acceptLanguage value. * @return the service client itself */ public CdnManagementClientImpl withAcceptLanguage(String acceptLanguage) { this.acceptLanguage = acceptLanguage; return this; } /** Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30. */ private int longRunningOperationRetryTimeout; /** * Gets Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30. * * @return the longRunningOperationRetryTimeout value. */ public int longRunningOperationRetryTimeout() { return this.longRunningOperationRetryTimeout; } /** * Sets Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30. * * @param longRunningOperationRetryTimeout the longRunningOperationRetryTimeout value. * @return the service client itself */ public CdnManagementClientImpl withLongRunningOperationRetryTimeout(int longRunningOperationRetryTimeout) { this.longRunningOperationRetryTimeout = longRunningOperationRetryTimeout; return this; } /** When set to true a unique x-ms-client-request-id value is generated and included in each request. Default is true. */ private boolean generateClientRequestId; /** * Gets When set to true a unique x-ms-client-request-id value is generated and included in each request. Default is true. * * @return the generateClientRequestId value. */ public boolean generateClientRequestId() { return this.generateClientRequestId; } /** * Sets When set to true a unique x-ms-client-request-id value is generated and included in each request. Default is true. * * @param generateClientRequestId the generateClientRequestId value. * @return the service client itself */ public CdnManagementClientImpl withGenerateClientRequestId(boolean generateClientRequestId) { this.generateClientRequestId = generateClientRequestId; return this; } /** * The ProfilesInner object to access its operations. */ private ProfilesInner profiles; /** * Gets the ProfilesInner object to access its operations. * @return the ProfilesInner object. */ public ProfilesInner profiles() { return this.profiles; } /** * The EndpointsInner object to access its operations. */ private EndpointsInner endpoints; /** * Gets the EndpointsInner object to access its operations. * @return the EndpointsInner object. */ public EndpointsInner endpoints() { return this.endpoints; } /** * The OriginsInner object to access its operations. */ private OriginsInner origins; /** * Gets the OriginsInner object to access its operations. * @return the OriginsInner object. */ public OriginsInner origins() { return this.origins; } /** * The CustomDomainsInner object to access its operations. */ private CustomDomainsInner customDomains; /** * Gets the CustomDomainsInner object to access its operations. * @return the CustomDomainsInner object. */ public CustomDomainsInner customDomains() { return this.customDomains; } /** * The EdgeNodesInner object to access its operations. */ private EdgeNodesInner edgeNodes; /** * Gets the EdgeNodesInner object to access its operations. * @return the EdgeNodesInner object. */ public EdgeNodesInner edgeNodes() { return this.edgeNodes; } /** * Initializes an instance of CdnManagementClient client. * * @param credentials the management credentials for Azure */ public CdnManagementClientImpl(ServiceClientCredentials credentials) { this("https://management.azure.com", credentials); } /** * Initializes an instance of CdnManagementClient client. * * @param baseUrl the base URL of the host * @param credentials the management credentials for Azure */ public CdnManagementClientImpl(String baseUrl, ServiceClientCredentials credentials) { super(baseUrl, credentials); initialize(); } /** * Initializes an instance of CdnManagementClient client. * * @param restClient the REST client to connect to Azure. */ public CdnManagementClientImpl(RestClient restClient) { super(restClient); initialize(); } protected void initialize() { this.apiVersion = "2016-10-02"; this.acceptLanguage = "en-US"; this.longRunningOperationRetryTimeout = 30; this.generateClientRequestId = true; this.profiles = new ProfilesInner(restClient().retrofit(), this); this.endpoints = new EndpointsInner(restClient().retrofit(), this); this.origins = new OriginsInner(restClient().retrofit(), this); this.customDomains = new CustomDomainsInner(restClient().retrofit(), this); this.edgeNodes = new EdgeNodesInner(restClient().retrofit(), this); this.azureClient = new AzureClient(this); initializeService(); } /** * Gets the User-Agent header for the client. * * @return the user agent string. */ @Override public String userAgent() { return String.format("%s (%s, %s)", super.userAgent(), "CdnManagementClient", "2016-10-02"); } private void initializeService() { service = restClient().retrofit().create(CdnManagementClientService.class); } /** * The interface defining all the services for CdnManagementClient to be * used by Retrofit to perform actually REST calls. */ interface CdnManagementClientService { @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.cdn.CdnManagementClient checkNameAvailability" }) @POST("providers/Microsoft.Cdn/checkNameAvailability") Observable<Response<ResponseBody>> checkNameAvailability(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CheckNameAvailabilityInput checkNameAvailabilityInput, @Header("User-Agent") String userAgent); @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.cdn.CdnManagementClient listResourceUsage" }) @POST("subscriptions/{subscriptionId}/providers/Microsoft.Cdn/checkResourceUsage") Observable<Response<ResponseBody>> listResourceUsage(@Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.cdn.CdnManagementClient listOperations" }) @GET("providers/Microsoft.Cdn/operations") Observable<Response<ResponseBody>> listOperations(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.cdn.CdnManagementClient listResourceUsageNext" }) @GET Observable<Response<ResponseBody>> listResourceUsageNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.cdn.CdnManagementClient listOperationsNext" }) @GET Observable<Response<ResponseBody>> listOperationsNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); } /** * Check the availability of a resource name. This is needed for resources where name is globally unique, such as a CDN endpoint. * * @param name The resource name to validate. * @throws IllegalArgumentException thrown if parameters fail the validation * @throws ErrorResponseException thrown if the request is rejected by server * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent * @return the CheckNameAvailabilityOutputInner object if successful. */ public CheckNameAvailabilityOutputInner checkNameAvailability(String name) { return checkNameAvailabilityWithServiceResponseAsync(name).toBlocking().single().body(); } /** * Check the availability of a resource name. This is needed for resources where name is globally unique, such as a CDN endpoint. * * @param name The resource name to validate. * @param serviceCallback the async ServiceCallback to handle successful and failed responses. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the {@link ServiceFuture} object */ public ServiceFuture<CheckNameAvailabilityOutputInner> checkNameAvailabilityAsync(String name, final ServiceCallback<CheckNameAvailabilityOutputInner> serviceCallback) { return ServiceFuture.fromResponse(checkNameAvailabilityWithServiceResponseAsync(name), serviceCallback); } /** * Check the availability of a resource name. This is needed for resources where name is globally unique, such as a CDN endpoint. * * @param name The resource name to validate. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the observable to the CheckNameAvailabilityOutputInner object */ public Observable<CheckNameAvailabilityOutputInner> checkNameAvailabilityAsync(String name) { return checkNameAvailabilityWithServiceResponseAsync(name).map(new Func1<ServiceResponse<CheckNameAvailabilityOutputInner>, CheckNameAvailabilityOutputInner>() { @Override public CheckNameAvailabilityOutputInner call(ServiceResponse<CheckNameAvailabilityOutputInner> response) { return response.body(); } }); } /** * Check the availability of a resource name. This is needed for resources where name is globally unique, such as a CDN endpoint. * * @param name The resource name to validate. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the observable to the CheckNameAvailabilityOutputInner object */ public Observable<ServiceResponse<CheckNameAvailabilityOutputInner>> checkNameAvailabilityWithServiceResponseAsync(String name) { if (this.apiVersion() == null) { throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); } if (name == null) { throw new IllegalArgumentException("Parameter name is required and cannot be null."); } CheckNameAvailabilityInput checkNameAvailabilityInput = new CheckNameAvailabilityInput(); checkNameAvailabilityInput.withName(name); return service.checkNameAvailability(this.apiVersion(), this.acceptLanguage(), checkNameAvailabilityInput, this.userAgent()) .flatMap(new Func1<Response<ResponseBody>, Observable<ServiceResponse<CheckNameAvailabilityOutputInner>>>() { @Override public Observable<ServiceResponse<CheckNameAvailabilityOutputInner>> call(Response<ResponseBody> response) { try { ServiceResponse<CheckNameAvailabilityOutputInner> clientResponse = checkNameAvailabilityDelegate(response); return Observable.just(clientResponse); } catch (Throwable t) { return Observable.error(t); } } }); } private ServiceResponse<CheckNameAvailabilityOutputInner> checkNameAvailabilityDelegate(Response<ResponseBody> response) throws ErrorResponseException, IOException, IllegalArgumentException { return this.restClient().responseBuilderFactory().<CheckNameAvailabilityOutputInner, ErrorResponseException>newInstance(this.serializerAdapter()) .register(200, new TypeToken<CheckNameAvailabilityOutputInner>() { }.getType()) .registerError(ErrorResponseException.class) .build(response); } /** * Check the quota and actual usage of the CDN profiles under the given subscription. * * @throws IllegalArgumentException thrown if parameters fail the validation * @throws ErrorResponseException thrown if the request is rejected by server * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent * @return the PagedList<ResourceUsageInner> object if successful. */ public PagedList<ResourceUsageInner> listResourceUsage() { ServiceResponse<Page<ResourceUsageInner>> response = listResourceUsageSinglePageAsync().toBlocking().single(); return new PagedList<ResourceUsageInner>(response.body()) { @Override public Page<ResourceUsageInner> nextPage(String nextPageLink) { return listResourceUsageNextSinglePageAsync(nextPageLink).toBlocking().single().body(); } }; } /** * Check the quota and actual usage of the CDN profiles under the given subscription. * * @param serviceCallback the async ServiceCallback to handle successful and failed responses. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the {@link ServiceFuture} object */ public ServiceFuture<List<ResourceUsageInner>> listResourceUsageAsync(final ListOperationCallback<ResourceUsageInner> serviceCallback) { return AzureServiceFuture.fromPageResponse( listResourceUsageSinglePageAsync(), new Func1<String, Observable<ServiceResponse<Page<ResourceUsageInner>>>>() { @Override public Observable<ServiceResponse<Page<ResourceUsageInner>>> call(String nextPageLink) { return listResourceUsageNextSinglePageAsync(nextPageLink); } }, serviceCallback); } /** * Check the quota and actual usage of the CDN profiles under the given subscription. * * @throws IllegalArgumentException thrown if parameters fail the validation * @return the observable to the PagedList<ResourceUsageInner> object */ public Observable<Page<ResourceUsageInner>> listResourceUsageAsync() { return listResourceUsageWithServiceResponseAsync() .map(new Func1<ServiceResponse<Page<ResourceUsageInner>>, Page<ResourceUsageInner>>() { @Override public Page<ResourceUsageInner> call(ServiceResponse<Page<ResourceUsageInner>> response) { return response.body(); } }); } /** * Check the quota and actual usage of the CDN profiles under the given subscription. * * @throws IllegalArgumentException thrown if parameters fail the validation * @return the observable to the PagedList<ResourceUsageInner> object */ public Observable<ServiceResponse<Page<ResourceUsageInner>>> listResourceUsageWithServiceResponseAsync() { return listResourceUsageSinglePageAsync() .concatMap(new Func1<ServiceResponse<Page<ResourceUsageInner>>, Observable<ServiceResponse<Page<ResourceUsageInner>>>>() { @Override public Observable<ServiceResponse<Page<ResourceUsageInner>>> call(ServiceResponse<Page<ResourceUsageInner>> page) { String nextPageLink = page.body().nextPageLink(); if (nextPageLink == null) { return Observable.just(page); } return Observable.just(page).concatWith(listResourceUsageNextWithServiceResponseAsync(nextPageLink)); } }); } /** * Check the quota and actual usage of the CDN profiles under the given subscription. * * @throws IllegalArgumentException thrown if parameters fail the validation * @return the PagedList<ResourceUsageInner> object wrapped in {@link ServiceResponse} if successful. */ public Observable<ServiceResponse<Page<ResourceUsageInner>>> listResourceUsageSinglePageAsync() { if (this.subscriptionId() == null) { throw new IllegalArgumentException("Parameter this.subscriptionId() is required and cannot be null."); } if (this.apiVersion() == null) { throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); } return service.listResourceUsage(this.subscriptionId(), this.apiVersion(), this.acceptLanguage(), this.userAgent()) .flatMap(new Func1<Response<ResponseBody>, Observable<ServiceResponse<Page<ResourceUsageInner>>>>() { @Override public Observable<ServiceResponse<Page<ResourceUsageInner>>> call(Response<ResponseBody> response) { try { ServiceResponse<PageImpl<ResourceUsageInner>> result = listResourceUsageDelegate(response); return Observable.just(new ServiceResponse<Page<ResourceUsageInner>>(result.body(), result.response())); } catch (Throwable t) { return Observable.error(t); } } }); } private ServiceResponse<PageImpl<ResourceUsageInner>> listResourceUsageDelegate(Response<ResponseBody> response) throws ErrorResponseException, IOException, IllegalArgumentException { return this.restClient().responseBuilderFactory().<PageImpl<ResourceUsageInner>, ErrorResponseException>newInstance(this.serializerAdapter()) .register(200, new TypeToken<PageImpl<ResourceUsageInner>>() { }.getType()) .registerError(ErrorResponseException.class) .build(response); } /** * Lists all of the available CDN REST API operations. * * @throws IllegalArgumentException thrown if parameters fail the validation * @throws ErrorResponseException thrown if the request is rejected by server * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent * @return the PagedList<OperationInner> object if successful. */ public PagedList<OperationInner> listOperations() { ServiceResponse<Page<OperationInner>> response = listOperationsSinglePageAsync().toBlocking().single(); return new PagedList<OperationInner>(response.body()) { @Override public Page<OperationInner> nextPage(String nextPageLink) { return listOperationsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); } }; } /** * Lists all of the available CDN REST API operations. * * @param serviceCallback the async ServiceCallback to handle successful and failed responses. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the {@link ServiceFuture} object */ public ServiceFuture<List<OperationInner>> listOperationsAsync(final ListOperationCallback<OperationInner> serviceCallback) { return AzureServiceFuture.fromPageResponse( listOperationsSinglePageAsync(), new Func1<String, Observable<ServiceResponse<Page<OperationInner>>>>() { @Override public Observable<ServiceResponse<Page<OperationInner>>> call(String nextPageLink) { return listOperationsNextSinglePageAsync(nextPageLink); } }, serviceCallback); } /** * Lists all of the available CDN REST API operations. * * @throws IllegalArgumentException thrown if parameters fail the validation * @return the observable to the PagedList<OperationInner> object */ public Observable<Page<OperationInner>> listOperationsAsync() { return listOperationsWithServiceResponseAsync() .map(new Func1<ServiceResponse<Page<OperationInner>>, Page<OperationInner>>() { @Override public Page<OperationInner> call(ServiceResponse<Page<OperationInner>> response) { return response.body(); } }); } /** * Lists all of the available CDN REST API operations. * * @throws IllegalArgumentException thrown if parameters fail the validation * @return the observable to the PagedList<OperationInner> object */ public Observable<ServiceResponse<Page<OperationInner>>> listOperationsWithServiceResponseAsync() { return listOperationsSinglePageAsync() .concatMap(new Func1<ServiceResponse<Page<OperationInner>>, Observable<ServiceResponse<Page<OperationInner>>>>() { @Override public Observable<ServiceResponse<Page<OperationInner>>> call(ServiceResponse<Page<OperationInner>> page) { String nextPageLink = page.body().nextPageLink(); if (nextPageLink == null) { return Observable.just(page); } return Observable.just(page).concatWith(listOperationsNextWithServiceResponseAsync(nextPageLink)); } }); } /** * Lists all of the available CDN REST API operations. * * @throws IllegalArgumentException thrown if parameters fail the validation * @return the PagedList<OperationInner> object wrapped in {@link ServiceResponse} if successful. */ public Observable<ServiceResponse<Page<OperationInner>>> listOperationsSinglePageAsync() { if (this.apiVersion() == null) { throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); } return service.listOperations(this.apiVersion(), this.acceptLanguage(), this.userAgent()) .flatMap(new Func1<Response<ResponseBody>, Observable<ServiceResponse<Page<OperationInner>>>>() { @Override public Observable<ServiceResponse<Page<OperationInner>>> call(Response<ResponseBody> response) { try { ServiceResponse<PageImpl<OperationInner>> result = listOperationsDelegate(response); return Observable.just(new ServiceResponse<Page<OperationInner>>(result.body(), result.response())); } catch (Throwable t) { return Observable.error(t); } } }); } private ServiceResponse<PageImpl<OperationInner>> listOperationsDelegate(Response<ResponseBody> response) throws ErrorResponseException, IOException, IllegalArgumentException { return this.restClient().responseBuilderFactory().<PageImpl<OperationInner>, ErrorResponseException>newInstance(this.serializerAdapter()) .register(200, new TypeToken<PageImpl<OperationInner>>() { }.getType()) .registerError(ErrorResponseException.class) .build(response); } /** * Check the quota and actual usage of the CDN profiles under the given subscription. * * @param nextPageLink The NextLink from the previous successful call to List operation. * @throws IllegalArgumentException thrown if parameters fail the validation * @throws ErrorResponseException thrown if the request is rejected by server * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent * @return the PagedList<ResourceUsageInner> object if successful. */ public PagedList<ResourceUsageInner> listResourceUsageNext(final String nextPageLink) { ServiceResponse<Page<ResourceUsageInner>> response = listResourceUsageNextSinglePageAsync(nextPageLink).toBlocking().single(); return new PagedList<ResourceUsageInner>(response.body()) { @Override public Page<ResourceUsageInner> nextPage(String nextPageLink) { return listResourceUsageNextSinglePageAsync(nextPageLink).toBlocking().single().body(); } }; } /** * Check the quota and actual usage of the CDN profiles under the given subscription. * * @param nextPageLink The NextLink from the previous successful call to List operation. * @param serviceFuture the ServiceFuture object tracking the Retrofit calls * @param serviceCallback the async ServiceCallback to handle successful and failed responses. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the {@link ServiceFuture} object */ public ServiceFuture<List<ResourceUsageInner>> listResourceUsageNextAsync(final String nextPageLink, final ServiceFuture<List<ResourceUsageInner>> serviceFuture, final ListOperationCallback<ResourceUsageInner> serviceCallback) { return AzureServiceFuture.fromPageResponse( listResourceUsageNextSinglePageAsync(nextPageLink), new Func1<String, Observable<ServiceResponse<Page<ResourceUsageInner>>>>() { @Override public Observable<ServiceResponse<Page<ResourceUsageInner>>> call(String nextPageLink) { return listResourceUsageNextSinglePageAsync(nextPageLink); } }, serviceCallback); } /** * Check the quota and actual usage of the CDN profiles under the given subscription. * * @param nextPageLink The NextLink from the previous successful call to List operation. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the observable to the PagedList<ResourceUsageInner> object */ public Observable<Page<ResourceUsageInner>> listResourceUsageNextAsync(final String nextPageLink) { return listResourceUsageNextWithServiceResponseAsync(nextPageLink) .map(new Func1<ServiceResponse<Page<ResourceUsageInner>>, Page<ResourceUsageInner>>() { @Override public Page<ResourceUsageInner> call(ServiceResponse<Page<ResourceUsageInner>> response) { return response.body(); } }); } /** * Check the quota and actual usage of the CDN profiles under the given subscription. * * @param nextPageLink The NextLink from the previous successful call to List operation. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the observable to the PagedList<ResourceUsageInner> object */ public Observable<ServiceResponse<Page<ResourceUsageInner>>> listResourceUsageNextWithServiceResponseAsync(final String nextPageLink) { return listResourceUsageNextSinglePageAsync(nextPageLink) .concatMap(new Func1<ServiceResponse<Page<ResourceUsageInner>>, Observable<ServiceResponse<Page<ResourceUsageInner>>>>() { @Override public Observable<ServiceResponse<Page<ResourceUsageInner>>> call(ServiceResponse<Page<ResourceUsageInner>> page) { String nextPageLink = page.body().nextPageLink(); if (nextPageLink == null) { return Observable.just(page); } return Observable.just(page).concatWith(listResourceUsageNextWithServiceResponseAsync(nextPageLink)); } }); } /** * Check the quota and actual usage of the CDN profiles under the given subscription. * ServiceResponse<PageImpl<ResourceUsageInner>> * @param nextPageLink The NextLink from the previous successful call to List operation. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the PagedList<ResourceUsageInner> object wrapped in {@link ServiceResponse} if successful. */ public Observable<ServiceResponse<Page<ResourceUsageInner>>> listResourceUsageNextSinglePageAsync(final String nextPageLink) { if (nextPageLink == null) { throw new IllegalArgumentException("Parameter nextPageLink is required and cannot be null."); } String nextUrl = String.format("%s", nextPageLink); return service.listResourceUsageNext(nextUrl, this.acceptLanguage(), this.userAgent()) .flatMap(new Func1<Response<ResponseBody>, Observable<ServiceResponse<Page<ResourceUsageInner>>>>() { @Override public Observable<ServiceResponse<Page<ResourceUsageInner>>> call(Response<ResponseBody> response) { try { ServiceResponse<PageImpl<ResourceUsageInner>> result = listResourceUsageNextDelegate(response); return Observable.just(new ServiceResponse<Page<ResourceUsageInner>>(result.body(), result.response())); } catch (Throwable t) { return Observable.error(t); } } }); } private ServiceResponse<PageImpl<ResourceUsageInner>> listResourceUsageNextDelegate(Response<ResponseBody> response) throws ErrorResponseException, IOException, IllegalArgumentException { return this.restClient().responseBuilderFactory().<PageImpl<ResourceUsageInner>, ErrorResponseException>newInstance(this.serializerAdapter()) .register(200, new TypeToken<PageImpl<ResourceUsageInner>>() { }.getType()) .registerError(ErrorResponseException.class) .build(response); } /** * Lists all of the available CDN REST API operations. * * @param nextPageLink The NextLink from the previous successful call to List operation. * @throws IllegalArgumentException thrown if parameters fail the validation * @throws ErrorResponseException thrown if the request is rejected by server * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent * @return the PagedList<OperationInner> object if successful. */ public PagedList<OperationInner> listOperationsNext(final String nextPageLink) { ServiceResponse<Page<OperationInner>> response = listOperationsNextSinglePageAsync(nextPageLink).toBlocking().single(); return new PagedList<OperationInner>(response.body()) { @Override public Page<OperationInner> nextPage(String nextPageLink) { return listOperationsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); } }; } /** * Lists all of the available CDN REST API operations. * * @param nextPageLink The NextLink from the previous successful call to List operation. * @param serviceFuture the ServiceFuture object tracking the Retrofit calls * @param serviceCallback the async ServiceCallback to handle successful and failed responses. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the {@link ServiceFuture} object */ public ServiceFuture<List<OperationInner>> listOperationsNextAsync(final String nextPageLink, final ServiceFuture<List<OperationInner>> serviceFuture, final ListOperationCallback<OperationInner> serviceCallback) { return AzureServiceFuture.fromPageResponse( listOperationsNextSinglePageAsync(nextPageLink), new Func1<String, Observable<ServiceResponse<Page<OperationInner>>>>() { @Override public Observable<ServiceResponse<Page<OperationInner>>> call(String nextPageLink) { return listOperationsNextSinglePageAsync(nextPageLink); } }, serviceCallback); } /** * Lists all of the available CDN REST API operations. * * @param nextPageLink The NextLink from the previous successful call to List operation. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the observable to the PagedList<OperationInner> object */ public Observable<Page<OperationInner>> listOperationsNextAsync(final String nextPageLink) { return listOperationsNextWithServiceResponseAsync(nextPageLink) .map(new Func1<ServiceResponse<Page<OperationInner>>, Page<OperationInner>>() { @Override public Page<OperationInner> call(ServiceResponse<Page<OperationInner>> response) { return response.body(); } }); } /** * Lists all of the available CDN REST API operations. * * @param nextPageLink The NextLink from the previous successful call to List operation. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the observable to the PagedList<OperationInner> object */ public Observable<ServiceResponse<Page<OperationInner>>> listOperationsNextWithServiceResponseAsync(final String nextPageLink) { return listOperationsNextSinglePageAsync(nextPageLink) .concatMap(new Func1<ServiceResponse<Page<OperationInner>>, Observable<ServiceResponse<Page<OperationInner>>>>() { @Override public Observable<ServiceResponse<Page<OperationInner>>> call(ServiceResponse<Page<OperationInner>> page) { String nextPageLink = page.body().nextPageLink(); if (nextPageLink == null) { return Observable.just(page); } return Observable.just(page).concatWith(listOperationsNextWithServiceResponseAsync(nextPageLink)); } }); } /** * Lists all of the available CDN REST API operations. * ServiceResponse<PageImpl<OperationInner>> * @param nextPageLink The NextLink from the previous successful call to List operation. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the PagedList<OperationInner> object wrapped in {@link ServiceResponse} if successful. */ public Observable<ServiceResponse<Page<OperationInner>>> listOperationsNextSinglePageAsync(final String nextPageLink) { if (nextPageLink == null) { throw new IllegalArgumentException("Parameter nextPageLink is required and cannot be null."); } String nextUrl = String.format("%s", nextPageLink); return service.listOperationsNext(nextUrl, this.acceptLanguage(), this.userAgent()) .flatMap(new Func1<Response<ResponseBody>, Observable<ServiceResponse<Page<OperationInner>>>>() { @Override public Observable<ServiceResponse<Page<OperationInner>>> call(Response<ResponseBody> response) { try { ServiceResponse<PageImpl<OperationInner>> result = listOperationsNextDelegate(response); return Observable.just(new ServiceResponse<Page<OperationInner>>(result.body(), result.response())); } catch (Throwable t) { return Observable.error(t); } } }); } private ServiceResponse<PageImpl<OperationInner>> listOperationsNextDelegate(Response<ResponseBody> response) throws ErrorResponseException, IOException, IllegalArgumentException { return this.restClient().responseBuilderFactory().<PageImpl<OperationInner>, ErrorResponseException>newInstance(this.serializerAdapter()) .register(200, new TypeToken<PageImpl<OperationInner>>() { }.getType()) .registerError(ErrorResponseException.class) .build(response); } }