#![cfg(all(test, feature = "test_e2e"))]
extern crate azure_sdk_for_rust;
extern crate chrono;
extern crate env_logger;
extern crate futures;
extern crate hyper;
extern crate tokio_core;
#[macro_use]
extern crate log;
extern crate md5;
extern crate serde;
extern crate uuid;
use azure_sdk_for_rust::core::errors::AzureError;
use azure_sdk_for_rust::prelude::*;
use azure_sdk_for_rust::storage::container::{PublicAccess, PublicAccessSupport};
use std::collections::HashMap;
use tokio_core::reactor::Core;
#[test]
fn put_append_blob() {
let (client, mut core) = initialize().unwrap();
let blob_name: &'static str = "append_blob.txt";
let container_name: &'static str = "rust-upload-test";
let data = b"abcdef";
if core
.run(client.list_containers().finalize())
.unwrap()
.incomplete_vector
.iter()
.find(|x| x.name == container_name)
.is_none()
{
core.run(
client
.create_container()
.with_container_name(container_name)
.with_public_access(PublicAccess::Blob)
.finalize(),
)
.unwrap();
}
let mut metadata = HashMap::new();
metadata.insert("attrib", "value");
metadata.insert("second", "something");
let _digest = md5::compute(&data[..]);
let future = client
.put_append_blob()
.with_container_name(&container_name)
.with_blob_name(&blob_name)
.with_content_type("text/plain")
.with_metadata(&metadata)
.finalize();
core.run(future).unwrap();
trace!("created {:?}", blob_name);
}
fn initialize() -> Result<(Client, Core), AzureError> {
let account = std::env::var("STORAGE_ACCOUNT").expect("Set env variable STORAGE_ACCOUNT first!");
let master_key = std::env::var("STORAGE_MASTER_KEY").expect("Set env variable STORAGE_MASTER_KEY first!");
let core = Core::new()?;
Ok((Client::new(&account, &master_key)?, core))
}