Skip to content
This repository was archived by the owner on Oct 6, 2020. It is now read-only.

Commit 5127783

Browse files
author
Francesco Cogno
authored
Replace x-www-form-url encoding with percent encoding in blob/container signature generation (#318)
* replace form url encoding with percent encoding * fixed example missing a dependency * less verbose code * less verbose code (forgot some :)
1 parent 2b48b8a commit 5127783

File tree

3 files changed

+19
-19
lines changed

3 files changed

+19
-19
lines changed

azure_sdk_storage_blob/Cargo.toml

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "azure_sdk_storage_blob"
3-
version = "0.45.2"
3+
version = "0.45.3"
44
description = "Rust wrappers around Microsoft Azure REST APIs - Blob storage crate"
55
readme = "README.md"
66
authors = ["Francesco Cogno <[email protected]>", "Max Gortman <[email protected]>", "Dong Liu <[email protected]>"]
@@ -28,13 +28,14 @@ log = "0.4"
2828
serde = "1.0"
2929
serde_derive = "1.0"
3030
serde-xml-rs = "0.4"
31-
url = "2.1"
3231
uuid = { version = "0.8", features = ["v4"] }
32+
percent-encoding = "2.1"
3333

3434
[dev-dependencies]
3535
env_logger = "0.7"
3636
tokio = { version = "0.2", features = ["macros"] }
3737
azure_sdk_auth_aad = { path = "../azure_sdk_auth_aad" }
38+
url = "2.1"
3839

3940
[features]
4041
default = [ "azure_sdk_core" ]

azure_sdk_storage_blob/src/blob/mod.rs

+13-14
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,6 @@ use azure_sdk_core::headers::{
2121
COPY_SOURCE, COPY_STATUS, COPY_STATUS_DESCRIPTION, CREATION_TIME, LEASE_DURATION, LEASE_STATE,
2222
LEASE_STATUS, SERVER_ENCRYPTED,
2323
};
24-
use azure_sdk_storage_core::Client;
25-
use chrono::{DateTime, Utc};
26-
use hyper::header;
27-
use std::borrow::Borrow;
28-
use std::collections::HashMap;
29-
use std::str::FromStr;
30-
use url::form_urlencoded;
31-
use xml::Element;
32-
use xml::Xml::ElementNode;
33-
3424
use azure_sdk_core::{
3525
errors::{AzureError, TraversingError},
3626
incompletevector::IncompleteVector,
@@ -39,6 +29,15 @@ use azure_sdk_core::{
3929
range::Range,
4030
util::HeaderMapExt,
4131
};
32+
use azure_sdk_storage_core::Client;
33+
use chrono::{DateTime, Utc};
34+
use hyper::header;
35+
use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
36+
use std::borrow::Borrow;
37+
use std::collections::HashMap;
38+
use std::str::FromStr;
39+
use xml::Element;
40+
use xml::Xml::ElementNode;
4241

4342
#[cfg(feature = "azurite_workaround")]
4443
fn get_creation_time(h: &header::HeaderMap) -> Result<Option<DateTime<Utc>>, AzureError> {
@@ -464,15 +463,15 @@ where
464463
Some(ref params) => format!(
465464
"{}/{}/{}?{}",
466465
t.blob_uri(),
467-
form_urlencoded::byte_serialize(container_name.as_bytes()).collect::<String>(),
468-
form_urlencoded::byte_serialize(blob_name.as_bytes()).collect::<String>(),
466+
utf8_percent_encode(container_name, NON_ALPHANUMERIC),
467+
utf8_percent_encode(blob_name, NON_ALPHANUMERIC),
469468
params
470469
),
471470
None => format!(
472471
"{}/{}/{}",
473472
t.blob_uri(),
474-
form_urlencoded::byte_serialize(container_name.as_bytes()).collect::<String>(),
475-
form_urlencoded::byte_serialize(blob_name.as_bytes()).collect::<String>(),
473+
utf8_percent_encode(container_name, NON_ALPHANUMERIC),
474+
utf8_percent_encode(blob_name, NON_ALPHANUMERIC),
476475
),
477476
}
478477
}

azure_sdk_storage_blob/src/container/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ use http::request::Builder;
1818
use http::HeaderMap;
1919
use hyper::header;
2020
use hyper::header::HeaderName;
21+
use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
2122
use std::collections::HashMap;
2223
use std::str::FromStr;
23-
use url::form_urlencoded;
2424
use xml::{Element, Xml};
2525

2626
create_enum!(
@@ -285,13 +285,13 @@ where
285285
Some(ref params) => format!(
286286
"{}/{}?{}",
287287
c.blob_uri(),
288-
form_urlencoded::byte_serialize(container_name.as_bytes()).collect::<String>(),
288+
utf8_percent_encode(container_name, NON_ALPHANUMERIC),
289289
params
290290
),
291291
None => format!(
292292
"{}/{}",
293293
c.blob_uri(),
294-
form_urlencoded::byte_serialize(container_name.as_bytes()).collect::<String>(),
294+
utf8_percent_encode(container_name, NON_ALPHANUMERIC),
295295
),
296296
}
297297
}

0 commit comments

Comments
 (0)