From be2b46d4b6f408e07e00a362bf9078caed803a92 Mon Sep 17 00:00:00 2001 From: Shella Stephens Date: Mon, 31 Aug 2020 11:55:07 -0700 Subject: [PATCH 1/9] cargo update --- Cargo.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6a87a76f..09460583 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -35,9 +35,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" @@ -267,9 +267,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.74" +version = "0.2.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2f02823cf78b754822df5f7f268fb59822e7296276d3e069d8e8cb26a14bd10" +checksum = "755456fae044e6fa1ebbbd1b3e902ae19e73097ed4ed87bb79934a867c007bc3" [[package]] name = "log" @@ -288,9 +288,9 @@ checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" [[package]] name = "miniz_oxide" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be0f75932c1f6cfae3c04000e40114adf955636e19040f9c0a2c380702aa1c7f" +checksum = "4d7559a8a40d0f97e1edea3220f698f78b1c5ab67532e49f68fde3910323b722" dependencies = [ "adler", ] @@ -337,9 +337,9 @@ dependencies = [ [[package]] name = "ppv-lite86" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea" +checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20" [[package]] name = "proc-macro2" From 801a6245036629bf84a5f46c4b4e16d9c5a86d8a Mon Sep 17 00:00:00 2001 From: Shella Stephens Date: Mon, 31 Aug 2020 11:56:43 -0700 Subject: [PATCH 2/9] cargo new datadog --- Cargo.lock | 4 ++++ Cargo.toml | 1 + datadog/Cargo.toml | 9 +++++++++ datadog/src/main.rs | 3 +++ 4 files changed, 17 insertions(+) create mode 100644 datadog/Cargo.toml create mode 100644 datadog/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 09460583..7ecce66d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -120,6 +120,10 @@ dependencies = [ "subtle", ] +[[package]] +name = "datadog" +version = "0.1.0" + [[package]] name = "digest" version = "0.9.0" diff --git a/Cargo.toml b/Cargo.toml index 9fc3fad6..02012f71 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ members = [ "anomaly", "canonical-path", + "datadog", "harp", "hkd32", "secrecy", diff --git a/datadog/Cargo.toml b/datadog/Cargo.toml new file mode 100644 index 00000000..7678b80e --- /dev/null +++ b/datadog/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "datadog" +version = "0.1.0" +authors = ["Shella Stephens "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/datadog/src/main.rs b/datadog/src/main.rs new file mode 100644 index 00000000..e7a11a96 --- /dev/null +++ b/datadog/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} From 4738a03247d44d0e9c19146f391ae196a4b668f5 Mon Sep 17 00:00:00 2001 From: Shella Stephens Date: Wed, 2 Sep 2020 11:57:00 -0700 Subject: [PATCH 3/9] WIP datadog crate --- Cargo.lock | 628 +++++++++++++++++++++++++++++++++++++++++++- datadog/Cargo.toml | 5 + datadog/src/lib.rs | 61 +++++ datadog/src/main.rs | 3 - 4 files changed, 691 insertions(+), 6 deletions(-) create mode 100644 datadog/src/lib.rs delete mode 100644 datadog/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 7ecce66d..dbb9cc3e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -33,6 +33,12 @@ dependencies = [ "thiserror", ] +[[package]] +name = "arc-swap" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034" + [[package]] name = "autocfg" version = "1.0.1" @@ -54,6 +60,12 @@ dependencies = [ "serde", ] +[[package]] +name = "bitflags" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" + [[package]] name = "block-buffer" version = "0.9.0" @@ -104,6 +116,22 @@ dependencies = [ "num-traits", ] +[[package]] +name = "core-foundation" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" + [[package]] name = "cpuid-bool" version = "0.1.2" @@ -123,6 +151,13 @@ dependencies = [ [[package]] name = "datadog" version = "0.1.0" +dependencies = [ + "hyper", + "hyper-tls", + "serde", + "serde_json", + "tokio", +] [[package]] name = "digest" @@ -182,6 +217,82 @@ dependencies = [ "backtrace", ] +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + +[[package]] +name = "futures-channel" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399" + +[[package]] +name = "futures-sink" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc" + +[[package]] +name = "futures-task" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626" + +[[package]] +name = "futures-util" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6" +dependencies = [ + "futures-core", + "futures-task", + "pin-project", + "pin-utils", +] + [[package]] name = "generic-array" version = "0.14.4" @@ -200,7 +311,7 @@ checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] @@ -209,6 +320,25 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" +[[package]] +name = "h2" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993f9e0baeed60001cf565546b0d3dbe6a6ad23f2bd31644a133c641eccf6d53" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "harp" version = "0.1.0" @@ -216,6 +346,24 @@ dependencies = [ "slog", ] +[[package]] +name = "hashbrown" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91b62f79061a0bc2e046024cb7ba44b08419ed238ecbd9adbd787434b9e8c25" +dependencies = [ + "autocfg", +] + +[[package]] +name = "hermit-abi" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9" +dependencies = [ + "libc", +] + [[package]] name = "hkd32" version = "0.4.0" @@ -239,6 +387,89 @@ dependencies = [ "digest", ] +[[package]] +name = "http" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "httparse" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" + +[[package]] +name = "hyper" +version = "0.13.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e68a8dd9716185d9e64ea473ea6ef63529252e3e27623295a0378a19665d5eb" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project", + "socket2", + "time", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-tls", +] + +[[package]] +name = "indexmap" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b45e59b16c76b11bf9738fd5d38879d3bd28ad292d7b313608becb17ae2df9" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + [[package]] name = "itertools" version = "0.7.11" @@ -263,6 +494,16 @@ dependencies = [ "elliptic-curve", ] +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -299,6 +540,99 @@ dependencies = [ "adler", ] +[[package]] +name = "mio" +version = "0.6.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" +dependencies = [ + "cfg-if", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log", + "miow 0.2.1", + "net2", + "slab", + "winapi 0.2.8", +] + +[[package]] +name = "mio-named-pipes" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656" +dependencies = [ + "log", + "mio", + "miow 0.3.5", + "winapi 0.3.9", +] + +[[package]] +name = "mio-uds" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" +dependencies = [ + "iovec", + "libc", + "mio", +] + +[[package]] +name = "miow" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", +] + +[[package]] +name = "miow" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07b88fb9795d4d36d62a012dfbf49a8f5cf12751f36d31a9dbe66d528e58979e" +dependencies = [ + "socket2", + "winapi 0.3.9", +] + +[[package]] +name = "native-tls" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b0d88c06fe90d5ee94048ba40409ef1d9315d86f6f38c2efdaad4fb50c58b2d" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "net2" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7" +dependencies = [ + "cfg-if", + "libc", + "winapi 0.3.9", +] + [[package]] name = "num-integer" version = "0.1.43" @@ -318,6 +652,16 @@ dependencies = [ "autocfg", ] +[[package]] +name = "num_cpus" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +dependencies = [ + "hermit-abi", + "libc", +] + [[package]] name = "object" version = "0.20.0" @@ -330,6 +674,39 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +[[package]] +name = "openssl" +version = "0.10.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "lazy_static", + "libc", + "openssl-sys", +] + +[[package]] +name = "openssl-probe" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" + +[[package]] +name = "openssl-sys" +version = "0.9.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "pbkdf2" version = "0.5.0" @@ -339,6 +716,44 @@ dependencies = [ "crypto-mac", ] +[[package]] +name = "pin-project" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca4433fff2ae79342e497d9f8ee990d174071408f28f726d6d83af93e58e48aa" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c0e815c3ee9a031fdf5af21c10aa17c573c9c6a566328d99e3936c34e36461f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282adbf10f2698a7a77f8e983a74b2d18176c19a7fd32a45446139ae7b02b715" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33" + [[package]] name = "ppv-lite86" version = "0.2.9" @@ -470,7 +885,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -495,6 +910,16 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +[[package]] +name = "schannel" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" +dependencies = [ + "lazy_static", + "winapi 0.3.9", +] + [[package]] name = "secp256k1" version = "0.17.2" @@ -522,6 +947,29 @@ dependencies = [ "zeroize 1.1.0", ] +[[package]] +name = "security-framework" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64808902d7d99f78eaddd2b4e2509713babc3dc3c85ad6f4c447680f3c01e535" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17bf11d99252f512695eb468de5516e5cf75455521e69dfe343f3b74e4748405" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "serde" version = "1.0.115" @@ -566,6 +1014,16 @@ dependencies = [ "opaque-debug", ] +[[package]] +name = "signal-hook-registry" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e12110bc539e657a646068aaf5eb5b63af9d0c1f7b29c97113fad80e15f035" +dependencies = [ + "arc-swap", + "libc", +] + [[package]] name = "signatory" version = "0.20.0" @@ -613,12 +1071,30 @@ dependencies = [ "synstructure", ] +[[package]] +name = "slab" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" + [[package]] name = "slog" version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99" +[[package]] +name = "socket2" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03088793f677dce356f3ccc2edb1b314ad191ab702a5de3faf49304f7e104918" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "winapi 0.3.9", +] + [[package]] name = "stdtx" version = "0.2.1" @@ -703,7 +1179,7 @@ dependencies = [ "rand", "redox_syscall", "remove_dir_all", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -735,6 +1211,76 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "time" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi 0.3.9", +] + +[[package]] +name = "tokio" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "iovec", + "lazy_static", + "libc", + "memchr", + "mio", + "mio-named-pipes", + "mio-uds", + "num_cpus", + "pin-project-lite", + "signal-hook-registry", + "slab", + "tokio-macros", + "winapi 0.3.9", +] + +[[package]] +name = "tokio-macros" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c3acc6aa564495a0f2e1d59fab677cd7f81a19994cfc7f3ad0e64301560389" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "tokio", +] + [[package]] name = "toml" version = "0.5.6" @@ -744,6 +1290,38 @@ dependencies = [ "serde", ] +[[package]] +name = "tower-service" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" + +[[package]] +name = "tracing" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d79ca061b032d6ce30c660fded31189ca0b9922bf483cd70759f13a2d86786c" +dependencies = [ + "cfg-if", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f0e00789804e99b20f12bc7003ca416309d28a6f495d6af58d1e2c2842461b5" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + [[package]] name = "typenum" version = "1.12.0" @@ -756,18 +1334,46 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +[[package]] +name = "vcpkg" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" + [[package]] name = "version_check" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + [[package]] name = "winapi" version = "0.3.9" @@ -778,6 +1384,12 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -790,6 +1402,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + [[package]] name = "zeroize" version = "1.1.0" diff --git a/datadog/Cargo.toml b/datadog/Cargo.toml index 7678b80e..e0533393 100644 --- a/datadog/Cargo.toml +++ b/datadog/Cargo.toml @@ -7,3 +7,8 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +hyper = "0.13" +hyper-tls = "0.4" +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +tokio = { version = "0.2", features = ["full"] } diff --git a/datadog/src/lib.rs b/datadog/src/lib.rs new file mode 100644 index 00000000..482a9049 --- /dev/null +++ b/datadog/src/lib.rs @@ -0,0 +1,61 @@ +use hyper::{Body, Client, Method, Request}; +use hyper_tls::HttpsConnector; +use serde::{Deserialize, Serialize}; +use serde_json::json; + +struct DatadogConfig { + dd_api_key: String, +} + +pub async fn send_event(value: &T, dd_api_key: String) -> Result<(), ()> +where + T: Serialize, +{ + let event_json = json!({"ddsource":"datadog_crate", "service":"datadog_crate", "ddtags":"env:staging,user:datadog_crate", "hostname":"127.0.0.1", "message":value}); + let event = serde_json::to_string(&event_json).unwrap(); + println!("{:?}", event); + + // https://docs.datadoghq.com/api/v1/logs/#send-logs + let req = Request::builder() + .method(Method::POST) + .uri("https://http-intake.logs.datadoghq.com/v1/input") + .header("Content-Type", "application/json") + .header("DD-API-KEY", dd_api_key) + .body(Body::from(event)) + .unwrap(); + println!("{:?}", &req); + + let https = HttpsConnector::new(); + let client = Client::builder().build::<_, hyper::Body>(https); + let response = client.request(req).await.unwrap(); + if response.status().is_success() { + Ok(()) + } else { + Err(()) + } +} + +#[cfg(all(test, not(windows)))] +mod tests { + use super::send_event; + use serde_json::json; + use std::env; + + fn block_on(f: F) -> F::Output { + tokio::runtime::Builder::new() + .basic_scheduler() + .enable_all() + .build() + .unwrap() + .block_on(f) + } + + #[test] + fn test_send_event() { + let dd_api_key = env::var("DD_API_KEY").unwrap(); + let message = "hello world! datadog crate test blob!!"; + + let event = block_on(send_event(&message, dd_api_key)); + assert_eq!(event, Ok(())); + } +} diff --git a/datadog/src/main.rs b/datadog/src/main.rs deleted file mode 100644 index e7a11a96..00000000 --- a/datadog/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - println!("Hello, world!"); -} From 789705604399bd4a5f7ff5d5871f245a925eb23c Mon Sep 17 00:00:00 2001 From: Shella Stephens Date: Wed, 2 Sep 2020 18:24:00 -0700 Subject: [PATCH 4/9] cargo clippy -- -D warnings --- datadog/src/lib.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/datadog/src/lib.rs b/datadog/src/lib.rs index 482a9049..c3827a87 100644 --- a/datadog/src/lib.rs +++ b/datadog/src/lib.rs @@ -1,12 +1,8 @@ use hyper::{Body, Client, Method, Request}; use hyper_tls::HttpsConnector; -use serde::{Deserialize, Serialize}; +use serde::Serialize; use serde_json::json; -struct DatadogConfig { - dd_api_key: String, -} - pub async fn send_event(value: &T, dd_api_key: String) -> Result<(), ()> where T: Serialize, From 6eba6c4828f06c2327272df0003c2dcbc7683f4f Mon Sep 17 00:00:00 2001 From: Shella Stephens Date: Wed, 2 Sep 2020 19:17:20 -0700 Subject: [PATCH 5/9] cargo test -- --ignored --- datadog/src/lib.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/datadog/src/lib.rs b/datadog/src/lib.rs index c3827a87..434fb372 100644 --- a/datadog/src/lib.rs +++ b/datadog/src/lib.rs @@ -31,7 +31,7 @@ where } } -#[cfg(all(test, not(windows)))] +#[cfg(test)] mod tests { use super::send_event; use serde_json::json; @@ -46,7 +46,9 @@ mod tests { .block_on(f) } + // Run test locally with `cargo test -- --ignored` #[test] + #[ignore] fn test_send_event() { let dd_api_key = env::var("DD_API_KEY").unwrap(); let message = "hello world! datadog crate test blob!!"; From 65b0ff0bfc95f96c61529915ef690af4f634f50c Mon Sep 17 00:00:00 2001 From: Shella Stephens Date: Thu, 3 Sep 2020 08:21:03 -0700 Subject: [PATCH 6/9] add datadog exclude to cargo build cmd for wasm32-unknown-unknown --- .github/workflows/rust.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 0a720f72..eaca467b 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -48,7 +48,7 @@ jobs: with: use-cross: false command: build - args: --all --exclude canonical-path --target wasm32-unknown-unknown + args: --all --exclude canonical-path --exclude datadog --target wasm32-unknown-unknown check: name: Check From f3d1a323506976cfba2298708c508f86178ee5f6 Mon Sep 17 00:00:00 2001 From: Shella Stephens Date: Thu, 3 Sep 2020 08:45:17 -0700 Subject: [PATCH 7/9] cargo test --release --- datadog/src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/datadog/src/lib.rs b/datadog/src/lib.rs index 434fb372..38eaa93e 100644 --- a/datadog/src/lib.rs +++ b/datadog/src/lib.rs @@ -34,7 +34,6 @@ where #[cfg(test)] mod tests { use super::send_event; - use serde_json::json; use std::env; fn block_on(f: F) -> F::Output { From 856606ee630d3b646cedd189d3815da9b042b32f Mon Sep 17 00:00:00 2001 From: Shella Stephens Date: Thu, 3 Sep 2020 12:41:20 -0700 Subject: [PATCH 8/9] Event struct --- datadog/src/lib.rs | 49 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/datadog/src/lib.rs b/datadog/src/lib.rs index 38eaa93e..649eca0e 100644 --- a/datadog/src/lib.rs +++ b/datadog/src/lib.rs @@ -1,14 +1,37 @@ use hyper::{Body, Client, Method, Request}; use hyper_tls::HttpsConnector; -use serde::Serialize; -use serde_json::json; +use serde::{ser, Serialize}; +use std::collections::BTreeMap as Map; + +#[derive(Serialize)] +pub struct Event { + pub ddsource: String, + pub service: String, + #[serde(serialize_with = "serialize_ddtags")] + pub ddtags: DdTags, + pub hostname: String, + pub message: String, +} + +pub type DdTags = Map; + +fn serialize_ddtags(ddtags: &DdTags, serializer: S) -> Result +where + S: ser::Serializer, +{ + ddtags + .iter() + .map(|(k, v)| [k.clone(), v.clone()].join(":")) + .collect::>() + .join(",") + .serialize(serializer) +} pub async fn send_event(value: &T, dd_api_key: String) -> Result<(), ()> where T: Serialize, { - let event_json = json!({"ddsource":"datadog_crate", "service":"datadog_crate", "ddtags":"env:staging,user:datadog_crate", "hostname":"127.0.0.1", "message":value}); - let event = serde_json::to_string(&event_json).unwrap(); + let event = serde_json::to_string(&value).unwrap(); println!("{:?}", event); // https://docs.datadoghq.com/api/v1/logs/#send-logs @@ -33,7 +56,8 @@ where #[cfg(test)] mod tests { - use super::send_event; + use super::{send_event, Event}; + use std::collections::BTreeMap; use std::env; fn block_on(f: F) -> F::Output { @@ -45,14 +69,25 @@ mod tests { .block_on(f) } + // Set env var with `export DD_API_KEY=` // Run test locally with `cargo test -- --ignored` #[test] #[ignore] fn test_send_event() { let dd_api_key = env::var("DD_API_KEY").unwrap(); - let message = "hello world! datadog crate test blob!!"; + let mut ddtags = BTreeMap::new(); + ddtags.insert("env".to_owned(), "staging".to_owned()); + ddtags.insert("user".to_owned(), "datadog_crate".to_owned()); + + let event = Event { + ddsource: "datadog_crate".to_owned(), + service: "datadog_crate".to_owned(), + ddtags: ddtags, + hostname: "127.0.0.1".to_owned(), + message: "hello world! datadog crate test blob!!".to_owned(), + }; - let event = block_on(send_event(&message, dd_api_key)); + let event = block_on(send_event(&event, dd_api_key)); assert_eq!(event, Ok(())); } } From 5fc9f6524c29317bfc5038c68cc6f13562f32ab5 Mon Sep 17 00:00:00 2001 From: Shella Stephens Date: Thu, 3 Sep 2020 12:52:24 -0700 Subject: [PATCH 9/9] Error struct --- datadog/src/lib.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/datadog/src/lib.rs b/datadog/src/lib.rs index 649eca0e..55651ba5 100644 --- a/datadog/src/lib.rs +++ b/datadog/src/lib.rs @@ -3,7 +3,7 @@ use hyper_tls::HttpsConnector; use serde::{ser, Serialize}; use std::collections::BTreeMap as Map; -#[derive(Serialize)] +#[derive(Debug, Serialize)] pub struct Event { pub ddsource: String, pub service: String, @@ -13,6 +13,11 @@ pub struct Event { pub message: String, } +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +pub struct Error { + pub code: u16, +} + pub type DdTags = Map; fn serialize_ddtags(ddtags: &DdTags, serializer: S) -> Result @@ -27,7 +32,7 @@ where .serialize(serializer) } -pub async fn send_event(value: &T, dd_api_key: String) -> Result<(), ()> +pub async fn send_event(value: &T, dd_api_key: String) -> Result<(), Error> where T: Serialize, { @@ -50,7 +55,9 @@ where if response.status().is_success() { Ok(()) } else { - Err(()) + Err(Error { + code: response.status().as_u16(), + }) } }