com.microsoft.azure.storage.blob.ServiceURL Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of azure-storage-blob Show documentation
Show all versions of azure-storage-blob Show documentation
The Azure Storage Java Blob library.
/*
* Copyright Microsoft Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.microsoft.azure.storage.blob;
import com.microsoft.azure.storage.blob.models.*;
import com.microsoft.rest.v2.Context;
import com.microsoft.rest.v2.http.HttpPipeline;
import io.reactivex.Single;
import java.net.MalformedURLException;
import java.net.URL;
import static com.microsoft.azure.storage.blob.Utility.addErrorWrappingToSingle;
/**
* Represents a URL to a blob service. This class does not hold any state about a particular storage account but is
* instead a convenient way of sending off appropriate requests to the resource on the service.
* It may also be used to construct URLs to blobs and containers.
* Please see here for more
* information on containers.
*/
public final class ServiceURL extends StorageURL {
/**
* Creates a {@code ServiceURL} object pointing to the account specified by the URL and using the provided pipeline
* to make HTTP requests.
*
* @param url
* A url to an Azure Storage account.
* @param pipeline
* A {@code HttpPipeline} which configures the behavior of HTTP exchanges. Please refer to
* {@link StorageURL#createPipeline(ICredentials, PipelineOptions)} for more information.
*
* @apiNote ## Sample Code \n
* [!code-java[Sample_Code](../azure-storage-java/src/test/java/com/microsoft/azure/storage/Samples.java?name=service_url "Sample code for ServiceURL constructor")] \n
* For more samples, please see the [Samples file](%https://github.com/Azure/azure-storage-java/blob/master/src/test/java/com/microsoft/azure/storage/Samples.java)
*/
public ServiceURL(URL url, HttpPipeline pipeline) {
super(url, pipeline);
}
public ContainerURL createContainerURL(String containerName) {
try {
return new ContainerURL(StorageURL.appendToURLPath(new URL(super.storageClient.url()), containerName),
super.storageClient.httpPipeline());
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
}
/**
* Creates a new {@link ServiceURL} with the given pipeline.
*
* @param pipeline
* An {@link HttpPipeline} object to set.
*
* @return A {@link ServiceURL} object with the given pipeline.
*/
public ServiceURL withPipeline(HttpPipeline pipeline) {
try {
return new ServiceURL(new URL(super.storageClient.url()), pipeline);
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
}
/**
* Returns a single segment of containers starting from the specified Marker.
* Use an empty marker to start enumeration from the beginning. Container names are returned in lexicographic order.
* After getting a segment, process it, and then call ListContainers again (passing the the previously-returned
* Marker) to get the next segment. For more information, see
* the Azure Docs.
*
* @param marker
* Identifies the portion of the list to be returned with the next list operation.
* This value is returned in the response of a previous list operation as the
* ListContainersSegmentResponse.body().nextMarker(). Set to null to list the first segment.
* @param options
* A {@link ListContainersOptions} which specifies what data should be returned by the service.
*
* @return Emits the successful response.
*
* @apiNote ## Sample Code \n
* [!code-java[Sample_Code](../azure-storage-java/src/test/java/com/microsoft/azure/storage/Samples.java?name=service_list "Sample code for ServiceURL.listContainersSegment")] \n
* [!code-java[Sample_Code](../azure-storage-java/src/test/java/com/microsoft/azure/storage/Samples.java?name=service_list_helper "Helper code for ServiceURL.listContainersSegment")] \n
* For more samples, please see the [Samples file](%https://github.com/Azure/azure-storage-java/blob/master/src/test/java/com/microsoft/azure/storage/Samples.java)
*/
public Single listContainersSegment(String marker,
ListContainersOptions options) {
return this.listContainersSegment(marker, options, null);
}
/**
* Returns a single segment of containers starting from the specified Marker.
* Use an empty marker to start enumeration from the beginning. Container names are returned in lexicographic order.
* After getting a segment, process it, and then call ListContainers again (passing the the previously-returned
* Marker) to get the next segment. For more information, see
* the Azure Docs.
*
* @param marker
* Identifies the portion of the list to be returned with the next list operation.
* This value is returned in the response of a previous list operation as the
* ListContainersSegmentResponse.body().nextMarker(). Set to null to list the first segment.
* @param options
* A {@link ListContainersOptions} which specifies what data should be returned by the service.
* @param context
* {@code Context} offers a means of passing arbitrary data (key/value pairs) to an
* {@link com.microsoft.rest.v2.http.HttpPipeline}'s policy objects. Most applications do not need to pass
* arbitrary data to the pipeline and can pass {@code Context.NONE} or {@code null}. Each context object is
* immutable. The {@code withContext} with data method creates a new {@code Context} object that refers to
* its parent, forming a linked list.
*
* @return Emits the successful response.
*
* @apiNote ## Sample Code \n
* [!code-java[Sample_Code](../azure-storage-java/src/test/java/com/microsoft/azure/storage/Samples.java?name=service_list "Sample code for ServiceURL.listContainersSegment")] \n
* [!code-java[Sample_Code](../azure-storage-java/src/test/java/com/microsoft/azure/storage/Samples.java?name=service_list_helper "Helper code for ServiceURL.listContainersSegment")] \n
* For more samples, please see the [Samples file](%https://github.com/Azure/azure-storage-java/blob/master/src/test/java/com/microsoft/azure/storage/Samples.java)
*/
public Single listContainersSegment(String marker,
ListContainersOptions options, Context context) {
options = options == null ? ListContainersOptions.DEFAULT : options;
context = context == null ? Context.NONE : context;
return addErrorWrappingToSingle(
this.storageClient.generatedServices().listContainersSegmentWithRestResponseAsync(context,
options.prefix(), marker, options.maxResults(), options.details().toIncludeType(), null, null));
}
/**
* Gets the properties of a storage account’s Blob service. For more information, see the
* Azure Docs.
*
* @return Emits the successful response.
*
* @apiNote ## Sample Code \n
* [!code-java[Sample_Code](../azure-storage-java/src/test/java/com/microsoft/azure/storage/Samples.java?name=service_getsetprops "Sample code for ServiceURL.getProperties")] \n
* For more samples, please see the [Samples file](%https://github.com/Azure/azure-storage-java/blob/master/src/test/java/com/microsoft/azure/storage/Samples.java)
*/
public Single getProperties() {
return this.getProperties(null);
}
/**
* Gets the properties of a storage account’s Blob service. For more information, see the
* Azure Docs.
*
* @param context
* {@code Context} offers a means of passing arbitrary data (key/value pairs) to an
* {@link com.microsoft.rest.v2.http.HttpPipeline}'s policy objects. Most applications do not need to pass
* arbitrary data to the pipeline and can pass {@code Context.NONE} or {@code null}. Each context object is
* immutable. The {@code withContext} with data method creates a new {@code Context} object that refers to
* its parent, forming a linked list.
*
* @return Emits the successful response.
*
* @apiNote ## Sample Code \n
* [!code-java[Sample_Code](../azure-storage-java/src/test/java/com/microsoft/azure/storage/Samples.java?name=service_getsetprops "Sample code for ServiceURL.getProperties")] \n
* For more samples, please see the [Samples file](%https://github.com/Azure/azure-storage-java/blob/master/src/test/java/com/microsoft/azure/storage/Samples.java)
*/
public Single getProperties(Context context) {
context = context == null ? Context.NONE : context;
return addErrorWrappingToSingle(
this.storageClient.generatedServices().getPropertiesWithRestResponseAsync(context, null, null));
}
/**
* Sets properties for a storage account's Blob service endpoint. For more information, see the
* Azure Docs.
* Note that setting the default service version has no effect when using this client because this client explicitly
* sets the version header on each request, overriding the default.
*
* @param properties
* Configures the service.
*
* @return Emits the successful response.
*
* @apiNote ## Sample Code \n
* [!code-java[Sample_Code](../azure-storage-java/src/test/java/com/microsoft/azure/storage/Samples.java?name=service_getsetprops "Sample code for ServiceURL.setProperties")] \n
* For more samples, please see the [Samples file](%https://github.com/Azure/azure-storage-java/blob/master/src/test/java/com/microsoft/azure/storage/Samples.java)
*/
public Single setProperties(StorageServiceProperties properties) {
return this.setProperties(properties, null);
}
/**
* Sets properties for a storage account's Blob service endpoint. For more information, see the
* Azure Docs.
* Note that setting the default service version has no effect when using this client because this client explicitly
* sets the version header on each request, overriding the default.
*
* @param properties
* Configures the service.
* @param context
* {@code Context} offers a means of passing arbitrary data (key/value pairs) to an
* {@link com.microsoft.rest.v2.http.HttpPipeline}'s policy objects. Most applications do not need to pass
* arbitrary data to the pipeline and can pass {@code Context.NONE} or {@code null}. Each context object is
* immutable. The {@code withContext} with data method creates a new {@code Context} object that refers to
* its parent, forming a linked list.
*
* @return Emits the successful response.
*
* @apiNote ## Sample Code \n
* [!code-java[Sample_Code](../azure-storage-java/src/test/java/com/microsoft/azure/storage/Samples.java?name=service_getsetprops "Sample code for ServiceURL.setProperties")] \n
* For more samples, please see the [Samples file](%https://github.com/Azure/azure-storage-java/blob/master/src/test/java/com/microsoft/azure/storage/Samples.java)
*/
public Single setProperties(StorageServiceProperties properties, Context context) {
context = context == null ? Context.NONE : context;
return addErrorWrappingToSingle(
this.storageClient.generatedServices().setPropertiesWithRestResponseAsync(context, properties, null,
null));
}
/**
* Retrieves statistics related to replication for the Blob service. It is only available on the secondary
* location endpoint when read-access geo-redundant replication is enabled for the storage account. For more
* information, see the
* Azure Docs.
*
* @return Emits the successful response.
*
* @apiNote ## Sample Code \n
* [!code-java[Sample_Code](../azure-storage-java/src/test/java/com/microsoft/azure/storage/Samples.java?name=service_stats "Sample code for ServiceURL.getStats")] \n
* For more samples, please see the [Samples file](%https://github.com/Azure/azure-storage-java/blob/master/src/test/java/com/microsoft/azure/storage/Samples.java)
*/
public Single getStatistics() {
return this.getStatistics(null);
}
/**
* Retrieves statistics related to replication for the Blob service. It is only available on the secondary
* location endpoint when read-access geo-redundant replication is enabled for the storage account. For more
* information, see the
* Azure Docs.
*
* @param context
* {@code Context} offers a means of passing arbitrary data (key/value pairs) to an
* {@link com.microsoft.rest.v2.http.HttpPipeline}'s policy objects. Most applications do not need to pass
* arbitrary data to the pipeline and can pass {@code Context.NONE} or {@code null}. Each context object is
* immutable. The {@code withContext} with data method creates a new {@code Context} object that refers to
* its parent, forming a linked list.
*
* @return Emits the successful response.
*
* @apiNote ## Sample Code \n
* [!code-java[Sample_Code](../azure-storage-java/src/test/java/com/microsoft/azure/storage/Samples.java?name=service_stats "Sample code for ServiceURL.getStats")] \n
* For more samples, please see the [Samples file](%https://github.com/Azure/azure-storage-java/blob/master/src/test/java/com/microsoft/azure/storage/Samples.java)
*/
public Single getStatistics(Context context) {
context = context == null ? Context.NONE : context;
return addErrorWrappingToSingle(
this.storageClient.generatedServices().getStatisticsWithRestResponseAsync(context, null, null));
}
/**
* Returns the sku name and account kind for the account. For more information, please see the
* Azure Docs.
*
* @return Emits the successful response.
*
* @apiNote ## Sample Code \n
* [!code-java[Sample_Code](../azure-storage-java/src/test/java/com/microsoft/azure/storage/Samples.java?name=account_info "Sample code for ServiceURL.getAccountInfo")] \n
* For more samples, please see the [Samples file] (https://github.com/Azure/azure-storage-java/blob/master/src/test/java/com/microsoft/azure/storage/Samples.java)
*/
public Single getAccountInfo() {
return this.getAccountInfo(null);
}
/**
* Returns the sku name and account kind for the account. For more information, please see the
* Azure Docs.
*
* @param context
* {@code Context} offers a means of passing arbitrary data (key/value pairs) to an
* {@link com.microsoft.rest.v2.http.HttpPipeline}'s policy objects. Most applications do not need to pass
* arbitrary data to the pipeline and can pass {@code Context.NONE} or {@code null}. Each context object is
* immutable. The {@code withContext} with data method creates a new {@code Context} object that refers to
* its parent, forming a linked list.
*
* @return Emits the successful response.
*
* @apiNote ## Sample Code \n
* [!code-java[Sample_Code](../azure-storage-java/src/test/java/com/microsoft/azure/storage/Samples.java?name=account_info "Sample code for ServiceURL.getAccountInfo")] \n
* For more samples, please see the [Samples file] (https://github.com/Azure/azure-storage-java/blob/master/src/test/java/com/microsoft/azure/storage/Samples.java)
*/
public Single getAccountInfo(Context context) {
context = context == null ? Context.NONE : context;
return addErrorWrappingToSingle(
this.storageClient.generatedServices().getAccountInfoWithRestResponseAsync(context));
}
}