diff --git a/Cargo.lock b/Cargo.lock index b66bd9c..5196cb3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,9 +13,9 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "ahash" @@ -79,11 +79,10 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "assert-json-diff" -version = "1.1.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4259cbe96513d2f1073027a259fc2ca917feb3026a5a8d984e3628e490255cc0" +checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" dependencies = [ - "extend", "serde", "serde_json", ] @@ -107,7 +106,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -118,7 +117,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -135,9 +134,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-config" -version = "1.6.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fcc63c9860579e4cb396239570e979376e70aab79e496621748a09913f8b36" +checksum = "455e9fb7743c6f6267eb2830ccc08686fbb3d13c9a689369562fd4d4ef9ea462" dependencies = [ "aws-credential-types", "aws-runtime", @@ -177,9 +176,9 @@ dependencies = [ [[package]] name = "aws-lc-fips-sys" -version = "0.13.6" +version = "0.13.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e99d74bb793a19f542ae870a6edafbc5ecf0bc0ba01d4636b7f7e0aba9ee9bd3" +checksum = "2608e5a7965cc9d58c56234d346c9c89b824c4c8652b6f047b3bd0a777c0644f" dependencies = [ "bindgen", "cc", @@ -215,9 +214,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.5.7" +version = "1.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c4063282c69991e57faab9e5cb21ae557e59f5b0fb285c196335243df8dc25c" +checksum = "4f6c68419d8ba16d9a7463671593c54f81ba58cab466e9b759418da606dcc2e2" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -239,9 +238,9 @@ dependencies = [ [[package]] name = "aws-sdk-secretsmanager" -version = "1.71.0" +version = "1.77.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9328a01c5c822fadf96be02187e0944eb6059067509ed32ad1af00e18cd5eb27" +checksum = "4f78dbba23909cb019804796ab361a1155ff793eb0ed38877132055af5a48aba" dependencies = [ "aws-credential-types", "aws-runtime", @@ -255,16 +254,15 @@ dependencies = [ "bytes", "fastrand", "http 0.2.12", - "once_cell", "regex-lite", "tracing", ] [[package]] name = "aws-sdk-sso" -version = "1.67.0" +version = "1.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d4863da26489d1e6da91d7e12b10c17e86c14f94c53f416bd10e0a9c34057ba" +checksum = "b2ac1674cba7872061a29baaf02209fefe499ff034dfd91bd4cc59e4d7741489" dependencies = [ "aws-credential-types", "aws-runtime", @@ -278,16 +276,15 @@ dependencies = [ "bytes", "fastrand", "http 0.2.12", - "once_cell", "regex-lite", "tracing", ] [[package]] name = "aws-sdk-ssooidc" -version = "1.68.0" +version = "1.74.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95caa3998d7237789b57b95a8e031f60537adab21fa84c91e35bef9455c652e4" +checksum = "3a6a22f077f5fd3e3c0270d4e1a110346cddf6769e9433eb9e6daceb4ca3b149" dependencies = [ "aws-credential-types", "aws-runtime", @@ -301,16 +298,15 @@ dependencies = [ "bytes", "fastrand", "http 0.2.12", - "once_cell", "regex-lite", "tracing", ] [[package]] name = "aws-sdk-sts" -version = "1.68.0" +version = "1.74.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4939f6f449a37308a78c5a910fd91265479bd2bb11d186f0b8fc114d89ec828d" +checksum = "19d440e1d368759bd10df0dbdddbfff6473d7cd73e9d9ef2363dc9995ac2d711" dependencies = [ "aws-credential-types", "aws-runtime", @@ -325,16 +321,15 @@ dependencies = [ "aws-types", "fastrand", "http 0.2.12", - "once_cell", "regex-lite", "tracing", ] [[package]] name = "aws-sigv4" -version = "1.3.1" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3503af839bd8751d0bdc5a46b9cac93a003a353e635b0c12cf2376b5b53e41ea" +checksum = "ddfb9021f581b71870a17eac25b52335b82211cdc092e02b6876b2bcefa61666" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -385,15 +380,16 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.0.2" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e44697a9bded898dcd0b1cb997430d949b87f4f8940d91023ae9062bf218250" +checksum = "7f491388e741b7ca73b24130ff464c1478acc34d5b331b7dd0a2ee4643595a15" dependencies = [ "aws-smithy-async", "aws-smithy-protocol-test", "aws-smithy-runtime-api", "aws-smithy-types", "bytes", + "h2 0.3.26", "h2 0.4.10", "http 0.2.12", "http 1.3.1", @@ -403,7 +399,7 @@ dependencies = [ "hyper 0.14.32", "hyper 1.6.0", "hyper-rustls 0.24.2", - "hyper-rustls 0.27.5", + "hyper-rustls 0.27.7", "hyper-util", "indexmap 2.9.0", "pin-project-lite", @@ -420,9 +416,9 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.61.3" +version = "0.61.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92144e45819cae7dc62af23eac5a038a58aa544432d2102609654376a900bd07" +checksum = "a16e040799d29c17412943bdbf488fd75db04112d0c0d4b9290bacf5ae0014b9" dependencies = [ "aws-smithy-types", ] @@ -448,9 +444,9 @@ dependencies = [ [[package]] name = "aws-smithy-protocol-test" -version = "0.63.1" +version = "0.63.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b42f13304bed0b96d7471e4770c270bb3eb4fea277727fb03c811e84cb4bf3a" +checksum = "ee2116be0e3a8e18771b126f8eb69901b2780fbe12b1890370cb1c462337d13b" dependencies = [ "assert-json-diff", "aws-smithy-runtime-api", @@ -462,7 +458,7 @@ dependencies = [ "regex-lite", "roxmltree", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.12", ] [[package]] @@ -502,9 +498,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e5d9e3a80a18afa109391fb5ad09c3daf887b516c6fd805a157c6ea7994a57" +checksum = "bd8531b6d8882fd8f48f82a9754e682e29dd44cff27154af51fa3eb730f59efb" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -519,9 +515,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.3.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40076bd09fadbc12d5e026ae080d0930defa606856186e31d83ccc6a255eeaf3" +checksum = "d498595448e43de7f4296b7b7a18a8a02c61ec9349128c80a368f7c3b4ab11a8" dependencies = [ "base64-simd", "bytes", @@ -545,9 +541,9 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.9" +version = "0.60.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc" +checksum = "3db87b96cb1b16c024980f133968d52882ca0daaee3a086c6decc500f6c99728" dependencies = [ "xmlparser", ] @@ -585,6 +581,7 @@ dependencies = [ "hyper-util", "log", "log4rs", + "mime", "pretty_env_logger", "serde", "serde_derive", @@ -671,7 +668,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.101", + "syn 2.0.103", "which", ] @@ -704,9 +701,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" [[package]] name = "bytes" @@ -745,9 +742,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.23" +version = "1.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4ac86a9e5bc1e2b3449ab9d7d3a6a405e3d1bb28d7b9be8614f55846ae3766" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" dependencies = [ "jobserver", "libc", @@ -765,9 +762,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "chrono" @@ -889,9 +886,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -958,7 +955,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -969,7 +966,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -1030,7 +1027,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -1048,6 +1045,12 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +[[package]] +name = "dyn-clone" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" + [[package]] name = "either" version = "1.15.0" @@ -1092,18 +1095,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "extend" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f47da3a72ec598d9c8937a7ebca8962a5c7a1f28444e38c2b33c771ba3f55f05" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "fastrand" version = "2.3.0" @@ -1112,9 +1103,9 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "flate2" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", "miniz_oxide", @@ -1198,7 +1189,7 @@ checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", ] [[package]] @@ -1291,9 +1282,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.3" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" [[package]] name = "hashlink" @@ -1306,9 +1297,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -1471,11 +1462,10 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.5" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http 1.3.1", "hyper 1.6.0", "hyper-util", @@ -1489,12 +1479,13 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.11" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" dependencies = [ "bytes", "futures-channel", + "futures-core", "futures-util", "http 1.3.1", "http-body 1.0.1", @@ -1580,9 +1571,9 @@ checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2549ca8c7241c82f59c80ba2a6f415d931c5b58d24fb8412caa1a1f02c49139a" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", @@ -1596,9 +1587,9 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8197e866e47b68f8f7d95249e172903bec06004b18b2937f1095d40a0c57de04" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" @@ -1662,7 +1653,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "serde", ] @@ -1737,18 +1728,18 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.172" +version = "0.2.173" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" [[package]] name = "libloading" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a793df0d7afeac54f95b471d3af7f0d4fb975699f972341a4b76988d49cdf0c" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.53.0", + "windows-targets 0.53.2", ] [[package]] @@ -1771,9 +1762,9 @@ checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -1834,9 +1825,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "minimal-lexical" @@ -1846,22 +1843,22 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] @@ -1983,9 +1980,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -1993,9 +1990,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", @@ -2047,7 +2044,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -2119,36 +2116,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.32" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" +checksum = "6837b9e10d61f45f987d50808f83d1ee3d206c66acf650c3e4ae2e1f6ddedf55" dependencies = [ "proc-macro2", - "syn 2.0.101", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", + "syn 2.0.103", ] [[package]] @@ -2207,13 +2180,33 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" dependencies = [ "bitflags", ] +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.103", +] + [[package]] name = "regex" version = "1.11.1" @@ -2311,9 +2304,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" [[package]] name = "rustc-hash" @@ -2436,9 +2429,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "ryu" @@ -2455,6 +2448,18 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -2491,7 +2496,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ "bitflags", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -2546,7 +2551,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -2564,24 +2569,25 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] [[package]] name = "serde_with" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" +checksum = "bf65a400f8f66fb7b0552869ad70157166676db75ed8181f8104ea91cf9d0b42" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", "indexmap 2.9.0", + "schemars", "serde", "serde_derive", "serde_json", @@ -2591,14 +2597,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" +checksum = "81679d9ed988d5e9a5e6531dc3f2c28efbd639cbd1dfb628df08edea6004da77" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -2660,15 +2666,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", @@ -2705,9 +2711,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.101" +version = "2.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" dependencies = [ "proc-macro2", "quote", @@ -2722,7 +2728,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -2760,7 +2766,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -2771,7 +2777,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -2786,12 +2792,11 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -2861,9 +2866,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.45.0" +version = "1.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" dependencies = [ "backtrace", "bytes", @@ -2884,7 +2889,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -2946,9 +2951,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.22" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", @@ -2958,18 +2963,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.9" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.26" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap 2.9.0", "serde", @@ -2981,9 +2986,9 @@ dependencies = [ [[package]] name = "toml_write" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tower" @@ -3020,20 +3025,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -3166,9 +3171,13 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" +checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" +dependencies = [ + "js-sys", + "wasm-bindgen", +] [[package]] name = "valuable" @@ -3199,9 +3208,9 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" @@ -3234,7 +3243,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", "wasm-bindgen-shared", ] @@ -3256,7 +3265,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3315,9 +3324,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.61.1" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46ec44dc15085cea82cf9c78f85a9114c463a369786585ad2882d1ff0b0acf40" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ "windows-implement", "windows-interface", @@ -3334,7 +3343,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -3345,29 +3354,29 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] name = "windows-link" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] name = "windows-result" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b895b5356fc36103d0f64dd1e94dfa7ac5633f1c9dd6e80fe9ec4adef69e09d" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ "windows-link", ] [[package]] name = "windows-strings" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a7ab927b2637c19b3dbe0965e75d8f2d30bdd697a1516191cad2ec4df8fb28a" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ "windows-link", ] @@ -3408,9 +3417,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.0" +version = "0.53.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" dependencies = [ "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", @@ -3520,9 +3529,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" dependencies = [ "memchr", ] @@ -3585,7 +3594,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", "synstructure", ] @@ -3606,7 +3615,7 @@ checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -3626,7 +3635,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", "synstructure", ] @@ -3666,5 +3675,5 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] diff --git a/aws_secretsmanager_agent/Cargo.toml b/aws_secretsmanager_agent/Cargo.toml index 07f9063..2b1259c 100644 --- a/aws_secretsmanager_agent/Cargo.toml +++ b/aws_secretsmanager_agent/Cargo.toml @@ -29,6 +29,7 @@ log = "0.4.20" log4rs = { version = "1.2.0", features = ["gzip"] } url = "2" aws_secretsmanager_caching = { version = "2.0.0", path = "../aws_secretsmanager_caching" } +mime = "0.3.17" # For unit tests [dev-dependencies] diff --git a/aws_secretsmanager_agent/src/cache_manager.rs b/aws_secretsmanager_agent/src/cache_manager.rs index 9e5c425..6640a95 100644 --- a/aws_secretsmanager_agent/src/cache_manager.rs +++ b/aws_secretsmanager_agent/src/cache_manager.rs @@ -84,7 +84,7 @@ impl CacheManager { return Err(HttpError(status, err_response(&code, &msg))); } Err(e) => { - error!("Internal error for {secret_id} - {:?}", e); + error!("Internal error for {secret_id} - {e:?}"); return Err(int_err()); } }; diff --git a/aws_secretsmanager_agent/src/config.rs b/aws_secretsmanager_agent/src/config.rs index 8b7878d..870f2ee 100644 --- a/aws_secretsmanager_agent/src/config.rs +++ b/aws_secretsmanager_agent/src/config.rs @@ -180,8 +180,7 @@ impl Config { /// /// # Returns /// - /// * `log_to_file` - `true` if writing logs to a file (default), `false` if writing logs to - /// stdout/stderr + /// * `log_to_file` - `true` if writing logs to a file (default), `false` if writing logs to stdout/stderr pub fn log_to_file(&self) -> bool { self.log_to_file } diff --git a/aws_secretsmanager_agent/src/constants.rs b/aws_secretsmanager_agent/src/constants.rs index 9d4edde..6862ed4 100644 --- a/aws_secretsmanager_agent/src/constants.rs +++ b/aws_secretsmanager_agent/src/constants.rs @@ -13,7 +13,7 @@ pub const EMPTY_ENV_LIST_MSG: &str = pub const BAD_PREFIX_MSG: &str = "The path prefix specified in the configuration file must begin with /."; -/// Other constants that are used across the code base. +// Other constants that are used across the code base. // The application name. pub const APPNAME: &str = "aws-secrets-manager-agent"; diff --git a/aws_secretsmanager_agent/src/logging.rs b/aws_secretsmanager_agent/src/logging.rs index 3c40218..c105746 100644 --- a/aws_secretsmanager_agent/src/logging.rs +++ b/aws_secretsmanager_agent/src/logging.rs @@ -104,10 +104,7 @@ pub fn init_logger( return Err(Box::new(err)); } - info!( - "{} logger initialized with `{:?}` log level.", - logger_type, log_level - ); + info!("{logger_type} logger initialized with `{log_level:?}` log level."); Ok(()) } diff --git a/aws_secretsmanager_agent/src/main.rs b/aws_secretsmanager_agent/src/main.rs index 61d94a3..c6deeb0 100644 --- a/aws_secretsmanager_agent/src/main.rs +++ b/aws_secretsmanager_agent/src/main.rs @@ -102,7 +102,7 @@ async fn run bool>( loop { // Report errors on accept. if let Err(msg) = svr.serve_request().await { - error!("Could not accept connection: {:?}", msg); + error!("Could not accept connection: {msg:?}"); } // Check for end of test in unit tests. @@ -169,7 +169,7 @@ async fn init(args: impl IntoIterator) -> (Config, TcpListener) { // Bind the listener to the specified port let addr: SocketAddr = ([127, 0, 0, 1], config.http_port()).into(); let listener: TcpListener = TcpListener::bind(addr).await.unwrap_or_else(|err| { - let msg = format!("Could not bind to {addr}: {}", err); + let msg = format!("Could not bind to {addr}: {err}"); error!("{msg}"); err_exit(&msg, "") }); @@ -335,7 +335,7 @@ mod tests { // spawn a task to poll the connection and drive the HTTP state tokio::spawn(async move { if let Err(e) = conn.await { - panic!("Error in connection: {}", e); + panic!("Error in connection: {e}"); } }); @@ -400,7 +400,7 @@ mod tests { // Make sure everything shutdown cleanly. tx_lock.send(true).expect("could not sync"); // Tell the server to shut down. if let Err(msg) = thr.join() { - panic!("server failed: {:?}", msg); + panic!("server failed: {msg:?}"); } // Return the responses in the original request order and strip out the index. @@ -744,7 +744,7 @@ mod tests { #[tokio::test] async fn path_refresh_success() { let req = "/v1/My/Test?versionStage=AWSPENDING&refreshNow=0"; - let (status, body) = run_request(&req).await; + let (status, body) = run_request(req).await; assert_eq!(status, StatusCode::OK); validate_response_extra("My/Test", DEFAULT_VERSION, vec!["AWSPENDING"], body); } diff --git a/aws_secretsmanager_agent/src/parse.rs b/aws_secretsmanager_agent/src/parse.rs index baf8fdf..b63b717 100644 --- a/aws_secretsmanager_agent/src/parse.rs +++ b/aws_secretsmanager_agent/src/parse.rs @@ -25,7 +25,7 @@ impl GSVQuery { pub(crate) fn try_from_query(s: &str) -> Result { // url library can only parse complete URIs. The host/port/scheme used is irrelevant since it is not used - let complete_uri = format!("http://localhost{}", s); + let complete_uri = format!("http://localhost{s}"); let url = Url::parse(&complete_uri)?; @@ -42,7 +42,7 @@ impl GSVQuery { "versionId" => query.version_id = Some(v.into()), "versionStage" => query.version_stage = Some(v.into()), "refreshNow" => query.refresh_now = GSVQuery::parse_refresh_value(&v)?, - p => return Err(HttpError(400, format!("unknown parameter: {}", p))), + p => return Err(HttpError(400, format!("unknown parameter: {p}"))), } } @@ -55,7 +55,7 @@ impl GSVQuery { pub(crate) fn try_from_path_query(s: &str, path_prefix: &str) -> Result { // url library can only parse complete URIs. The host/port/scheme used is irrelevant since it gets stripped - let complete_uri = format!("http://localhost{}", s); + let complete_uri = format!("http://localhost{s}"); let url = Url::parse(&complete_uri)?; @@ -76,7 +76,7 @@ impl GSVQuery { "versionId" => query.version_id = Some(v.into()), "versionStage" => query.version_stage = Some(v.into()), "refreshNow" => query.refresh_now = GSVQuery::parse_refresh_value(&v)?, - p => return Err(HttpError(400, format!("unknown parameter: {}", p))), + p => return Err(HttpError(400, format!("unknown parameter: {p}"))), } } @@ -92,13 +92,12 @@ mod tests { fn parse_query() { let secret_id = "MyTest".to_owned(); let query = - GSVQuery::try_from_query(&format!("/secretsmanager/get?secretId={}", secret_id)) - .unwrap(); + GSVQuery::try_from_query(&format!("/secretsmanager/get?secretId={secret_id}")).unwrap(); assert_eq!(query.secret_id, secret_id); assert_eq!(query.version_id, None); assert_eq!(query.version_stage, None); - assert_eq!(query.refresh_now, false); + assert!(!query.refresh_now); } #[test] @@ -113,7 +112,7 @@ mod tests { assert_eq!(query.secret_id, secret_id); assert_eq!(query.version_id, None); assert_eq!(query.version_stage, None); - assert_eq!(query.refresh_now, true); + assert!(query.refresh_now); } #[test] @@ -128,7 +127,7 @@ mod tests { assert_eq!(query.secret_id, secret_id); assert_eq!(query.version_id, None); assert_eq!(query.version_stage, None); - assert_eq!(query.refresh_now, false); + assert!(!query.refresh_now); } #[test] @@ -137,8 +136,7 @@ mod tests { let version_id = "myversion".to_owned(); let version_stage = "dev".to_owned(); match GSVQuery::try_from_query(&format!( - "/secretsmanager/get?secretId={}&versionId={}&versionStage={}&refreshNow=123", - secret_id, version_id, version_stage + "/secretsmanager/get?secretId={secret_id}&versionId={version_id}&versionStage={version_stage}&refreshNow=123" )) { Ok(_) => panic!("should not parse"), Err(e) => { @@ -160,7 +158,7 @@ mod tests { assert_eq!(query.secret_id, secret_id); assert_eq!(query.version_id, None); assert_eq!(query.version_stage, None); - assert_eq!(query.refresh_now, false); + assert!(!query.refresh_now); } #[test] @@ -172,8 +170,7 @@ mod tests { let query = GSVQuery::try_from_path_query( &format!( - "{}{}?versionId={}&versionStage={}", - path_prefix, secret_id, version_id, version_stage + "{path_prefix}{secret_id}?versionId={version_id}&versionStage={version_stage}" ), path_prefix, ) @@ -190,8 +187,7 @@ mod tests { let version_id = "myversion".to_owned(); let version_stage = "dev".to_owned(); match GSVQuery::try_from_query(&format!( - "/secretsmanager/get?secretId={}&versionId={}&versionStage={}&abc=123", - secret_id, version_id, version_stage + "/secretsmanager/get?secretId={secret_id}&versionId={version_id}&versionStage={version_stage}&abc=123" )) { Ok(_) => panic!("should not parse"), Err(e) => { @@ -210,8 +206,7 @@ mod tests { match GSVQuery::try_from_path_query( &format!( - "{}{}?versionId={}&versionStage={}&abc=123", - path_prefix, secret_id, version_id, version_stage + "{path_prefix}{secret_id}?versionId={version_id}&versionStage={version_stage}&abc=123" ), path_prefix, ) { @@ -228,8 +223,7 @@ mod tests { let version_id = "myversion".to_owned(); let version_stage = "dev".to_owned(); match GSVQuery::try_from_query(&format!( - "/secretsmanager/get?&versionId={}&versionStage={}", - version_id, version_stage + "/secretsmanager/get?&versionId={version_id}&versionStage={version_stage}" )) { Ok(_) => panic!("should not parse"), Err(e) => { @@ -246,10 +240,7 @@ mod tests { let path_prefix = "/v1/"; match GSVQuery::try_from_path_query( - &format!( - "{}?versionId={}&versionStage={}&abc=123", - path_prefix, version_id, version_stage - ), + &format!("{path_prefix}?versionId={version_id}&versionStage={version_stage}&abc=123"), path_prefix, ) { Ok(_) => panic!("should not parse"), diff --git a/aws_secretsmanager_agent/src/server.rs b/aws_secretsmanager_agent/src/server.rs index 5c1826c..0c281cc 100644 --- a/aws_secretsmanager_agent/src/server.rs +++ b/aws_secretsmanager_agent/src/server.rs @@ -5,6 +5,7 @@ use hyper::service::service_fn; use hyper::{body::Incoming as IncomingBody, Method, Request, Response}; use hyper_util::rt::TokioIo; use log::error; +use mime::Mime; use tokio::net::TcpListener; use tokio::time::timeout; @@ -27,6 +28,13 @@ pub struct Server { max_conn: usize, } +/// HTTP response relevant fields +#[derive(Debug)] +struct ResponseContent { + rsp_body: String, + content_type: Mime, +} + /// Handle incoming HTTP requests. /// /// Implements the HTTP handler. Each incomming request is handled in its own @@ -80,7 +88,7 @@ impl Server { let mut http = http1::Builder::new(); let http = http.max_buf_size(MAX_BUF_BYTES); if let Err(err) = timeout(time_out(), http.serve_connection(io, svc_fn)).await { - error!("Failed to serve connection: {:?}", err); + error!("Failed to serve connection: {err:?}"); }; }); @@ -108,11 +116,16 @@ impl Server { // Format the response. match result { - Ok(rsp_body) => Ok(Response::builder() + Ok(ResponseContent { + rsp_body, + content_type, + }) => Ok(Response::builder() + .header("Content-Type", content_type.essence_str()) .body(Full::new(Bytes::from(rsp_body))) .unwrap()), Err(e) => Ok(Response::builder() .status(e.0) + .header("Content-Type", "text/plain") .body(Full::new(Bytes::from(e.1))) .unwrap()), } @@ -134,40 +147,49 @@ impl Server { &self, req: &Request, count: usize, - ) -> Result { + ) -> Result { self.validate_max_conn(req, count)?; // Verify connection limits are not exceeded self.validate_token(req)?; // Check for a valid SSRF token self.validate_method(req)?; // Allow only GET requests match req.uri().path() { - "/ping" => Ok("healthy".into()), // Standard health check + "/ping" => Ok(ResponseContent { + rsp_body: "healthy".into(), + content_type: mime::TEXT_PLAIN, + }), // Standard health check // Lambda extension style query "/secretsmanager/get" => { let qry = GSVQuery::try_from_query(&req.uri().to_string())?; - Ok(self - .cache_mgr - .fetch( - &qry.secret_id, - qry.version_id.as_deref(), - qry.version_stage.as_deref(), - qry.refresh_now, - ) - .await?) + Ok(ResponseContent { + rsp_body: self + .cache_mgr + .fetch( + &qry.secret_id, + qry.version_id.as_deref(), + qry.version_stage.as_deref(), + qry.refresh_now, + ) + .await?, + content_type: mime::APPLICATION_JSON, + }) } // Path style request path if path.starts_with(self.path_prefix.as_str()) => { let qry = GSVQuery::try_from_path_query(&req.uri().to_string(), &self.path_prefix)?; - Ok(self - .cache_mgr - .fetch( - &qry.secret_id, - qry.version_id.as_deref(), - qry.version_stage.as_deref(), - qry.refresh_now, - ) - .await?) + Ok(ResponseContent { + rsp_body: self + .cache_mgr + .fetch( + &qry.secret_id, + qry.version_id.as_deref(), + qry.version_stage.as_deref(), + qry.refresh_now, + ) + .await?, + content_type: mime::APPLICATION_JSON, + }) } _ => Err(HttpError(404, "Not found".into())), } diff --git a/aws_secretsmanager_caching/src/lib.rs b/aws_secretsmanager_caching/src/lib.rs index 2b27c04..53d9680 100644 --- a/aws_secretsmanager_caching/src/lib.rs +++ b/aws_secretsmanager_caching/src/lib.rs @@ -68,7 +68,7 @@ impl SecretsManagerCachingClient { /// use aws_secretsmanager_caching::SecretsManagerCachingClient; /// use std::num::NonZeroUsize; /// use std::time::Duration; - + /// /// let asm_client = SecretsManagerClient::from_conf( /// Config::builder() /// .behavior_version_latest() @@ -141,15 +141,15 @@ impl SecretsManagerCachingClient { /// use std::num::NonZeroUsize; /// use std::time::Duration; /// use aws_config::{BehaviorVersion, Region}; - + /// /// let config = aws_config::load_defaults(BehaviorVersion::latest()) /// .await /// .into_builder() /// .region(Region::from_static("us-west-2")) /// .build(); - + /// /// let asm_builder = aws_sdk_secretsmanager::config::Builder::from(&config); - + /// /// let client = SecretsManagerCachingClient::from_builder( /// asm_builder, /// NonZeroUsize::new(1000).unwrap(), @@ -206,9 +206,9 @@ impl SecretsManagerCachingClient { ); } - return Ok(self + return self .refresh_secret_value(secret_id, version_id, version_stage, None) - .await?); + .await; } let read_lock = self.store.read().await; @@ -424,12 +424,12 @@ impl SecretsManagerCachingClient { } #[cfg(debug_assertions)] - fn increment_counter(&self, counter: &AtomicU32) -> () { + fn increment_counter(&self, counter: &AtomicU32) { counter.fetch_add(1, Ordering::SeqCst); } #[cfg(debug_assertions)] - fn reset_counter(&self, counter: &AtomicU32) -> () { + fn reset_counter(&self, counter: &AtomicU32) { counter.store(0, Ordering::SeqCst); } diff --git a/aws_secretsmanager_caching/src/secret_store/memory_store/mod.rs b/aws_secretsmanager_caching/src/secret_store/memory_store/mod.rs index 4f2e182..3f74868 100644 --- a/aws_secretsmanager_caching/src/secret_store/memory_store/mod.rs +++ b/aws_secretsmanager_caching/src/secret_store/memory_store/mod.rs @@ -97,7 +97,6 @@ impl SecretStore for MemoryStore { } /// Write the secret value to the store - #[cfg(test)] mod tests { @@ -116,11 +115,11 @@ mod tests { fn get_secret_value_output(suffix: Option<&str>) -> GetSecretValueOutputDef { GetSecretValueOutputDef { name: match suffix { - Some(suffix) => Some(format!("{}{}", NAME, suffix)), + Some(suffix) => Some(format!("{NAME}{suffix}")), None => Some(NAME.to_string()), }, arn: match suffix { - Some(suffix) => Some(format!("{}{}", ARN, suffix)), + Some(suffix) => Some(format!("{ARN}{suffix}")), None => Some(ARN.to_string()), }, version_id: Some(VERSION_ID.to_string()), @@ -138,7 +137,7 @@ mod tests { stage: Option, ) { let name = match suffix { - Some(suffix) => format!("{}{}", NAME, suffix), + Some(suffix) => format!("{NAME}{suffix}"), None => NAME.to_string(), };