diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 587d37e567..8d2405ea80 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -30,7 +30,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom", + "getrandom 0.2.8", "once_cell", "version_check", ] @@ -93,6 +93,17 @@ dependencies = [ "syn", ] +[[package]] +name = "async-channel" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + [[package]] name = "async-lock" version = "2.6.0" @@ -112,7 +123,7 @@ dependencies = [ "base64 0.13.1", "bytes", "http", - "rand", + "rand 0.8.5", "reqwest", "serde", "serde-aux", @@ -133,6 +144,29 @@ dependencies = [ "syn", ] +[[package]] +name = "async-stripe" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71b85eb331f5c2b6ae4ff00aabd20a8a21de88b9890c58579616bf760570b207" +dependencies = [ + "chrono", + "hex", + "hmac", + "http-types", + "hyper", + "hyper-tls", + "serde", + "serde_json", + "serde_qs 0.9.2", + "sha2 0.10.6", + "smart-default", + "smol_str", + "thiserror", + "tokio", + "uuid 0.8.2", +] + [[package]] name = "async-timer" version = "0.7.4" @@ -407,9 +441,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.0.32" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39" +checksum = "4ec7a4128863c188deefe750ac1d1dfe66c236909f845af04beed823638dc1b2" dependencies = [ "bitflags", "clap_derive", @@ -422,9 +456,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.0.21" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014" +checksum = "684a277d672e91966334af371f1a7b5833f9aa00b07c84e92fbce95e00208ce8" dependencies = [ "heck", "proc-macro-error", @@ -435,9 +469,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8" +checksum = "783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558ade" dependencies = [ "os_str_bytes", ] @@ -452,6 +486,15 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "concurrent-queue" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "const-oid" version = "0.9.1" @@ -1119,6 +1162,17 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + [[package]] name = "getrandom" version = "0.2.8" @@ -1302,6 +1356,27 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" +[[package]] +name = "http-types" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad" +dependencies = [ + "anyhow", + "async-channel", + "base64 0.13.1", + "futures-lite", + "http", + "infer", + "pin-project-lite", + "rand 0.7.3", + "serde", + "serde_json", + "serde_qs 0.8.5", + "serde_urlencoded", + "url", +] + [[package]] name = "httparse" version = "1.8.0" @@ -1408,6 +1483,12 @@ dependencies = [ "serde", ] +[[package]] +name = "infer" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" + [[package]] name = "instant" version = "0.1.12" @@ -1419,9 +1500,9 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" +checksum = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e" dependencies = [ "libc", "windows-sys", @@ -1784,9 +1865,9 @@ checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" [[package]] name = "nom" -version = "7.1.2" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5507769c4919c998e69e49c839d9dc6e693ede4cc4290d6ad8b41d4f09c548c" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", @@ -1826,7 +1907,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand", + "rand 0.8.5", "smallvec", "zeroize", ] @@ -1882,6 +1963,27 @@ dependencies = [ "libc", ] +[[package]] +name = "num_enum" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "once_cell" version = "1.17.0" @@ -1986,7 +2088,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.5", + "parking_lot_core 0.9.6", ] [[package]] @@ -2005,9 +2107,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" +checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf" dependencies = [ "cfg-if", "libc", @@ -2023,7 +2125,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -2050,9 +2152,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pest" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f6e86fb9e7026527a0d46bc308b841d73170ef8f443e1807f6ef88526a816d4" +checksum = "4257b4a04d91f7e9e6290be5d3da4804dd5784fafde3a497d73eb2b4a158c30a" dependencies = [ "thiserror", "ucd-trie", @@ -2104,7 +2206,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" dependencies = [ "phf_shared 0.10.0", - "rand", + "rand 0.8.5", ] [[package]] @@ -2114,7 +2216,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf" dependencies = [ "phf_shared 0.11.1", - "rand", + "rand 0.8.5", ] [[package]] @@ -2290,7 +2392,7 @@ dependencies = [ [[package]] name = "progenitor" version = "0.2.1-dev" -source = "git+https://github.com/oxidecomputer/progenitor#634bf98b053cc494191365e2072b3580f4b03df6" +source = "git+https://github.com/oxidecomputer/progenitor#46d2df0e2a3dcbaea70669df6afb75ae27dea348" dependencies = [ "anyhow", "clap", @@ -2300,12 +2402,13 @@ dependencies = [ "progenitor-macro", "serde", "serde_json", + "serde_yaml", ] [[package]] name = "progenitor-client" version = "0.2.1-dev" -source = "git+https://github.com/oxidecomputer/progenitor#634bf98b053cc494191365e2072b3580f4b03df6" +source = "git+https://github.com/oxidecomputer/progenitor#46d2df0e2a3dcbaea70669df6afb75ae27dea348" dependencies = [ "bytes", "futures-core", @@ -2319,7 +2422,7 @@ dependencies = [ [[package]] name = "progenitor-impl" version = "0.2.1-dev" -source = "git+https://github.com/oxidecomputer/progenitor#634bf98b053cc494191365e2072b3580f4b03df6" +source = "git+https://github.com/oxidecomputer/progenitor#46d2df0e2a3dcbaea70669df6afb75ae27dea348" dependencies = [ "getopts", "heck", @@ -2341,7 +2444,7 @@ dependencies = [ [[package]] name = "progenitor-macro" version = "0.2.1-dev" -source = "git+https://github.com/oxidecomputer/progenitor#634bf98b053cc494191365e2072b3580f4b03df6" +source = "git+https://github.com/oxidecomputer/progenitor#46d2df0e2a3dcbaea70669df6afb75ae27dea348" dependencies = [ "openapiv3", "proc-macro2", @@ -2351,6 +2454,7 @@ dependencies = [ "serde", "serde_json", "serde_tokenstream", + "serde_yaml", "syn", ] @@ -2377,6 +2481,19 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + [[package]] name = "rand" version = "0.8.5" @@ -2384,8 +2501,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", ] [[package]] @@ -2395,7 +2522,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", ] [[package]] @@ -2404,7 +2540,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.8", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", ] [[package]] @@ -2422,7 +2567,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom", + "getrandom 0.2.8", "redox_syscall", "thiserror", ] @@ -2518,7 +2663,7 @@ dependencies = [ "async-lock", "async-timer", "log", - "rand", + "rand 0.8.5", ] [[package]] @@ -2550,7 +2695,7 @@ dependencies = [ "num-traits", "pkcs1", "pkcs8", - "rand_core", + "rand_core 0.6.4", "signature", "smallvec", "subtle", @@ -2644,9 +2789,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.20.7" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2c" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" dependencies = [ "log", "ring", @@ -2666,7 +2811,7 @@ dependencies = [ [[package]] name = "rustpython-ast" version = "0.2.0" -source = "git+https://github.com/RustPython/RustPython#c7faae9b22ce31a3ba1f2cc1cd3ad759b54ce100" +source = "git+https://github.com/RustPython/RustPython#59b191c789c891a500659d2c3b29a645883f780a" dependencies = [ "num-bigint", "rustpython-compiler-core", @@ -2675,7 +2820,7 @@ dependencies = [ [[package]] name = "rustpython-compiler-core" version = "0.2.0" -source = "git+https://github.com/RustPython/RustPython#c7faae9b22ce31a3ba1f2cc1cd3ad759b54ce100" +source = "git+https://github.com/RustPython/RustPython#59b191c789c891a500659d2c3b29a645883f780a" dependencies = [ "bincode", "bitflags", @@ -2684,15 +2829,15 @@ dependencies = [ "lz4_flex", "num-bigint", "num-complex", + "num_enum", "serde", - "static_assertions", "thiserror", ] [[package]] name = "rustpython-parser" version = "0.2.0" -source = "git+https://github.com/RustPython/RustPython#c7faae9b22ce31a3ba1f2cc1cd3ad759b54ce100" +source = "git+https://github.com/RustPython/RustPython#59b191c789c891a500659d2c3b29a645883f780a" dependencies = [ "ahash", "anyhow", @@ -2755,7 +2900,7 @@ dependencies = [ "schemars_derive", "serde", "serde_json", - "uuid", + "uuid 1.2.2", ] [[package]] @@ -2932,6 +3077,28 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_qs" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" +dependencies = [ + "percent-encoding", + "serde", + "thiserror", +] + +[[package]] +name = "serde_qs" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af4cee6cd4b23b45e6709150d1e9af5c748131de7e3316a7c2b3008051ed725" +dependencies = [ + "percent-encoding", + "serde", + "thiserror", +] + [[package]] name = "serde_tokenstream" version = "0.1.6" @@ -2969,6 +3136,19 @@ dependencies = [ "v8", ] +[[package]] +name = "serde_yaml" +version = "0.9.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92b5b431e8907b50339b51223b97d102db8d987ced36f6e4d03621db9316c834" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + [[package]] name = "sha1" version = "0.10.5" @@ -3029,7 +3209,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" dependencies = [ "digest 0.10.6", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -3053,6 +3233,26 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +[[package]] +name = "smart-default" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "smol_str" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7475118a28b7e3a2e157ce0131ba8c5526ea96e90ee601d9f6bb2e286a35ab44" +dependencies = [ + "serde", +] + [[package]] name = "socket2" version = "0.4.7" @@ -3107,9 +3307,9 @@ dependencies = [ [[package]] name = "sqlformat" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f87e292b4291f154971a43c3774364e2cbcaec599d3f5bf6fa9d122885dbc38a" +checksum = "0c12bc9199d1db8234678b7051747c07f517cdcf019262d1847b94ec8b1aee3e" dependencies = [ "itertools", "nom", @@ -3162,7 +3362,7 @@ dependencies = [ "once_cell", "paste", "percent-encoding", - "rand", + "rand 0.8.5", "rustls", "rustls-pemfile", "serde", @@ -3176,7 +3376,7 @@ dependencies = [ "thiserror", "tokio-stream", "url", - "uuid", + "uuid 1.2.2", "webpki-roots", "whoami", ] @@ -3330,9 +3530,9 @@ dependencies = [ [[package]] name = "swc_ecma_ast" -version = "0.96.0" +version = "0.96.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55fccfea4d41e77d7e31f93acffa258e3333a9066d6c777ea32bb2632c221565" +checksum = "708345b44bedd33ff5dedfc66263070af0cad788d4bb19b51007b4583a64c43f" dependencies = [ "bitflags", "is-macro", @@ -3347,9 +3547,9 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "0.124.1" +version = "0.124.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d71a685535ac5ff338bccc4a4bea254f3bb5eff8a568db26b40dc1b87829c7c" +checksum = "1ec6b89544ad2242a8e19d966a6c3ac8e6eb5ec5060e08bdcb01062c479b41ca" dependencies = [ "either", "enum_kind", @@ -3456,9 +3656,9 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ "winapi-util", ] @@ -3924,8 +4124,8 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13a3aaa69b04e5b66cc27309710a569ea23593612387d67daaf102e73aa974fd" dependencies = [ - "rand", - "uuid", + "rand 0.8.5", + "uuid 1.2.2", ] [[package]] @@ -4052,6 +4252,12 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "029df4cc8238cefc911704ff8fa210853a0f3bce2694d8f51181dd41ee0f3301" +[[package]] +name = "unsafe-libyaml" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7ed8ba44ca06be78ea1ad2c3682a43349126c8818054231ee6f4748012aed2" + [[package]] name = "untrusted" version = "0.7.1" @@ -4076,13 +4282,22 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom 0.2.8", +] + [[package]] name = "uuid" version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" dependencies = [ - "getrandom", + "getrandom 0.2.8", "serde", ] @@ -4144,6 +4359,12 @@ dependencies = [ "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" @@ -4309,12 +4530,12 @@ version = "1.60.0" dependencies = [ "anyhow", "axum", - "base64 0.11.0", + "base64 0.21.0", "chrono", "dotenv", "futures", "git-version", - "rand", + "rand 0.8.5", "reqwest", "rsa", "serde_json", @@ -4337,6 +4558,7 @@ dependencies = [ "anyhow", "argon2", "async-oauth2", + "async-stripe", "axum", "base64 0.21.0", "chrono", @@ -4350,7 +4572,7 @@ dependencies = [ "itertools", "magic-crypt", "mime_guess", - "rand", + "rand 0.8.5", "reqwest", "retainer", "rust-embed", @@ -4389,11 +4611,11 @@ dependencies = [ "chrono", "progenitor", "progenitor-client", - "rand", + "rand 0.8.5", "reqwest", "serde", "serde_json", - "uuid", + "uuid 1.2.2", ] [[package]] @@ -4420,7 +4642,7 @@ dependencies = [ "hmac", "hyper", "prometheus", - "rand", + "rand 0.8.5", "reqwest", "serde", "serde_json", @@ -4430,7 +4652,7 @@ dependencies = [ "tokio", "tracing", "tracing-subscriber", - "uuid", + "uuid 1.2.2", ] [[package]] @@ -4514,7 +4736,7 @@ dependencies = [ "sqlx", "tracing", "ulid", - "uuid", + "uuid 1.2.2", "windmill-audit", "windmill-common", ] @@ -4535,14 +4757,14 @@ dependencies = [ "itertools", "lazy_static", "prometheus", - "rand", + "rand 0.8.5", "regex", "serde", "serde_json", "sqlx", "tokio", "tracing", - "uuid", + "uuid 1.2.2", "windmill-api-client", "windmill-audit", "windmill-common", @@ -4571,45 +4793,45 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" [[package]] name = "windows_aarch64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" [[package]] name = "windows_i686_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" +checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" [[package]] name = "windows_i686_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" +checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" [[package]] name = "windows_x86_64_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" +checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" +checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" [[package]] name = "windows_x86_64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" +checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" [[package]] name = "winreg" diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 250574c19e..8bebdf120f 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -144,3 +144,4 @@ serde_derive = "1.0.147" const_format = { version = "0.2", features = ["rust_1_64", "rust_1_51"] } dyn-iter = "0.2.0" rsa = "0.7.2" +async-stripe = { version = "0.14", features = ["runtime-tokio-hyper", "checkout"] } \ No newline at end of file diff --git a/backend/windmill-api/Cargo.toml b/backend/windmill-api/Cargo.toml index e94ab92866..b1d8d6debf 100644 --- a/backend/windmill-api/Cargo.toml +++ b/backend/windmill-api/Cargo.toml @@ -69,3 +69,4 @@ hmac.workspace = true cookie.workspace = true sha2.workspace = true urlencoding.workspace = true +async-stripe.workspace = true diff --git a/backend/windmill-api/src/workspaces.rs b/backend/windmill-api/src/workspaces.rs index 04aa11e569..de203bf38e 100644 --- a/backend/windmill-api/src/workspaces.rs +++ b/backend/windmill-api/src/workspaces.rs @@ -6,12 +6,15 @@ * LICENSE-AGPL for a copy of the license. */ +use std::sync::Arc; + use crate::{ db::{UserDB, DB}, folders::Folder, resources::{Resource, ResourceType}, users::{Authed, WorkspaceInvite}, utils::require_super_admin, + BaseUrl, }; use axum::{ body::StreamBody, @@ -50,6 +53,7 @@ pub fn workspaced_service() -> Router { .route("/edit_auto_invite", post(edit_auto_invite)) .route("/tarball", get(tarball_workspace)) .route("/premium_info", get(premium_info)) + .route("/checkout", get(stripe_checkout)) } pub fn global_service() -> Router { Router::new() @@ -201,6 +205,43 @@ async fn premium_info( Ok(Json(row)) } +async fn stripe_checkout(authed: Authed, Extension(base_url): Extension>) { + let client = stripe::Client::new("sk_test_51MCt8dGU3NdFi9eLNhKb8RXkvb267we5HyeJ46wyLCESokSLsqsY2EKdcOsapepcEBlUYTQXJ8957tYN6h3zE2ir00Nwfl41w0"); + // finally, create a checkout session for this product / price + let success_rd = format!( + "{}/workspace_settings?session={{CHECKOUT_SESSION_ID}}", + base_url.0 + ); + let failure_rd = format!("{}/workspace_settings", base_url.0); + let checkout_session = { + let mut params = stripe::CreateCheckoutSession::new(&failure_rd, &success_rd); + params.mode = Some(stripe::CheckoutSessionMode::Subscription); + params.line_items = Some(vec![ + stripe::CreateCheckoutSessionLineItems { + quantity: None, + price: Some("price_1MQzMHGU3NdFi9eLWFC7IXEv".to_string()), + ..Default::default() + }, + stripe::CreateCheckoutSessionLineItems { + quantity: None, + price: Some("price_1MR2BZGU3NdFi9eLNRuibxPx".to_string()), + ..Default::default() + }, + ]); + params.customer_email = Some(&authed.email); + params.client_reference_id = Some("foo"); + stripe::CheckoutSession::create(&client, params) + .await + .unwrap() + }; + + println!( + "created a {} at {}", + checkout_session.payment_status, + checkout_session.url.unwrap() + ); +} + async fn exists_workspace( authed: Authed, Extension(user_db): Extension, diff --git a/backend/windmill-common/src/tracing_init.rs b/backend/windmill-common/src/tracing_init.rs index 117701cacd..1531350ada 100644 --- a/backend/windmill-common/src/tracing_init.rs +++ b/backend/windmill-common/src/tracing_init.rs @@ -42,7 +42,11 @@ pub fn initialize_tracing() { match json_fmt { true => ts_base - .with(json_layer().with_filter(filter_fn(filter_metadata))) + .with( + json_layer() + .flatten_event(true) + .with_filter(filter_fn(filter_metadata)), + ) .init(), false => ts_base .with(