b628096
commit b628096
4 files changed
+82 -1
Showing 4 changed files+82-1
▼Cargo.lock
+71-1
| @@ -1359,6 +1359,16 @@ dependencies = [ | ||
1359 | 1359 | "serde", |
1360 | 1360 | ] |
1361 | 1361 | |
1362 | +[[package]] | |
1363 | +name = "email-encoding" | |
1364 | +version = "0.4.1" | |
1365 | +source = "registry+https://github.com/rust-lang/crates.io-index" | |
1366 | +checksum = "9298e6504d9b9e780ed3f7dfd43a61be8cd0e09eb07f7706a945b0072b6670b6" | |
1367 | +dependencies = [ | |
1368 | + "base64 0.22.1", | |
1369 | + "memchr", | |
1370 | +] | |
1371 | + | |
1362 | 1372 | [[package]] |
1363 | 1373 | name = "email_address" |
1364 | 1374 | version = "0.2.9" |
| @@ -2719,7 +2729,9 @@ dependencies = [ | ||
2719 | 2729 | "jsonschema", |
2720 | 2730 | "jsonwebtoken", |
2721 | 2731 | "justapi-inference", |
2732 | + "lettre", | |
2722 | 2733 | "matchit 0.9.2", |
2734 | + "minijinja", | |
2723 | 2735 | "multer", |
2724 | 2736 | "notify", |
2725 | 2737 | "opentelemetry", |
| @@ -2841,6 +2853,33 @@ version = "0.1.0" | ||
2841 | 2853 | source = "registry+https://github.com/rust-lang/crates.io-index" |
2842 | 2854 | checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" |
2843 | 2855 | |
2856 | +[[package]] | |
2857 | +name = "lettre" | |
2858 | +version = "0.11.22" | |
2859 | +source = "registry+https://github.com/rust-lang/crates.io-index" | |
2860 | +checksum = "0da65617f6cb926332d039cb578aad56178da86e128db6a1b09f4c94fa5b3349" | |
2861 | +dependencies = [ | |
2862 | + "async-trait", | |
2863 | + "base64 0.22.1", | |
2864 | + "email-encoding", | |
2865 | + "email_address", | |
2866 | + "fastrand", | |
2867 | + "futures-io", | |
2868 | + "futures-util", | |
2869 | + "httpdate", | |
2870 | + "idna", | |
2871 | + "mime", | |
2872 | + "nom 8.0.0", | |
2873 | + "percent-encoding", | |
2874 | + "quoted_printable", | |
2875 | + "rustls", | |
2876 | + "socket2 0.6.4", | |
2877 | + "tokio", | |
2878 | + "tokio-rustls", | |
2879 | + "url", | |
2880 | + "webpki-roots 1.0.8", | |
2881 | +] | |
2882 | + | |
2844 | 2883 | [[package]] |
2845 | 2884 | name = "libc" |
2846 | 2885 | version = "0.2.186" |
| @@ -3007,6 +3046,12 @@ dependencies = [ | ||
3007 | 3046 | "stable_deref_trait", |
3008 | 3047 | ] |
3009 | 3048 | |
3049 | +[[package]] | |
3050 | +name = "memo-map" | |
3051 | +version = "0.3.3" | |
3052 | +source = "registry+https://github.com/rust-lang/crates.io-index" | |
3053 | +checksum = "38d1115007560874e373613744c6fba374c17688327a71c1476d1a5954cc857b" | |
3054 | + | |
3010 | 3055 | [[package]] |
3011 | 3056 | name = "micromap" |
3012 | 3057 | version = "0.3.0" |
| @@ -3019,6 +3064,16 @@ version = "0.3.17" | ||
3019 | 3064 | source = "registry+https://github.com/rust-lang/crates.io-index" |
3020 | 3065 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" |
3021 | 3066 | |
3067 | +[[package]] | |
3068 | +name = "minijinja" | |
3069 | +version = "2.21.0" | |
3070 | +source = "registry+https://github.com/rust-lang/crates.io-index" | |
3071 | +checksum = "cb3d648e68cea56d9858d535ee28f9538404e2dd8cb08ed0bd05dca379477f39" | |
3072 | +dependencies = [ | |
3073 | + "memo-map", | |
3074 | + "serde", | |
3075 | +] | |
3076 | + | |
3022 | 3077 | [[package]] |
3023 | 3078 | name = "minimal-lexical" |
3024 | 3079 | version = "0.2.1" |
| @@ -3102,6 +3157,15 @@ dependencies = [ | ||
3102 | 3157 | "minimal-lexical", |
3103 | 3158 | ] |
3104 | 3159 | |
3160 | +[[package]] | |
3161 | +name = "nom" | |
3162 | +version = "8.0.0" | |
3163 | +source = "registry+https://github.com/rust-lang/crates.io-index" | |
3164 | +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" | |
3165 | +dependencies = [ | |
3166 | + "memchr", | |
3167 | +] | |
3168 | + | |
3105 | 3169 | [[package]] |
3106 | 3170 | name = "nonzero_ext" |
3107 | 3171 | version = "0.3.0" |
| @@ -3918,6 +3982,12 @@ dependencies = [ | ||
3918 | 3982 | "proc-macro2", |
3919 | 3983 | ] |
3920 | 3984 | |
3985 | +[[package]] | |
3986 | +name = "quoted_printable" | |
3987 | +version = "0.5.2" | |
3988 | +source = "registry+https://github.com/rust-lang/crates.io-index" | |
3989 | +checksum = "478e0585659a122aa407eb7e3c0e1fa51b1d8a870038bd29f0cf4a8551eea972" | |
3990 | + | |
3921 | 3991 | [[package]] |
3922 | 3992 | name = "r-efi" |
3923 | 3993 | version = "5.3.0" |
| @@ -4634,7 +4704,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | ||
4634 | 4704 | checksum = "5851699c4033c63636f7ea4cf7b7c1f1bf06d0cc03cfb42e711de5a5c46cf326" |
4635 | 4705 | dependencies = [ |
4636 | 4706 | "base64 0.13.1", |
4637 | - "nom", | |
4707 | + "nom 7.1.3", | |
4638 | 4708 | "serde", |
4639 | 4709 | "unicode-segmentation", |
4640 | 4710 | ] |
4641 | 4711 | |
▼Cargo.toml
+4-0
| @@ -95,3 +95,7 @@ governor = "0.8" | ||
95 | 95 | |
96 | 96 | # Database |
97 | 97 | sqlx = { version = "0.8", features = ["runtime-tokio", "postgres", "sqlite", "mysql", "migrate", "any", "tls-rustls"] } |
98 | + | |
99 | +# Mail (optional) | |
100 | +lettre = { version = "0.11", default-features = false, features = ["builder", "smtp-transport", "tokio1-rustls-tls", "rustls-tls"] } | |
101 | +minijinja = "2.7" | |
98 | 102 | |
▼crates/justapi-core/Cargo.toml
+3-0
| @@ -14,6 +14,7 @@ zstd-compression = ["compression", "zstd"] | ||
14 | 14 | opentelemetry = ["dep:opentelemetry", "dep:opentelemetry_sdk", "dep:opentelemetry-stdout", "dep:opentelemetry-otlp", "dep:tracing-opentelemetry"] |
15 | 15 | db = ["sqlx", "chrono"] |
16 | 16 | inference = ["justapi-inference"] |
17 | +mail = ["dep:lettre", "dep:minijinja"] | |
17 | 18 | |
18 | 19 | [dependencies] |
19 | 20 | tokio.workspace = true |
| @@ -69,6 +70,8 @@ arc-swap = "1.9.2" | ||
69 | 70 | async-graphql = "7.2.1" |
70 | 71 | justapi-inference = { path = "../justapi-inference", optional = true } |
71 | 72 | tempfile = "3.27.0" |
73 | +lettre = { workspace = true, optional = true } | |
74 | +minijinja = { workspace = true, optional = true } | |
72 | 75 | |
73 | 76 | [dev-dependencies] |
74 | 77 | proptest = "1" |
75 | 78 | |
▼crates/justapi-py/Cargo.toml
+4-0
| @@ -7,6 +7,10 @@ license.workspace = true | ||
7 | 7 | [lib] |
8 | 8 | crate-type = ["cdylib", "lib"] |
9 | 9 | |
10 | +[features] | |
11 | +default = ["mail"] | |
12 | +mail = ["justapi-core/mail"] | |
13 | + | |
10 | 14 | [dependencies] |
11 | 15 | pyo3.workspace = true |
12 | 16 | justapi-core = { workspace = true, features = ["db", "ws"] } |
13 | 17 | |