├── .gitignore ├── README.md ├── Cargo.toml ├── src └── lib.rs └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk 3 | .idea/ 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Dayu 2 | #### A Rust Implement for Alibaba's Dayu SMS SDK. 3 | 4 | Since Version 0.3, we just support async edition, if you need sync edition, keep use 0.2 version. 5 | 6 | - [x] Support SMS Send 7 | - [x] Support SMS Query 8 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "dayu" 3 | version = "0.4.3" 4 | authors = ["Matrix <113445886@qq.com>"] 5 | description = "Alibaba's Dayu SMS SDK for Rust." 6 | license = "MIT" 7 | keywords = ["sms", "dayu"] 8 | repository = "https://github.com/Matrix-Zhang/dayu_rs" 9 | readme = "README.md" 10 | edition = "2021" 11 | 12 | [dependencies] 13 | base64 = "0.13" 14 | chrono = "0.4" 15 | futures-util = "0.3" 16 | openssl = "0.10" 17 | reqwest = { version = "0.11", features = ["json"] } 18 | serde = { "version" = "1.0", features = ["derive"] } 19 | serde_json = "1.0" 20 | textnonce = "1.0" 21 | thiserror = "1.0" 22 | url = "2.3" 23 | urlencoding = "2.1" 24 | 25 | [dev-dependencies] 26 | tokio = "1.21" -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | 3 | // Copyright (c) 2018 Matrix.Zhang <113445886@qq.com> 4 | 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | // this software and associated documentation files (the "Software"), to deal in 7 | // the Software without restriction, including without limitation the rights to 8 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | // the Software, and to permit persons to whom the Software is furnished to do so, 10 | // subject to the following conditions: 11 | 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | //! This library supports Alibaba's Dayu SMS SDK version of '2017-05-25'. 23 | //! 24 | //! ## Basic usage 25 | //! 26 | //! ```rust 27 | //!use dayu::Dayu; 28 | //!use serde_json::json; 29 | //! 30 | //!let dayu = Dayu::new() 31 | //! .set_access_key("access_key") 32 | //! .set_access_secret("access_secret") 33 | //! .set_sign_name("阿里云测试短信"); 34 | //!dayu.sms_send(&["138XXXXXXXX"], "SMS_123456", Some(&json!({"customer": "Rust"}))).await.unwrap(); 35 | //! ``` 36 | 37 | use std::{ 38 | collections::BTreeMap, 39 | convert::AsRef, 40 | fmt::{self, Display, Formatter}, 41 | }; 42 | 43 | use chrono::{NaiveDate, Utc}; 44 | use futures_util::TryFutureExt; 45 | use openssl::{hash::MessageDigest, pkey::PKey, sign::Signer}; 46 | use reqwest::Client; 47 | use serde::{Deserialize, Serialize}; 48 | use serde_json::Value; 49 | use textnonce::TextNonce; 50 | use thiserror::Error; 51 | use url::Url; 52 | 53 | static MAX_PAGE_SIZE: u8 = 50; 54 | static REQUEST_FORMAT: &str = "JSON"; 55 | static SIGN_METHOD: &str = "HMAC-SHA1"; 56 | static SIGNATURE_VERSION: &str = "1.0"; 57 | static VERSION: &str = "2017-05-25"; 58 | 59 | #[derive(Debug, Error)] 60 | pub enum DayuError { 61 | #[error("config of '{0}' absence")] 62 | ConfigAbsence(&'static str), 63 | #[error("dayu response error: {0}")] 64 | Dayu(DayuFailResponse), 65 | #[error("openssl error: {0}")] 66 | Openssl(#[from] openssl::error::ErrorStack), 67 | #[error("page size '{0}' too large, max is 50")] 68 | PageTooLarge(u8), 69 | #[error("reqwest error: {0}")] 70 | Reqwest(#[from] reqwest::Error), 71 | #[error("serde_json error: {0}")] 72 | SerdeJson(#[from] serde_json::error::Error), 73 | #[error("std io error: {0}")] 74 | Stdio(#[from] std::io::Error), 75 | #[error("textnonce error: {0}")] 76 | TextNonce(String), 77 | #[error("url parse error: {0}")] 78 | UrlParse(#[from] url::ParseError), 79 | } 80 | 81 | #[derive(Debug, Deserialize)] 82 | #[serde(rename_all = "PascalCase")] 83 | pub struct DayuSendResponse { 84 | pub biz_id: String, 85 | } 86 | 87 | #[derive(Debug, Deserialize)] 88 | #[serde(rename_all = "PascalCase")] 89 | pub struct DayuQueryDetail { 90 | pub phone_num: String, 91 | pub send_date: String, 92 | pub send_status: u8, 93 | pub receive_date: String, 94 | pub template_code: String, 95 | pub content: String, 96 | pub err_code: String, 97 | } 98 | 99 | #[derive(Debug, Deserialize)] 100 | pub struct DayuQueryDetails { 101 | #[serde(rename = "SmsSendDetailDTO")] 102 | pub inner: Vec, 103 | } 104 | 105 | #[derive(Debug, Deserialize)] 106 | #[serde(rename_all = "PascalCase")] 107 | pub struct DayuQueryResponse { 108 | pub total_count: i32, 109 | pub total_page: Option, 110 | #[serde(rename = "SmsSendDetailDTOs")] 111 | pub details: Option, 112 | } 113 | 114 | #[derive(Debug, Deserialize, Serialize)] 115 | #[serde(rename_all = "PascalCase")] 116 | pub struct DayuFailResponse { 117 | pub code: String, 118 | pub message: String, 119 | pub request_id: String, 120 | } 121 | 122 | impl Display for DayuFailResponse { 123 | fn fmt(&self, f: &mut Formatter) -> fmt::Result { 124 | write!(f, "{}", serde_json::to_string_pretty(self).unwrap()) 125 | } 126 | } 127 | 128 | #[derive(Debug, Deserialize)] 129 | #[serde(untagged)] 130 | pub enum DayuResponse { 131 | Send(DayuSendResponse), 132 | Query(DayuQueryResponse), 133 | Fail(DayuFailResponse), 134 | } 135 | 136 | #[derive(Default, Clone)] 137 | pub struct Dayu { 138 | client: Client, 139 | access_key: String, 140 | access_secret: String, 141 | sign_name: String, 142 | } 143 | 144 | fn make_url(dayu: &Dayu, action: &str, params: &[(&str, &str)]) -> Result { 145 | if dayu.access_key.is_empty() { 146 | return Err(DayuError::ConfigAbsence("access_key")); 147 | } 148 | 149 | if dayu.access_secret.is_empty() { 150 | return Err(DayuError::ConfigAbsence("access_secret")); 151 | } 152 | 153 | if dayu.sign_name.is_empty() { 154 | return Err(DayuError::ConfigAbsence("sign_name")); 155 | } 156 | 157 | let timestamp = Utc::now().format("%Y-%m-%dT%H:%M:%SZ").to_string(); 158 | 159 | TextNonce::sized(32) 160 | .map_err(DayuError::TextNonce) 161 | .map(|v| v.to_string()) 162 | .and_then(|text_nonce| { 163 | let mut map = BTreeMap::new(); 164 | map.insert("Format", REQUEST_FORMAT); 165 | map.insert("AccessKeyId", &dayu.access_key); 166 | map.insert("SignatureMethod", SIGN_METHOD); 167 | map.insert("SignatureNonce", &text_nonce); 168 | map.insert("SignatureVersion", SIGNATURE_VERSION); 169 | map.insert("Timestamp", ×tamp); 170 | map.insert("Action", action); 171 | map.insert("SignName", &dayu.sign_name); 172 | map.insert("Version", VERSION); 173 | 174 | for &(name, value) in params { 175 | if !value.is_empty() { 176 | map.insert(name, value); 177 | } 178 | } 179 | 180 | let mut forms = map 181 | .into_iter() 182 | .map(|(key, value)| (key, urlencoding::encode(value).into_owned())) 183 | .collect::>(); 184 | 185 | let mut wait_sign = String::from("GET&%2F&"); 186 | wait_sign.push_str( 187 | &forms 188 | .iter() 189 | .fold(vec![], |mut wait_sign, &(key, ref value)| { 190 | wait_sign 191 | .push(urlencoding::encode(&format!("{}={}", key, value)).into_owned()); 192 | wait_sign 193 | }) 194 | .join(&urlencoding::encode("&")), 195 | ); 196 | 197 | PKey::hmac(format!("{}&", &dayu.access_secret).as_bytes()) 198 | .and_then(|pkey| { 199 | Signer::new(MessageDigest::sha1(), &pkey).and_then(|mut signer| { 200 | signer 201 | .update(wait_sign.as_bytes()) 202 | .and_then(|_| signer.sign_to_vec()) 203 | }) 204 | }) 205 | .map_err(Into::into) 206 | .map(|ref signature| { 207 | forms.push(( 208 | "Signature", 209 | urlencoding::encode(&base64::encode(signature)).into_owned(), 210 | )) 211 | }) 212 | .and_then(|_| { 213 | Url::parse("https://dysmsapi.aliyuncs.com") 214 | .map_err(Into::into) 215 | .map(|mut url| { 216 | url.set_query(Some( 217 | &forms 218 | .into_iter() 219 | .map(|(key, value)| format!("{}={}", key, value)) 220 | .collect::>() 221 | .join("&"), 222 | )); 223 | url 224 | }) 225 | }) 226 | }) 227 | } 228 | 229 | macro_rules! do_request { 230 | ($dayu:expr, $action:expr, $params:expr, $type:tt) => {{ 231 | let url = make_url($dayu, $action, $params)?; 232 | $dayu 233 | .client 234 | .get(url) 235 | .send() 236 | .and_then(|response| response.json::()) 237 | .await 238 | .map_err(Into::into) 239 | .and_then(|json_response| match json_response { 240 | DayuResponse::$type(v) => Ok(v), 241 | DayuResponse::Fail(fail) => Err(DayuError::Dayu(fail)), 242 | _ => unreachable!(), 243 | }) 244 | }}; 245 | } 246 | 247 | impl Dayu { 248 | /// construct new dayu sdk instance 249 | pub fn new() -> Self { 250 | Self::default() 251 | } 252 | 253 | /// set dayu sdk's access key 254 | pub fn set_access_key(mut self, access_key: impl Into) -> Self { 255 | self.access_key = access_key.into(); 256 | self 257 | } 258 | 259 | /// set dayu sdk's access secret 260 | pub fn set_access_secret(mut self, access_secret: impl Into) -> Self { 261 | self.access_secret = access_secret.into(); 262 | self 263 | } 264 | 265 | /// set dayu sdk's sign name 266 | pub fn set_sign_name(mut self, sign_name: impl Into) -> Self { 267 | self.sign_name = sign_name.into(); 268 | self 269 | } 270 | 271 | /// start send sms 272 | /// phones: support multi phone number 273 | /// template_code: SMS TEMPLATE CODE 274 | /// template_param: SMS TEMPLATE PARAMS as JSON 275 | pub async fn sms_send, T: AsRef>( 276 | &self, 277 | phones: &[P], 278 | template_code: T, 279 | template_param: Option<&Value>, 280 | ) -> Result { 281 | let phone_numbers = phones 282 | .iter() 283 | .map(AsRef::as_ref) 284 | .collect::>() 285 | .join(","); 286 | 287 | let template_param = template_param 288 | .map(|v| serde_json::to_string(v).unwrap()) 289 | .unwrap_or_else(String::new); 290 | 291 | do_request!( 292 | self, 293 | "SendSms", 294 | &[ 295 | ("TemplateCode", template_code.as_ref()), 296 | ("PhoneNumbers", &phone_numbers), 297 | ("TemplateParam", &template_param), 298 | ], 299 | Send 300 | ) 301 | } 302 | 303 | /// query sms send detail 304 | pub async fn sms_query( 305 | &self, 306 | phone_number: &str, 307 | biz_id: Option<&str>, 308 | send_date: NaiveDate, 309 | current_page: u8, 310 | page_size: u8, 311 | ) -> Result { 312 | if page_size > MAX_PAGE_SIZE { 313 | return Err(DayuError::PageTooLarge(page_size)); 314 | } 315 | 316 | let send_date = send_date.format("%Y%m%d").to_string(); 317 | let page_size = page_size.to_string(); 318 | let current_page = current_page.to_string(); 319 | 320 | do_request!( 321 | self, 322 | "QuerySendDetails", 323 | &[ 324 | ("PhoneNumber", phone_number), 325 | ("BizId", biz_id.unwrap_or("")), 326 | ("SendDate", &send_date), 327 | ("PageSize", &page_size), 328 | ("CurrentPage", ¤t_page), 329 | ], 330 | Query 331 | ) 332 | } 333 | } 334 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "android_system_properties" 7 | version = "0.1.5" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 10 | dependencies = [ 11 | "libc", 12 | ] 13 | 14 | [[package]] 15 | name = "autocfg" 16 | version = "1.1.0" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 19 | 20 | [[package]] 21 | name = "base64" 22 | version = "0.12.3" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" 25 | 26 | [[package]] 27 | name = "base64" 28 | version = "0.13.1" 29 | source = "registry+https://github.com/rust-lang/crates.io-index" 30 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 31 | 32 | [[package]] 33 | name = "bitflags" 34 | version = "1.3.2" 35 | source = "registry+https://github.com/rust-lang/crates.io-index" 36 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 37 | 38 | [[package]] 39 | name = "bumpalo" 40 | version = "3.11.1" 41 | source = "registry+https://github.com/rust-lang/crates.io-index" 42 | checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" 43 | 44 | [[package]] 45 | name = "bytes" 46 | version = "1.2.1" 47 | source = "registry+https://github.com/rust-lang/crates.io-index" 48 | checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" 49 | 50 | [[package]] 51 | name = "cc" 52 | version = "1.0.76" 53 | source = "registry+https://github.com/rust-lang/crates.io-index" 54 | checksum = "76a284da2e6fe2092f2353e51713435363112dfd60030e22add80be333fb928f" 55 | 56 | [[package]] 57 | name = "cfg-if" 58 | version = "1.0.0" 59 | source = "registry+https://github.com/rust-lang/crates.io-index" 60 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 61 | 62 | [[package]] 63 | name = "chrono" 64 | version = "0.4.23" 65 | source = "registry+https://github.com/rust-lang/crates.io-index" 66 | checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" 67 | dependencies = [ 68 | "iana-time-zone", 69 | "js-sys", 70 | "num-integer", 71 | "num-traits", 72 | "time", 73 | "wasm-bindgen", 74 | "winapi", 75 | ] 76 | 77 | [[package]] 78 | name = "codespan-reporting" 79 | version = "0.11.1" 80 | source = "registry+https://github.com/rust-lang/crates.io-index" 81 | checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" 82 | dependencies = [ 83 | "termcolor", 84 | "unicode-width", 85 | ] 86 | 87 | [[package]] 88 | name = "core-foundation" 89 | version = "0.9.3" 90 | source = "registry+https://github.com/rust-lang/crates.io-index" 91 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 92 | dependencies = [ 93 | "core-foundation-sys", 94 | "libc", 95 | ] 96 | 97 | [[package]] 98 | name = "core-foundation-sys" 99 | version = "0.8.3" 100 | source = "registry+https://github.com/rust-lang/crates.io-index" 101 | checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" 102 | 103 | [[package]] 104 | name = "cxx" 105 | version = "1.0.81" 106 | source = "registry+https://github.com/rust-lang/crates.io-index" 107 | checksum = "97abf9f0eca9e52b7f81b945524e76710e6cb2366aead23b7d4fbf72e281f888" 108 | dependencies = [ 109 | "cc", 110 | "cxxbridge-flags", 111 | "cxxbridge-macro", 112 | "link-cplusplus", 113 | ] 114 | 115 | [[package]] 116 | name = "cxx-build" 117 | version = "1.0.81" 118 | source = "registry+https://github.com/rust-lang/crates.io-index" 119 | checksum = "7cc32cc5fea1d894b77d269ddb9f192110069a8a9c1f1d441195fba90553dea3" 120 | dependencies = [ 121 | "cc", 122 | "codespan-reporting", 123 | "once_cell", 124 | "proc-macro2", 125 | "quote", 126 | "scratch", 127 | "syn", 128 | ] 129 | 130 | [[package]] 131 | name = "cxxbridge-flags" 132 | version = "1.0.81" 133 | source = "registry+https://github.com/rust-lang/crates.io-index" 134 | checksum = "8ca220e4794c934dc6b1207c3b42856ad4c302f2df1712e9f8d2eec5afaacf1f" 135 | 136 | [[package]] 137 | name = "cxxbridge-macro" 138 | version = "1.0.81" 139 | source = "registry+https://github.com/rust-lang/crates.io-index" 140 | checksum = "b846f081361125bfc8dc9d3940c84e1fd83ba54bbca7b17cd29483c828be0704" 141 | dependencies = [ 142 | "proc-macro2", 143 | "quote", 144 | "syn", 145 | ] 146 | 147 | [[package]] 148 | name = "dayu" 149 | version = "0.4.3" 150 | dependencies = [ 151 | "base64 0.13.1", 152 | "chrono", 153 | "futures-util", 154 | "openssl", 155 | "reqwest", 156 | "serde", 157 | "serde_json", 158 | "textnonce", 159 | "thiserror", 160 | "tokio", 161 | "url", 162 | "urlencoding", 163 | ] 164 | 165 | [[package]] 166 | name = "encoding_rs" 167 | version = "0.8.31" 168 | source = "registry+https://github.com/rust-lang/crates.io-index" 169 | checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" 170 | dependencies = [ 171 | "cfg-if", 172 | ] 173 | 174 | [[package]] 175 | name = "fastrand" 176 | version = "1.8.0" 177 | source = "registry+https://github.com/rust-lang/crates.io-index" 178 | checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" 179 | dependencies = [ 180 | "instant", 181 | ] 182 | 183 | [[package]] 184 | name = "fnv" 185 | version = "1.0.7" 186 | source = "registry+https://github.com/rust-lang/crates.io-index" 187 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 188 | 189 | [[package]] 190 | name = "foreign-types" 191 | version = "0.3.2" 192 | source = "registry+https://github.com/rust-lang/crates.io-index" 193 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 194 | dependencies = [ 195 | "foreign-types-shared", 196 | ] 197 | 198 | [[package]] 199 | name = "foreign-types-shared" 200 | version = "0.1.1" 201 | source = "registry+https://github.com/rust-lang/crates.io-index" 202 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 203 | 204 | [[package]] 205 | name = "form_urlencoded" 206 | version = "1.1.0" 207 | source = "registry+https://github.com/rust-lang/crates.io-index" 208 | checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" 209 | dependencies = [ 210 | "percent-encoding", 211 | ] 212 | 213 | [[package]] 214 | name = "futures-channel" 215 | version = "0.3.25" 216 | source = "registry+https://github.com/rust-lang/crates.io-index" 217 | checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" 218 | dependencies = [ 219 | "futures-core", 220 | ] 221 | 222 | [[package]] 223 | name = "futures-core" 224 | version = "0.3.25" 225 | source = "registry+https://github.com/rust-lang/crates.io-index" 226 | checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" 227 | 228 | [[package]] 229 | name = "futures-macro" 230 | version = "0.3.25" 231 | source = "registry+https://github.com/rust-lang/crates.io-index" 232 | checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" 233 | dependencies = [ 234 | "proc-macro2", 235 | "quote", 236 | "syn", 237 | ] 238 | 239 | [[package]] 240 | name = "futures-sink" 241 | version = "0.3.25" 242 | source = "registry+https://github.com/rust-lang/crates.io-index" 243 | checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" 244 | 245 | [[package]] 246 | name = "futures-task" 247 | version = "0.3.25" 248 | source = "registry+https://github.com/rust-lang/crates.io-index" 249 | checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" 250 | 251 | [[package]] 252 | name = "futures-util" 253 | version = "0.3.25" 254 | source = "registry+https://github.com/rust-lang/crates.io-index" 255 | checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" 256 | dependencies = [ 257 | "futures-core", 258 | "futures-macro", 259 | "futures-task", 260 | "pin-project-lite", 261 | "pin-utils", 262 | "slab", 263 | ] 264 | 265 | [[package]] 266 | name = "getrandom" 267 | version = "0.1.16" 268 | source = "registry+https://github.com/rust-lang/crates.io-index" 269 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 270 | dependencies = [ 271 | "cfg-if", 272 | "libc", 273 | "wasi 0.9.0+wasi-snapshot-preview1", 274 | ] 275 | 276 | [[package]] 277 | name = "h2" 278 | version = "0.3.15" 279 | source = "registry+https://github.com/rust-lang/crates.io-index" 280 | checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" 281 | dependencies = [ 282 | "bytes", 283 | "fnv", 284 | "futures-core", 285 | "futures-sink", 286 | "futures-util", 287 | "http", 288 | "indexmap", 289 | "slab", 290 | "tokio", 291 | "tokio-util", 292 | "tracing", 293 | ] 294 | 295 | [[package]] 296 | name = "hashbrown" 297 | version = "0.12.3" 298 | source = "registry+https://github.com/rust-lang/crates.io-index" 299 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 300 | 301 | [[package]] 302 | name = "http" 303 | version = "0.2.8" 304 | source = "registry+https://github.com/rust-lang/crates.io-index" 305 | checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" 306 | dependencies = [ 307 | "bytes", 308 | "fnv", 309 | "itoa", 310 | ] 311 | 312 | [[package]] 313 | name = "http-body" 314 | version = "0.4.5" 315 | source = "registry+https://github.com/rust-lang/crates.io-index" 316 | checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" 317 | dependencies = [ 318 | "bytes", 319 | "http", 320 | "pin-project-lite", 321 | ] 322 | 323 | [[package]] 324 | name = "httparse" 325 | version = "1.8.0" 326 | source = "registry+https://github.com/rust-lang/crates.io-index" 327 | checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" 328 | 329 | [[package]] 330 | name = "httpdate" 331 | version = "1.0.2" 332 | source = "registry+https://github.com/rust-lang/crates.io-index" 333 | checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" 334 | 335 | [[package]] 336 | name = "hyper" 337 | version = "0.14.23" 338 | source = "registry+https://github.com/rust-lang/crates.io-index" 339 | checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" 340 | dependencies = [ 341 | "bytes", 342 | "futures-channel", 343 | "futures-core", 344 | "futures-util", 345 | "h2", 346 | "http", 347 | "http-body", 348 | "httparse", 349 | "httpdate", 350 | "itoa", 351 | "pin-project-lite", 352 | "socket2", 353 | "tokio", 354 | "tower-service", 355 | "tracing", 356 | "want", 357 | ] 358 | 359 | [[package]] 360 | name = "hyper-tls" 361 | version = "0.5.0" 362 | source = "registry+https://github.com/rust-lang/crates.io-index" 363 | checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" 364 | dependencies = [ 365 | "bytes", 366 | "hyper", 367 | "native-tls", 368 | "tokio", 369 | "tokio-native-tls", 370 | ] 371 | 372 | [[package]] 373 | name = "iana-time-zone" 374 | version = "0.1.53" 375 | source = "registry+https://github.com/rust-lang/crates.io-index" 376 | checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" 377 | dependencies = [ 378 | "android_system_properties", 379 | "core-foundation-sys", 380 | "iana-time-zone-haiku", 381 | "js-sys", 382 | "wasm-bindgen", 383 | "winapi", 384 | ] 385 | 386 | [[package]] 387 | name = "iana-time-zone-haiku" 388 | version = "0.1.1" 389 | source = "registry+https://github.com/rust-lang/crates.io-index" 390 | checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" 391 | dependencies = [ 392 | "cxx", 393 | "cxx-build", 394 | ] 395 | 396 | [[package]] 397 | name = "idna" 398 | version = "0.3.0" 399 | source = "registry+https://github.com/rust-lang/crates.io-index" 400 | checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" 401 | dependencies = [ 402 | "unicode-bidi", 403 | "unicode-normalization", 404 | ] 405 | 406 | [[package]] 407 | name = "indexmap" 408 | version = "1.9.1" 409 | source = "registry+https://github.com/rust-lang/crates.io-index" 410 | checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" 411 | dependencies = [ 412 | "autocfg", 413 | "hashbrown", 414 | ] 415 | 416 | [[package]] 417 | name = "instant" 418 | version = "0.1.12" 419 | source = "registry+https://github.com/rust-lang/crates.io-index" 420 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 421 | dependencies = [ 422 | "cfg-if", 423 | ] 424 | 425 | [[package]] 426 | name = "ipnet" 427 | version = "2.5.1" 428 | source = "registry+https://github.com/rust-lang/crates.io-index" 429 | checksum = "f88c5561171189e69df9d98bcf18fd5f9558300f7ea7b801eb8a0fd748bd8745" 430 | 431 | [[package]] 432 | name = "itoa" 433 | version = "1.0.4" 434 | source = "registry+https://github.com/rust-lang/crates.io-index" 435 | checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" 436 | 437 | [[package]] 438 | name = "js-sys" 439 | version = "0.3.60" 440 | source = "registry+https://github.com/rust-lang/crates.io-index" 441 | checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" 442 | dependencies = [ 443 | "wasm-bindgen", 444 | ] 445 | 446 | [[package]] 447 | name = "lazy_static" 448 | version = "1.4.0" 449 | source = "registry+https://github.com/rust-lang/crates.io-index" 450 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 451 | 452 | [[package]] 453 | name = "libc" 454 | version = "0.2.137" 455 | source = "registry+https://github.com/rust-lang/crates.io-index" 456 | checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" 457 | 458 | [[package]] 459 | name = "link-cplusplus" 460 | version = "1.0.7" 461 | source = "registry+https://github.com/rust-lang/crates.io-index" 462 | checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" 463 | dependencies = [ 464 | "cc", 465 | ] 466 | 467 | [[package]] 468 | name = "log" 469 | version = "0.4.17" 470 | source = "registry+https://github.com/rust-lang/crates.io-index" 471 | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" 472 | dependencies = [ 473 | "cfg-if", 474 | ] 475 | 476 | [[package]] 477 | name = "memchr" 478 | version = "2.5.0" 479 | source = "registry+https://github.com/rust-lang/crates.io-index" 480 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 481 | 482 | [[package]] 483 | name = "mime" 484 | version = "0.3.16" 485 | source = "registry+https://github.com/rust-lang/crates.io-index" 486 | checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" 487 | 488 | [[package]] 489 | name = "mio" 490 | version = "0.8.5" 491 | source = "registry+https://github.com/rust-lang/crates.io-index" 492 | checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" 493 | dependencies = [ 494 | "libc", 495 | "log", 496 | "wasi 0.11.0+wasi-snapshot-preview1", 497 | "windows-sys 0.42.0", 498 | ] 499 | 500 | [[package]] 501 | name = "native-tls" 502 | version = "0.2.11" 503 | source = "registry+https://github.com/rust-lang/crates.io-index" 504 | checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" 505 | dependencies = [ 506 | "lazy_static", 507 | "libc", 508 | "log", 509 | "openssl", 510 | "openssl-probe", 511 | "openssl-sys", 512 | "schannel", 513 | "security-framework", 514 | "security-framework-sys", 515 | "tempfile", 516 | ] 517 | 518 | [[package]] 519 | name = "num-integer" 520 | version = "0.1.45" 521 | source = "registry+https://github.com/rust-lang/crates.io-index" 522 | checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" 523 | dependencies = [ 524 | "autocfg", 525 | "num-traits", 526 | ] 527 | 528 | [[package]] 529 | name = "num-traits" 530 | version = "0.2.15" 531 | source = "registry+https://github.com/rust-lang/crates.io-index" 532 | checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" 533 | dependencies = [ 534 | "autocfg", 535 | ] 536 | 537 | [[package]] 538 | name = "once_cell" 539 | version = "1.16.0" 540 | source = "registry+https://github.com/rust-lang/crates.io-index" 541 | checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" 542 | 543 | [[package]] 544 | name = "openssl" 545 | version = "0.10.42" 546 | source = "registry+https://github.com/rust-lang/crates.io-index" 547 | checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13" 548 | dependencies = [ 549 | "bitflags", 550 | "cfg-if", 551 | "foreign-types", 552 | "libc", 553 | "once_cell", 554 | "openssl-macros", 555 | "openssl-sys", 556 | ] 557 | 558 | [[package]] 559 | name = "openssl-macros" 560 | version = "0.1.0" 561 | source = "registry+https://github.com/rust-lang/crates.io-index" 562 | checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" 563 | dependencies = [ 564 | "proc-macro2", 565 | "quote", 566 | "syn", 567 | ] 568 | 569 | [[package]] 570 | name = "openssl-probe" 571 | version = "0.1.5" 572 | source = "registry+https://github.com/rust-lang/crates.io-index" 573 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 574 | 575 | [[package]] 576 | name = "openssl-sys" 577 | version = "0.9.77" 578 | source = "registry+https://github.com/rust-lang/crates.io-index" 579 | checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a" 580 | dependencies = [ 581 | "autocfg", 582 | "cc", 583 | "libc", 584 | "pkg-config", 585 | "vcpkg", 586 | ] 587 | 588 | [[package]] 589 | name = "percent-encoding" 590 | version = "2.2.0" 591 | source = "registry+https://github.com/rust-lang/crates.io-index" 592 | checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" 593 | 594 | [[package]] 595 | name = "pin-project-lite" 596 | version = "0.2.9" 597 | source = "registry+https://github.com/rust-lang/crates.io-index" 598 | checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" 599 | 600 | [[package]] 601 | name = "pin-utils" 602 | version = "0.1.0" 603 | source = "registry+https://github.com/rust-lang/crates.io-index" 604 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 605 | 606 | [[package]] 607 | name = "pkg-config" 608 | version = "0.3.26" 609 | source = "registry+https://github.com/rust-lang/crates.io-index" 610 | checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" 611 | 612 | [[package]] 613 | name = "ppv-lite86" 614 | version = "0.2.17" 615 | source = "registry+https://github.com/rust-lang/crates.io-index" 616 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 617 | 618 | [[package]] 619 | name = "proc-macro2" 620 | version = "1.0.47" 621 | source = "registry+https://github.com/rust-lang/crates.io-index" 622 | checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" 623 | dependencies = [ 624 | "unicode-ident", 625 | ] 626 | 627 | [[package]] 628 | name = "quote" 629 | version = "1.0.21" 630 | source = "registry+https://github.com/rust-lang/crates.io-index" 631 | checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" 632 | dependencies = [ 633 | "proc-macro2", 634 | ] 635 | 636 | [[package]] 637 | name = "rand" 638 | version = "0.7.3" 639 | source = "registry+https://github.com/rust-lang/crates.io-index" 640 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 641 | dependencies = [ 642 | "getrandom", 643 | "libc", 644 | "rand_chacha", 645 | "rand_core", 646 | "rand_hc", 647 | ] 648 | 649 | [[package]] 650 | name = "rand_chacha" 651 | version = "0.2.2" 652 | source = "registry+https://github.com/rust-lang/crates.io-index" 653 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 654 | dependencies = [ 655 | "ppv-lite86", 656 | "rand_core", 657 | ] 658 | 659 | [[package]] 660 | name = "rand_core" 661 | version = "0.5.1" 662 | source = "registry+https://github.com/rust-lang/crates.io-index" 663 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 664 | dependencies = [ 665 | "getrandom", 666 | ] 667 | 668 | [[package]] 669 | name = "rand_hc" 670 | version = "0.2.0" 671 | source = "registry+https://github.com/rust-lang/crates.io-index" 672 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 673 | dependencies = [ 674 | "rand_core", 675 | ] 676 | 677 | [[package]] 678 | name = "redox_syscall" 679 | version = "0.2.16" 680 | source = "registry+https://github.com/rust-lang/crates.io-index" 681 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 682 | dependencies = [ 683 | "bitflags", 684 | ] 685 | 686 | [[package]] 687 | name = "remove_dir_all" 688 | version = "0.5.3" 689 | source = "registry+https://github.com/rust-lang/crates.io-index" 690 | checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" 691 | dependencies = [ 692 | "winapi", 693 | ] 694 | 695 | [[package]] 696 | name = "reqwest" 697 | version = "0.11.13" 698 | source = "registry+https://github.com/rust-lang/crates.io-index" 699 | checksum = "68cc60575865c7831548863cc02356512e3f1dc2f3f82cb837d7fc4cc8f3c97c" 700 | dependencies = [ 701 | "base64 0.13.1", 702 | "bytes", 703 | "encoding_rs", 704 | "futures-core", 705 | "futures-util", 706 | "h2", 707 | "http", 708 | "http-body", 709 | "hyper", 710 | "hyper-tls", 711 | "ipnet", 712 | "js-sys", 713 | "log", 714 | "mime", 715 | "native-tls", 716 | "once_cell", 717 | "percent-encoding", 718 | "pin-project-lite", 719 | "serde", 720 | "serde_json", 721 | "serde_urlencoded", 722 | "tokio", 723 | "tokio-native-tls", 724 | "tower-service", 725 | "url", 726 | "wasm-bindgen", 727 | "wasm-bindgen-futures", 728 | "web-sys", 729 | "winreg", 730 | ] 731 | 732 | [[package]] 733 | name = "ryu" 734 | version = "1.0.11" 735 | source = "registry+https://github.com/rust-lang/crates.io-index" 736 | checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" 737 | 738 | [[package]] 739 | name = "schannel" 740 | version = "0.1.20" 741 | source = "registry+https://github.com/rust-lang/crates.io-index" 742 | checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" 743 | dependencies = [ 744 | "lazy_static", 745 | "windows-sys 0.36.1", 746 | ] 747 | 748 | [[package]] 749 | name = "scratch" 750 | version = "1.0.2" 751 | source = "registry+https://github.com/rust-lang/crates.io-index" 752 | checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" 753 | 754 | [[package]] 755 | name = "security-framework" 756 | version = "2.7.0" 757 | source = "registry+https://github.com/rust-lang/crates.io-index" 758 | checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" 759 | dependencies = [ 760 | "bitflags", 761 | "core-foundation", 762 | "core-foundation-sys", 763 | "libc", 764 | "security-framework-sys", 765 | ] 766 | 767 | [[package]] 768 | name = "security-framework-sys" 769 | version = "2.6.1" 770 | source = "registry+https://github.com/rust-lang/crates.io-index" 771 | checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" 772 | dependencies = [ 773 | "core-foundation-sys", 774 | "libc", 775 | ] 776 | 777 | [[package]] 778 | name = "serde" 779 | version = "1.0.147" 780 | source = "registry+https://github.com/rust-lang/crates.io-index" 781 | checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" 782 | dependencies = [ 783 | "serde_derive", 784 | ] 785 | 786 | [[package]] 787 | name = "serde_derive" 788 | version = "1.0.147" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" 791 | dependencies = [ 792 | "proc-macro2", 793 | "quote", 794 | "syn", 795 | ] 796 | 797 | [[package]] 798 | name = "serde_json" 799 | version = "1.0.87" 800 | source = "registry+https://github.com/rust-lang/crates.io-index" 801 | checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" 802 | dependencies = [ 803 | "itoa", 804 | "ryu", 805 | "serde", 806 | ] 807 | 808 | [[package]] 809 | name = "serde_urlencoded" 810 | version = "0.7.1" 811 | source = "registry+https://github.com/rust-lang/crates.io-index" 812 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 813 | dependencies = [ 814 | "form_urlencoded", 815 | "itoa", 816 | "ryu", 817 | "serde", 818 | ] 819 | 820 | [[package]] 821 | name = "slab" 822 | version = "0.4.7" 823 | source = "registry+https://github.com/rust-lang/crates.io-index" 824 | checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" 825 | dependencies = [ 826 | "autocfg", 827 | ] 828 | 829 | [[package]] 830 | name = "socket2" 831 | version = "0.4.7" 832 | source = "registry+https://github.com/rust-lang/crates.io-index" 833 | checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" 834 | dependencies = [ 835 | "libc", 836 | "winapi", 837 | ] 838 | 839 | [[package]] 840 | name = "syn" 841 | version = "1.0.103" 842 | source = "registry+https://github.com/rust-lang/crates.io-index" 843 | checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" 844 | dependencies = [ 845 | "proc-macro2", 846 | "quote", 847 | "unicode-ident", 848 | ] 849 | 850 | [[package]] 851 | name = "tempfile" 852 | version = "3.3.0" 853 | source = "registry+https://github.com/rust-lang/crates.io-index" 854 | checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" 855 | dependencies = [ 856 | "cfg-if", 857 | "fastrand", 858 | "libc", 859 | "redox_syscall", 860 | "remove_dir_all", 861 | "winapi", 862 | ] 863 | 864 | [[package]] 865 | name = "termcolor" 866 | version = "1.1.3" 867 | source = "registry+https://github.com/rust-lang/crates.io-index" 868 | checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" 869 | dependencies = [ 870 | "winapi-util", 871 | ] 872 | 873 | [[package]] 874 | name = "textnonce" 875 | version = "1.0.0" 876 | source = "registry+https://github.com/rust-lang/crates.io-index" 877 | checksum = "7743f8d70cd784ed1dc33106a18998d77758d281dc40dc3e6d050cf0f5286683" 878 | dependencies = [ 879 | "base64 0.12.3", 880 | "rand", 881 | ] 882 | 883 | [[package]] 884 | name = "thiserror" 885 | version = "1.0.37" 886 | source = "registry+https://github.com/rust-lang/crates.io-index" 887 | checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" 888 | dependencies = [ 889 | "thiserror-impl", 890 | ] 891 | 892 | [[package]] 893 | name = "thiserror-impl" 894 | version = "1.0.37" 895 | source = "registry+https://github.com/rust-lang/crates.io-index" 896 | checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" 897 | dependencies = [ 898 | "proc-macro2", 899 | "quote", 900 | "syn", 901 | ] 902 | 903 | [[package]] 904 | name = "time" 905 | version = "0.1.44" 906 | source = "registry+https://github.com/rust-lang/crates.io-index" 907 | checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" 908 | dependencies = [ 909 | "libc", 910 | "wasi 0.10.0+wasi-snapshot-preview1", 911 | "winapi", 912 | ] 913 | 914 | [[package]] 915 | name = "tinyvec" 916 | version = "1.6.0" 917 | source = "registry+https://github.com/rust-lang/crates.io-index" 918 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 919 | dependencies = [ 920 | "tinyvec_macros", 921 | ] 922 | 923 | [[package]] 924 | name = "tinyvec_macros" 925 | version = "0.1.0" 926 | source = "registry+https://github.com/rust-lang/crates.io-index" 927 | checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" 928 | 929 | [[package]] 930 | name = "tokio" 931 | version = "1.21.2" 932 | source = "registry+https://github.com/rust-lang/crates.io-index" 933 | checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" 934 | dependencies = [ 935 | "autocfg", 936 | "bytes", 937 | "libc", 938 | "memchr", 939 | "mio", 940 | "pin-project-lite", 941 | "socket2", 942 | "winapi", 943 | ] 944 | 945 | [[package]] 946 | name = "tokio-native-tls" 947 | version = "0.3.0" 948 | source = "registry+https://github.com/rust-lang/crates.io-index" 949 | checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" 950 | dependencies = [ 951 | "native-tls", 952 | "tokio", 953 | ] 954 | 955 | [[package]] 956 | name = "tokio-util" 957 | version = "0.7.4" 958 | source = "registry+https://github.com/rust-lang/crates.io-index" 959 | checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" 960 | dependencies = [ 961 | "bytes", 962 | "futures-core", 963 | "futures-sink", 964 | "pin-project-lite", 965 | "tokio", 966 | "tracing", 967 | ] 968 | 969 | [[package]] 970 | name = "tower-service" 971 | version = "0.3.2" 972 | source = "registry+https://github.com/rust-lang/crates.io-index" 973 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 974 | 975 | [[package]] 976 | name = "tracing" 977 | version = "0.1.37" 978 | source = "registry+https://github.com/rust-lang/crates.io-index" 979 | checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" 980 | dependencies = [ 981 | "cfg-if", 982 | "pin-project-lite", 983 | "tracing-core", 984 | ] 985 | 986 | [[package]] 987 | name = "tracing-core" 988 | version = "0.1.30" 989 | source = "registry+https://github.com/rust-lang/crates.io-index" 990 | checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" 991 | dependencies = [ 992 | "once_cell", 993 | ] 994 | 995 | [[package]] 996 | name = "try-lock" 997 | version = "0.2.3" 998 | source = "registry+https://github.com/rust-lang/crates.io-index" 999 | checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" 1000 | 1001 | [[package]] 1002 | name = "unicode-bidi" 1003 | version = "0.3.8" 1004 | source = "registry+https://github.com/rust-lang/crates.io-index" 1005 | checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" 1006 | 1007 | [[package]] 1008 | name = "unicode-ident" 1009 | version = "1.0.5" 1010 | source = "registry+https://github.com/rust-lang/crates.io-index" 1011 | checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" 1012 | 1013 | [[package]] 1014 | name = "unicode-normalization" 1015 | version = "0.1.22" 1016 | source = "registry+https://github.com/rust-lang/crates.io-index" 1017 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 1018 | dependencies = [ 1019 | "tinyvec", 1020 | ] 1021 | 1022 | [[package]] 1023 | name = "unicode-width" 1024 | version = "0.1.10" 1025 | source = "registry+https://github.com/rust-lang/crates.io-index" 1026 | checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" 1027 | 1028 | [[package]] 1029 | name = "url" 1030 | version = "2.3.1" 1031 | source = "registry+https://github.com/rust-lang/crates.io-index" 1032 | checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" 1033 | dependencies = [ 1034 | "form_urlencoded", 1035 | "idna", 1036 | "percent-encoding", 1037 | ] 1038 | 1039 | [[package]] 1040 | name = "urlencoding" 1041 | version = "2.1.2" 1042 | source = "registry+https://github.com/rust-lang/crates.io-index" 1043 | checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" 1044 | 1045 | [[package]] 1046 | name = "vcpkg" 1047 | version = "0.2.15" 1048 | source = "registry+https://github.com/rust-lang/crates.io-index" 1049 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 1050 | 1051 | [[package]] 1052 | name = "want" 1053 | version = "0.3.0" 1054 | source = "registry+https://github.com/rust-lang/crates.io-index" 1055 | checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" 1056 | dependencies = [ 1057 | "log", 1058 | "try-lock", 1059 | ] 1060 | 1061 | [[package]] 1062 | name = "wasi" 1063 | version = "0.9.0+wasi-snapshot-preview1" 1064 | source = "registry+https://github.com/rust-lang/crates.io-index" 1065 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 1066 | 1067 | [[package]] 1068 | name = "wasi" 1069 | version = "0.10.0+wasi-snapshot-preview1" 1070 | source = "registry+https://github.com/rust-lang/crates.io-index" 1071 | checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" 1072 | 1073 | [[package]] 1074 | name = "wasi" 1075 | version = "0.11.0+wasi-snapshot-preview1" 1076 | source = "registry+https://github.com/rust-lang/crates.io-index" 1077 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 1078 | 1079 | [[package]] 1080 | name = "wasm-bindgen" 1081 | version = "0.2.83" 1082 | source = "registry+https://github.com/rust-lang/crates.io-index" 1083 | checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" 1084 | dependencies = [ 1085 | "cfg-if", 1086 | "wasm-bindgen-macro", 1087 | ] 1088 | 1089 | [[package]] 1090 | name = "wasm-bindgen-backend" 1091 | version = "0.2.83" 1092 | source = "registry+https://github.com/rust-lang/crates.io-index" 1093 | checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" 1094 | dependencies = [ 1095 | "bumpalo", 1096 | "log", 1097 | "once_cell", 1098 | "proc-macro2", 1099 | "quote", 1100 | "syn", 1101 | "wasm-bindgen-shared", 1102 | ] 1103 | 1104 | [[package]] 1105 | name = "wasm-bindgen-futures" 1106 | version = "0.4.33" 1107 | source = "registry+https://github.com/rust-lang/crates.io-index" 1108 | checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" 1109 | dependencies = [ 1110 | "cfg-if", 1111 | "js-sys", 1112 | "wasm-bindgen", 1113 | "web-sys", 1114 | ] 1115 | 1116 | [[package]] 1117 | name = "wasm-bindgen-macro" 1118 | version = "0.2.83" 1119 | source = "registry+https://github.com/rust-lang/crates.io-index" 1120 | checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" 1121 | dependencies = [ 1122 | "quote", 1123 | "wasm-bindgen-macro-support", 1124 | ] 1125 | 1126 | [[package]] 1127 | name = "wasm-bindgen-macro-support" 1128 | version = "0.2.83" 1129 | source = "registry+https://github.com/rust-lang/crates.io-index" 1130 | checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" 1131 | dependencies = [ 1132 | "proc-macro2", 1133 | "quote", 1134 | "syn", 1135 | "wasm-bindgen-backend", 1136 | "wasm-bindgen-shared", 1137 | ] 1138 | 1139 | [[package]] 1140 | name = "wasm-bindgen-shared" 1141 | version = "0.2.83" 1142 | source = "registry+https://github.com/rust-lang/crates.io-index" 1143 | checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" 1144 | 1145 | [[package]] 1146 | name = "web-sys" 1147 | version = "0.3.60" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" 1150 | dependencies = [ 1151 | "js-sys", 1152 | "wasm-bindgen", 1153 | ] 1154 | 1155 | [[package]] 1156 | name = "winapi" 1157 | version = "0.3.9" 1158 | source = "registry+https://github.com/rust-lang/crates.io-index" 1159 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1160 | dependencies = [ 1161 | "winapi-i686-pc-windows-gnu", 1162 | "winapi-x86_64-pc-windows-gnu", 1163 | ] 1164 | 1165 | [[package]] 1166 | name = "winapi-i686-pc-windows-gnu" 1167 | version = "0.4.0" 1168 | source = "registry+https://github.com/rust-lang/crates.io-index" 1169 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1170 | 1171 | [[package]] 1172 | name = "winapi-util" 1173 | version = "0.1.5" 1174 | source = "registry+https://github.com/rust-lang/crates.io-index" 1175 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 1176 | dependencies = [ 1177 | "winapi", 1178 | ] 1179 | 1180 | [[package]] 1181 | name = "winapi-x86_64-pc-windows-gnu" 1182 | version = "0.4.0" 1183 | source = "registry+https://github.com/rust-lang/crates.io-index" 1184 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1185 | 1186 | [[package]] 1187 | name = "windows-sys" 1188 | version = "0.36.1" 1189 | source = "registry+https://github.com/rust-lang/crates.io-index" 1190 | checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" 1191 | dependencies = [ 1192 | "windows_aarch64_msvc 0.36.1", 1193 | "windows_i686_gnu 0.36.1", 1194 | "windows_i686_msvc 0.36.1", 1195 | "windows_x86_64_gnu 0.36.1", 1196 | "windows_x86_64_msvc 0.36.1", 1197 | ] 1198 | 1199 | [[package]] 1200 | name = "windows-sys" 1201 | version = "0.42.0" 1202 | source = "registry+https://github.com/rust-lang/crates.io-index" 1203 | checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" 1204 | dependencies = [ 1205 | "windows_aarch64_gnullvm", 1206 | "windows_aarch64_msvc 0.42.0", 1207 | "windows_i686_gnu 0.42.0", 1208 | "windows_i686_msvc 0.42.0", 1209 | "windows_x86_64_gnu 0.42.0", 1210 | "windows_x86_64_gnullvm", 1211 | "windows_x86_64_msvc 0.42.0", 1212 | ] 1213 | 1214 | [[package]] 1215 | name = "windows_aarch64_gnullvm" 1216 | version = "0.42.0" 1217 | source = "registry+https://github.com/rust-lang/crates.io-index" 1218 | checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" 1219 | 1220 | [[package]] 1221 | name = "windows_aarch64_msvc" 1222 | version = "0.36.1" 1223 | source = "registry+https://github.com/rust-lang/crates.io-index" 1224 | checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" 1225 | 1226 | [[package]] 1227 | name = "windows_aarch64_msvc" 1228 | version = "0.42.0" 1229 | source = "registry+https://github.com/rust-lang/crates.io-index" 1230 | checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" 1231 | 1232 | [[package]] 1233 | name = "windows_i686_gnu" 1234 | version = "0.36.1" 1235 | source = "registry+https://github.com/rust-lang/crates.io-index" 1236 | checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" 1237 | 1238 | [[package]] 1239 | name = "windows_i686_gnu" 1240 | version = "0.42.0" 1241 | source = "registry+https://github.com/rust-lang/crates.io-index" 1242 | checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" 1243 | 1244 | [[package]] 1245 | name = "windows_i686_msvc" 1246 | version = "0.36.1" 1247 | source = "registry+https://github.com/rust-lang/crates.io-index" 1248 | checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" 1249 | 1250 | [[package]] 1251 | name = "windows_i686_msvc" 1252 | version = "0.42.0" 1253 | source = "registry+https://github.com/rust-lang/crates.io-index" 1254 | checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" 1255 | 1256 | [[package]] 1257 | name = "windows_x86_64_gnu" 1258 | version = "0.36.1" 1259 | source = "registry+https://github.com/rust-lang/crates.io-index" 1260 | checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" 1261 | 1262 | [[package]] 1263 | name = "windows_x86_64_gnu" 1264 | version = "0.42.0" 1265 | source = "registry+https://github.com/rust-lang/crates.io-index" 1266 | checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" 1267 | 1268 | [[package]] 1269 | name = "windows_x86_64_gnullvm" 1270 | version = "0.42.0" 1271 | source = "registry+https://github.com/rust-lang/crates.io-index" 1272 | checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" 1273 | 1274 | [[package]] 1275 | name = "windows_x86_64_msvc" 1276 | version = "0.36.1" 1277 | source = "registry+https://github.com/rust-lang/crates.io-index" 1278 | checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" 1279 | 1280 | [[package]] 1281 | name = "windows_x86_64_msvc" 1282 | version = "0.42.0" 1283 | source = "registry+https://github.com/rust-lang/crates.io-index" 1284 | checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" 1285 | 1286 | [[package]] 1287 | name = "winreg" 1288 | version = "0.10.1" 1289 | source = "registry+https://github.com/rust-lang/crates.io-index" 1290 | checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" 1291 | dependencies = [ 1292 | "winapi", 1293 | ] 1294 | --------------------------------------------------------------------------------