use of com.microsoft.azure.storage.blob.models.BlobHTTPHeaders in project geowebcache by GeoWebCache.
the class AzureClient method putProperties.
public void putProperties(String resourceKey, Properties properties) throws StorageException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
properties.store(out, "");
} catch (IOException e) {
throw new RuntimeException(e);
}
try {
BlockBlobURL blob = getBlockBlobURL(resourceKey);
byte[] bytes = out.toByteArray();
ByteBuffer buffer = ByteBuffer.wrap(bytes);
BlobHTTPHeaders headers = new BlobHTTPHeaders();
headers.withBlobContentType("text/plain");
int status = blob.upload(Flowable.just(buffer), bytes.length, headers, null, null, null).blockingGet().statusCode();
if (!HttpStatus.valueOf(status).is2xxSuccessful()) {
throw new StorageException("Upload request failed with status " + status + " on resource " + resourceKey);
}
} catch (RestException e) {
throw new StorageException("Failed to update e property file at " + resourceKey, e);
}
}
use of com.microsoft.azure.storage.blob.models.BlobHTTPHeaders in project geowebcache by GeoWebCache.
the class AzureBlobStore method put.
@Override
public void put(TileObject obj) throws StorageException {
final Resource blob = obj.getBlob();
checkNotNull(blob);
checkNotNull(obj.getBlobFormat());
final String key = keyBuilder.forTile(obj);
BlockBlobURL blobURL = client.getBlockBlobURL(key);
// if there are listeners, gather first the old size with a "head" request
Long oldSize = null;
boolean existed = false;
if (!listeners.isEmpty()) {
try {
BlobGetPropertiesResponse properties = blobURL.getProperties().blockingGet();
oldSize = properties.headers().contentLength();
existed = true;
} catch (RestException e) {
if (e.response().statusCode() != HttpStatus.NOT_FOUND.value()) {
throw new StorageException("Failed to check if the container exists", e);
}
}
}
// then upload
try (InputStream is = blob.getInputStream()) {
byte[] bytes = IOUtils.toByteArray(is);
ByteBuffer buffer = ByteBuffer.wrap(bytes);
String mimeType = MimeType.createFromFormat(obj.getBlobFormat()).getMimeType();
BlobHTTPHeaders headers = new BlobHTTPHeaders().withBlobContentType(mimeType);
int status = blobURL.upload(Flowable.just(buffer), bytes.length, headers, null, null, null).blockingGet().statusCode();
if (!HttpStatus.valueOf(status).is2xxSuccessful()) {
throw new StorageException("Failed to upload tile to Azure on container " + client.getContainerName() + " and key " + key + " got HTTP status " + status);
}
} catch (RestException | IOException | MimeException e) {
throw new StorageException("Failed to upload tile to Azure on container " + client.getContainerName() + " and key " + key, e);
}
// along with the metadata
putParametersMetadata(obj.getLayerName(), obj.getParametersId(), obj.getParameters());
// This is important because listeners may be tracking tile existence
if (!listeners.isEmpty()) {
if (existed) {
listeners.sendTileUpdated(obj, oldSize);
} else {
listeners.sendTileStored(obj);
}
}
}
Aggregations