From ae091a766692b14ac367430eebe01ac555285184 Mon Sep 17 00:00:00 2001 From: "NG (Graham)" Date: Thu, 1 Jan 2026 10:37:56 -0500 Subject: [PATCH] Refactor rc_microtransactions to use actix-web, remove rocket dependency --- Cargo.lock | 542 +----------------- Cargo.toml | 2 - rc_auth/src/main.rs | 1 + rc_microtransactions/Cargo.toml | 5 +- rc_microtransactions/Rocket.toml | 12 - rc_microtransactions/src/cli.rs | 27 + rc_microtransactions/src/main.rs | 26 +- rc_microtransactions/src/robocraft/mod.rs | 7 +- rc_microtransactions/src/robocraft/store.rs | 105 +++- .../src/operations/platform_config.rs | 4 +- utils/package_release.py | 1 - 11 files changed, 160 insertions(+), 572 deletions(-) delete mode 100644 rc_microtransactions/Rocket.toml create mode 100644 rc_microtransactions/src/cli.rs diff --git a/Cargo.lock b/Cargo.lock index 88395c6..442e3b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -452,21 +452,6 @@ dependencies = [ "num-traits 0.2.19", ] -[[package]] -name = "atomic" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" - -[[package]] -name = "atomic" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340" -dependencies = [ - "bytemuck", -] - [[package]] name = "atomic-waker" version = "1.1.2" @@ -517,12 +502,6 @@ dependencies = [ "serde", ] -[[package]] -name = "binascii" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "383d29d513d8764dcdc42ea295d979eb99c3c9f00607b3692cf68a431f7dca72" - [[package]] name = "bitflags" version = "2.10.0" @@ -634,12 +613,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "bytemuck" -version = "1.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" - [[package]] name = "byteorder" version = "1.5.0" @@ -835,17 +808,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "cookie" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" -dependencies = [ - "percent-encoding", - "time", - "version_check", -] - [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -1088,39 +1050,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "devise" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1d90b0c4c777a2cad215e3c7be59ac7c15adf45cf76317009b7d096d46f651d" -dependencies = [ - "devise_codegen", - "devise_core", -] - -[[package]] -name = "devise_codegen" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71b28680d8be17a570a2334922518be6adc3f58ecc880cbb404eaeb8624fd867" -dependencies = [ - "devise_core", - "quote", -] - -[[package]] -name = "devise_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b035a542cf7abf01f2e3c4d5a7acbaebfefe120ae4efc7bde3df98186e4b8af7" -dependencies = [ - "bitflags", - "proc-macro2", - "proc-macro2-diagnostics", - "quote", - "syn 2.0.111", -] - [[package]] name = "digest" version = "0.10.7" @@ -1256,16 +1185,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - [[package]] name = "etcetera" version = "0.8.0" @@ -1288,12 +1207,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - [[package]] name = "ff" version = "0.13.1" @@ -1310,20 +1223,6 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" -[[package]] -name = "figment" -version = "0.10.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3" -dependencies = [ - "atomic 0.6.1", - "pear", - "serde", - "toml", - "uncased", - "version_check", -] - [[package]] name = "find-msvc-tools" version = "0.1.5" @@ -1485,19 +1384,6 @@ dependencies = [ "slab", ] -[[package]] -name = "generator" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" -dependencies = [ - "cc", - "libc", - "log", - "rustversion", - "windows", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -1583,25 +1469,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "h2" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - [[package]] name = "half" version = "2.7.1" @@ -1677,12 +1544,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - [[package]] name = "hex" version = "0.4.3" @@ -1743,17 +1604,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.1" @@ -1773,7 +1623,7 @@ dependencies = [ "bytes", "futures-core", "http 1.4.0", - "http-body 1.0.1", + "http-body", "pin-project-lite", ] @@ -1795,30 +1645,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "hyper" -version = "0.14.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.5.10", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "hyper" version = "1.8.1" @@ -1830,7 +1656,7 @@ dependencies = [ "futures-channel", "futures-core", "http 1.4.0", - "http-body 1.0.1", + "http-body", "httparse", "itoa", "pin-project-lite", @@ -1847,7 +1673,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ "http 1.4.0", - "hyper 1.8.1", + "hyper", "hyper-util", "rustls", "rustls-pki-types", @@ -1869,8 +1695,8 @@ dependencies = [ "futures-core", "futures-util", "http 1.4.0", - "http-body 1.0.1", - "hyper 1.8.1", + "http-body", + "hyper", "ipnet", "libc", "percent-encoding", @@ -2042,12 +1868,6 @@ dependencies = [ "syn 2.0.111", ] -[[package]] -name = "inlinable_string" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" - [[package]] name = "inout" version = "0.1.4" @@ -2073,17 +1893,6 @@ dependencies = [ "serde", ] -[[package]] -name = "is-terminal" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.61.2", -] - [[package]] name = "is_terminal_polyfill" version = "1.70.2" @@ -2267,12 +2076,6 @@ dependencies = [ "zlib-rs", ] -[[package]] -name = "linux-raw-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" - [[package]] name = "litemap" version = "0.8.1" @@ -2335,21 +2138,6 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" -[[package]] -name = "loom" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "serde", - "serde_json", - "tracing", - "tracing-subscriber", -] - [[package]] name = "lru-slab" version = "0.1.2" @@ -2435,34 +2223,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "multer" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" -dependencies = [ - "bytes", - "encoding_rs", - "futures-util", - "http 1.4.0", - "httparse", - "memchr", - "mime", - "spin", - "tokio", - "tokio-util", - "version_check", -] - -[[package]] -name = "nu-ansi-term" -version = "0.50.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" -dependencies = [ - "windows-sys 0.61.2", -] - [[package]] name = "num" version = "0.4.3" @@ -2593,16 +2353,6 @@ dependencies = [ "libm", ] -[[package]] -name = "num_cpus" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "num_enum" version = "0.5.11" @@ -2823,11 +2573,14 @@ dependencies = [ name = "oj_rc_microtransactions" version = "1.1.0" dependencies = [ + "actix-web", + "clap", "env_logger", "git-version", "libfj", "log", - "rocket", + "serde", + "serde_json", ] [[package]] @@ -3078,29 +2831,6 @@ dependencies = [ "hmac", ] -[[package]] -name = "pear" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467" -dependencies = [ - "inlinable_string", - "pear_codegen", - "yansi", -] - -[[package]] -name = "pear_codegen" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147" -dependencies = [ - "proc-macro2", - "proc-macro2-diagnostics", - "quote", - "syn 2.0.111", -] - [[package]] name = "pem" version = "3.0.6" @@ -3579,26 +3309,6 @@ dependencies = [ "bitflags", ] -[[package]] -name = "ref-cast" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - [[package]] name = "regex" version = "1.12.2" @@ -3654,9 +3364,9 @@ dependencies = [ "encoding_rs", "futures-core", "http 1.4.0", - "http-body 1.0.1", + "http-body", "http-body-util", - "hyper 1.8.1", + "hyper", "hyper-rustls", "hyper-util", "js-sys", @@ -3767,88 +3477,6 @@ dependencies = [ "strum 0.27.2", ] -[[package]] -name = "rocket" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a516907296a31df7dc04310e7043b61d71954d703b603cc6867a026d7e72d73f" -dependencies = [ - "async-stream", - "async-trait", - "atomic 0.5.3", - "binascii", - "bytes", - "either", - "figment", - "futures", - "indexmap", - "log", - "memchr", - "multer", - "num_cpus", - "parking_lot", - "pin-project-lite", - "rand 0.8.5", - "ref-cast", - "rocket_codegen", - "rocket_http", - "serde", - "serde_json", - "state", - "tempfile", - "time", - "tokio", - "tokio-stream", - "tokio-util", - "ubyte", - "version_check", - "yansi", -] - -[[package]] -name = "rocket_codegen" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575d32d7ec1a9770108c879fc7c47815a80073f96ca07ff9525a94fcede1dd46" -dependencies = [ - "devise", - "glob", - "indexmap", - "proc-macro2", - "quote", - "rocket_http", - "syn 2.0.111", - "unicode-xid", - "version_check", -] - -[[package]] -name = "rocket_http" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e274915a20ee3065f611c044bd63c40757396b6dbc057d6046aec27f14f882b9" -dependencies = [ - "cookie", - "either", - "futures", - "http 0.2.12", - "hyper 0.14.32", - "indexmap", - "log", - "memchr", - "pear", - "percent-encoding", - "pin-project-lite", - "ref-cast", - "serde", - "smallvec", - "stable-pattern", - "state", - "time", - "tokio", - "uncased", -] - [[package]] name = "rsa" version = "0.9.9" @@ -3900,19 +3528,6 @@ dependencies = [ "semver", ] -[[package]] -name = "rustix" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.61.2", -] - [[package]] name = "rustls" version = "0.23.35" @@ -3970,12 +3585,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - [[package]] name = "scopeguard" version = "1.2.0" @@ -4221,15 +3830,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -4591,30 +4191,12 @@ dependencies = [ "uuid", ] -[[package]] -name = "stable-pattern" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4564168c00635f88eaed410d5efa8131afa8d8699a612c80c455a0ba05c21045" -dependencies = [ - "memchr", -] - [[package]] name = "stable_deref_trait" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" -[[package]] -name = "state" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8" -dependencies = [ - "loom", -] - [[package]] name = "static_assertions" version = "1.1.0" @@ -4719,19 +4301,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" -[[package]] -name = "tempfile" -version = "3.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" -dependencies = [ - "fastrand", - "getrandom 0.3.4", - "once_cell", - "rustix", - "windows-sys 0.61.2", -] - [[package]] name = "thiserror" version = "2.0.17" @@ -4880,26 +4449,11 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_edit 0.22.27", -] - [[package]] name = "toml_datetime" version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] [[package]] name = "toml_datetime" @@ -4921,20 +4475,6 @@ dependencies = [ "winnow 0.5.40", ] -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_write", - "winnow 0.7.14", -] - [[package]] name = "toml_edit" version = "0.23.10+spec-1.0.0" @@ -4956,12 +4496,6 @@ dependencies = [ "winnow 0.7.14", ] -[[package]] -name = "toml_write" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" - [[package]] name = "tower" version = "0.5.2" @@ -4987,7 +4521,7 @@ dependencies = [ "bytes", "futures-util", "http 1.4.0", - "http-body 1.0.1", + "http-body", "iri-string", "pin-project-lite", "tower", @@ -5037,18 +4571,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", ] [[package]] @@ -5058,15 +4580,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" dependencies = [ "matchers", - "nu-ansi-term", "once_cell", "regex-automata", "sharded-slab", - "smallvec", "thread_local", "tracing", "tracing-core", - "tracing-log", ] [[package]] @@ -5098,31 +4617,12 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" -[[package]] -name = "ubyte" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f720def6ce1ee2fc44d40ac9ed6d3a59c361c80a75a7aa8e75bb9baed31cf2ea" -dependencies = [ - "serde", -] - [[package]] name = "ucd-trie" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" -[[package]] -name = "uncased" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" -dependencies = [ - "serde", - "version_check", -] - [[package]] name = "unicase" version = "2.8.1" @@ -5239,12 +4739,6 @@ version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e8257fbc510f0a46eb602c10215901938b5c2a7d5e70fc11483b1d3c9b5b18c" -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - [[package]] name = "vcpkg" version = "0.2.15" @@ -5434,15 +4928,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-core" version = "0.62.2" @@ -5768,9 +5253,6 @@ name = "yansi" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" -dependencies = [ - "is-terminal", -] [[package]] name = "yoke" diff --git a/Cargo.toml b/Cargo.toml index ba76d7f..bc7a947 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,9 +27,7 @@ members = [ ] [workspace.dependencies] -rocket = { version = "0.5", features = [ "json" ] } actix-web = { version = "4", default-features = false, features = [ "macros", "compress-brotli", "compress-gzip", "compress-zstd", "ws"] } -# actix-web 4.12 does not build properly for some reason... actix-files = "0.6" libfj = { version = "0.9", path = "../libfj" } #libfj = { version = "0.8" } diff --git a/rc_auth/src/main.rs b/rc_auth/src/main.rs index 5cb3d92..b5389e7 100644 --- a/rc_auth/src/main.rs +++ b/rc_auth/src/main.rs @@ -1,3 +1,4 @@ +#![forbid(unsafe_code)] mod cli; mod robocraft; diff --git a/rc_microtransactions/Cargo.toml b/rc_microtransactions/Cargo.toml index b8e84b4..2127eb8 100644 --- a/rc_microtransactions/Cargo.toml +++ b/rc_microtransactions/Cargo.toml @@ -8,8 +8,11 @@ repository.workspace = true authors.workspace = true [dependencies] -rocket.workspace = true +actix-web.workspace = true libfj.workspace = true log.workspace = true env_logger.workspace = true git-version.workspace = true +clap.workspace = true +serde.workspace = true +serde_json.workspace = true diff --git a/rc_microtransactions/Rocket.toml b/rc_microtransactions/Rocket.toml deleted file mode 100644 index 1143669..0000000 --- a/rc_microtransactions/Rocket.toml +++ /dev/null @@ -1,12 +0,0 @@ -## defaults for _all_ profiles -[default] -address = "127.0.0.1" -port = 8011 - -## set only when compiled in debug mode, i.e, `cargo build` -[debug] -port = 8011 - -## set only when compiled in release mode, i.e, `cargo build --release` -[release] -address = "0.0.0.0" diff --git a/rc_microtransactions/src/cli.rs b/rc_microtransactions/src/cli.rs new file mode 100644 index 0000000..c8e30e9 --- /dev/null +++ b/rc_microtransactions/src/cli.rs @@ -0,0 +1,27 @@ +use clap::Parser; + +#[derive(Parser, Debug, Clone)] +#[command(version, about, long_about = None)] +pub struct CliArgs { + /// TCP port on which to accept connections + #[arg(short, long, default_value_t = 8011)] + pub port: u16, + + /// IP Address on which to accept connections + #[arg(long, default_value_t = {"127.0.0.1".to_string()})] + pub ip: String, + + /// Assets root + #[arg(long, default_value_t = {"../assets/robocraft".to_string()})] + pub assets_robocraft: String, + + /// User data root + #[arg(long, default_value_t = {"../data/robocraft".to_string()})] + pub data_robocraft: String, +} + +impl CliArgs { + pub fn get() -> Self { + Self::parse() + } +} diff --git a/rc_microtransactions/src/main.rs b/rc_microtransactions/src/main.rs index 8b7e68f..cd4a419 100644 --- a/rc_microtransactions/src/main.rs +++ b/rc_microtransactions/src/main.rs @@ -1,8 +1,11 @@ #![forbid(unsafe_code)] +mod cli; mod robocraft; -#[rocket::get("/")] -fn index() -> String { +use actix_web::{App, HttpServer, Responder}; + +#[actix_web::get("/")] +async fn index() -> impl Responder { let name = env!("CARGO_PKG_NAME"); let version = env!("CARGO_PKG_VERSION"); let git_version = git_version::git_version!(args = ["--always", "--dirty=+"]); @@ -12,10 +15,21 @@ fn index() -> String { format!("{} {}:{} by [{}]\n{}\n{}", name, version, git_version, authors, license, repo) } -#[rocket::launch] -fn rocket() -> _ { +#[actix_web::main] +async fn main() -> std::io::Result<()> { env_logger::init(); - rocket::build().mount("/", rocket::routes![index]) - .attach(robocraft::stage()) + let cli_args = cli::CliArgs::get(); + + let cli_args2 = actix_web::web::Data::new(cli_args.clone()); + + HttpServer::new(move || { + App::new() + .app_data(cli_args2.clone()) + .service(index) + .service(robocraft::robopay_store) + }) + .bind((cli_args.ip, cli_args.port))? + .run() + .await } diff --git a/rc_microtransactions/src/robocraft/mod.rs b/rc_microtransactions/src/robocraft/mod.rs index 3e93e82..b3b3c76 100644 --- a/rc_microtransactions/src/robocraft/mod.rs +++ b/rc_microtransactions/src/robocraft/mod.rs @@ -1,7 +1,2 @@ mod store; - -pub fn stage() -> rocket::fairing::AdHoc { - rocket::fairing::AdHoc::on_ignite("JSON", |rocket| async { - rocket.attach(store::stage()) - }) -} +pub use store::robopay_store; diff --git a/rc_microtransactions/src/robocraft/store.rs b/rc_microtransactions/src/robocraft/store.rs index 272a61c..0a304bc 100644 --- a/rc_microtransactions/src/robocraft/store.rs +++ b/rc_microtransactions/src/robocraft/store.rs @@ -1,17 +1,98 @@ -use rocket::{post, routes, serde::json::{json, Value}}; +use actix_web::{web::{Data, Json}, Error, post}; +use serde::Serialize; + +#[derive(Serialize)] +struct Response { + response: T +} + +#[derive(Serialize)] +struct ResponseData { + data: Vec +} + +#[derive(Serialize)] +struct StoreBundle { + #[serde(rename = "items")] + items: Vec, + #[serde(rename = "itemSku")] + item_sku: String, + #[serde(rename = "currencyCode")] + currency_code: String, + #[serde(rename = "currencyString")] + currency_string: String, + #[serde(rename = "oldCurrencyString")] + old_currency_string: String, + #[serde(rename = "priceForCheck")] + price_for_check: f32, + #[serde(rename = "oldPriceForCheck")] + old_price_for_check: f32, + #[serde(rename = "additionalValue")] + additional_value: i32, + #[serde(rename = "mostPopular")] + most_popular: bool, + #[serde(rename = "bestValue")] + best_value: bool, + #[serde(rename = "currencyType")] + currency_type: String, + #[serde(rename = "available")] + is_available: bool, + #[serde(rename = "owned")] + is_owned: bool, +} + +#[derive(Serialize)] +struct StoreItem { + #[serde(rename = "itemType")] + item_type: StoreItemType, + #[serde(rename = "amount")] + amount: i32, + #[serde(rename = "data")] + data: String, +} + +#[allow(dead_code)] +#[derive(Serialize)] +enum StoreItemType { + RoboPass = 0, + CosmeticCredits = 1, + Premium = 2, + PremiumForLife = 3, + Cube = 4, + Robits = 5, + Other = 6 +} + +type ItemResponse = Response>; #[post("/robopay/store")] -pub fn robopay_store() -> Value { +pub async fn robopay_store(_cli: Data) -> Result, Error> { // TODO authentication (Authorization header is "Robocraft {JWT token from auth}") - json!({ - "response": { - "data": [] + Ok(Json(Response { + response: ResponseData { + data: vec![ + StoreBundle { + items: vec![ + StoreItem { + item_type: StoreItemType::CosmeticCredits, + amount: 1, + data: "RE_store_item_data_01".to_owned(), + }, + ], + item_sku: "CosmeticCredits1".to_owned(), // SKUs can be found in RealMoneyStoreExtraData of sharedassets2.assets + currency_code: "RE_no_currency".to_owned(), + currency_string: "RE_DO_NOT_BUY_01".to_owned(), + old_currency_string: "RE_DO_NOT_BUY_OLD_01".to_owned(), + price_for_check: 42.0, + old_price_for_check: 41.0, + additional_value: 999888777, + most_popular: true, + best_value: true, + currency_type: "RE_price_type_01".to_owned(), + is_available: true, + is_owned: false, + }, + ] } - }) -} - -pub fn stage() -> rocket::fairing::AdHoc { - rocket::fairing::AdHoc::on_ignite("Robocraft store info", |rocket| async { - rocket.mount("/", routes![robopay_store]) - }) + })) } diff --git a/rc_services_room/src/operations/platform_config.rs b/rc_services_room/src/operations/platform_config.rs index caa76cb..0522d98 100644 --- a/rc_services_room/src/operations/platform_config.rs +++ b/rc_services_room/src/operations/platform_config.rs @@ -36,9 +36,9 @@ impl SimpleOperation for PlatformConfigProvider { val_ty: TypePrefix::Any, // obj items: vec![ (Typed::Str("BuyPremiumAvailable".into()), Typed::Bool(false)), - (Typed::Str("MainShopButtonAvailable".into()), Typed::Bool(false)), + (Typed::Str("MainShopButtonAvailable".into()), Typed::Bool(true)), (Typed::Str("RoboPassButtonAvailable".into()), Typed::Bool(false)), - (Typed::Str("LanguageSelectionAvailable".into()), Typed::Bool(false)), + (Typed::Str("LanguageSelectionAvailable".into()), Typed::Bool(true)), (Typed::Str("AutoJoinPublicChatRoom".into()), Typed::Str(client_selected_channel.into())), (Typed::Str("CanCreateChatRooms".into()), Typed::Bool(self.chat_config.can_create_channels)), (Typed::Str("CurseVoiceEnabled".into()), Typed::Bool(false)), diff --git a/utils/package_release.py b/utils/package_release.py index 982c8b1..33708fe 100755 --- a/utils/package_release.py +++ b/utils/package_release.py @@ -46,7 +46,6 @@ PROJECT_FOLDERS_TO_INCLUDE = [ # extra assets; not ones in one of the listed folders PROJECT_ASSETS_TO_INCLUDE = [ - "rc_microtransactions/Rocket.toml", "utils/cube_gen.py", "LICENSE", "README.md",