Compare commits

..
Author SHA1 Message Date
phoenix 3cfa757a07 Updating packages (#8)
Release Tagging / release (push) Successful in 55s
swoosh Build / Check (push) Successful in 1m34s
swoosh Build / Rustfmt (push) Successful in 39s
swoosh Build / Test Suite (push) Successful in 2m2s
swoosh Build / Clippy (push) Successful in 1m24s
swoosh Build / build (push) Successful in 1m21s
Reviewed-on: #8
2026-06-13 16:43:23 -04:00
phoenix 1aa2c5870c Updating package name (#7)
Release Tagging / release (push) Successful in 40s
swoosh Build / Rustfmt (push) Successful in 37s
swoosh Build / Check (push) Successful in 1m37s
swoosh Build / Clippy (push) Successful in 1m13s
swoosh Build / build (push) Successful in 1m24s
swoosh Build / Test Suite (push) Successful in 2m14s
Reviewed-on: #7
2026-06-13 12:33:21 -04:00
phoenix 122f1183ac Bug fix (#6)
Release Tagging / release (push) Successful in 53s
swoosh Build / Check (push) Successful in 1m6s
swoosh Build / Rustfmt (push) Successful in 29s
swoosh Build / Test Suite (push) Successful in 1m14s
swoosh Build / Clippy (push) Successful in 1m1s
swoosh Build / build (push) Successful in 1m10s
Reviewed-on: #6
2026-06-07 15:21:23 -04:00
phoenix ab01daafea Change return type (#5)
Release Tagging / release (push) Successful in 29s
swoosh Build / Check (push) Successful in 48s
swoosh Build / Rustfmt (push) Successful in 27s
swoosh Build / Clippy (push) Successful in 28s
swoosh Build / Test Suite (push) Successful in 1m22s
swoosh Build / build (push) Successful in 27s
Release Tagging / release (pull_request) Successful in 29s
swoosh Build / Check (pull_request) Successful in 1m20s
swoosh Build / Test Suite (pull_request) Successful in 1m16s
swoosh Build / Rustfmt (pull_request) Successful in 26s
swoosh Build / Clippy (pull_request) Successful in 1m15s
swoosh Build / build (pull_request) Successful in 1m57s
Reviewed-on: #5
2026-06-04 21:11:40 -04:00
phoenix 8dd26cee44 Merge pull request 'v0.3.0' (#1) from v0.3.x into main
Release Tagging / release (push) Successful in 37s
swoosh Build / Check (push) Successful in 41s
swoosh Build / Test Suite (push) Successful in 32s
swoosh Build / Clippy (push) Successful in 51s
swoosh Build / build (push) Successful in 34s
swoosh Build / Rustfmt (push) Successful in 2m5s
Reviewed-on: #1
2026-06-04 20:40:22 -04:00
phoenix 04086e3182 Send message (#4)
swoosh Build / Test Suite (pull_request) Successful in 1m10s
Release Tagging / release (pull_request) Successful in 36s
swoosh Build / Check (pull_request) Successful in 40s
swoosh Build / Rustfmt (pull_request) Successful in 25s
swoosh Build / Clippy (pull_request) Successful in 1m2s
swoosh Build / build (pull_request) Successful in 27s
Reviewed-on: #4
2026-06-04 20:37:40 -04:00
7 changed files with 95 additions and 219 deletions
+2 -2
View File
@@ -3,10 +3,10 @@ name: Release Tagging
on: on:
push: push:
branches: branches:
- v0.3.x - main
pull_request: pull_request:
branches: branches:
- v0.3.x - main
jobs: jobs:
release: release:
+7 -3
View File
@@ -3,10 +3,10 @@ name: swoosh Build
on: on:
push: push:
branches: branches:
- v0.3.x - main
pull_request: pull_request:
branches: branches:
- v0.3.x - main
jobs: jobs:
check: check:
@@ -17,6 +17,7 @@ jobs:
- uses: actions-rust-lang/setup-rust-toolchain@v1 - uses: actions-rust-lang/setup-rust-toolchain@v1
with: with:
toolchain: 1.95 toolchain: 1.95
- uses: Swatinem/rust-cache@v2
- run: | - run: |
mkdir -p ~/.ssh mkdir -p ~/.ssh
echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key
@@ -36,6 +37,7 @@ jobs:
- uses: actions-rust-lang/setup-rust-toolchain@v1 - uses: actions-rust-lang/setup-rust-toolchain@v1
with: with:
toolchain: 1.95 toolchain: 1.95
- uses: Swatinem/rust-cache@v2
- run: | - run: |
mkdir -p ~/.ssh mkdir -p ~/.ssh
echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key
@@ -55,6 +57,7 @@ jobs:
- uses: actions-rust-lang/setup-rust-toolchain@v1 - uses: actions-rust-lang/setup-rust-toolchain@v1
with: with:
toolchain: 1.95 toolchain: 1.95
- uses: Swatinem/rust-cache@v2
- run: rustup component add rustfmt - run: rustup component add rustfmt
- run: | - run: |
mkdir -p ~/.ssh mkdir -p ~/.ssh
@@ -75,6 +78,7 @@ jobs:
- uses: actions-rust-lang/setup-rust-toolchain@v1 - uses: actions-rust-lang/setup-rust-toolchain@v1
with: with:
toolchain: 1.95 toolchain: 1.95
- uses: Swatinem/rust-cache@v2
- run: rustup component add clippy - run: rustup component add clippy
- run: | - run: |
mkdir -p ~/.ssh mkdir -p ~/.ssh
@@ -95,6 +99,7 @@ jobs:
- uses: actions-rust-lang/setup-rust-toolchain@v1 - uses: actions-rust-lang/setup-rust-toolchain@v1
with: with:
toolchain: 1.95 toolchain: 1.95
- uses: Swatinem/rust-cache@v2
- run: | - run: |
mkdir -p ~/.ssh mkdir -p ~/.ssh
echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key
@@ -105,4 +110,3 @@ jobs:
ssh-add -v ~/.ssh/textsender-models_deploy_key ssh-add -v ~/.ssh/textsender-models_deploy_key
cargo build cargo build
Generated
+51 -53
View File
@@ -59,15 +59,15 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]] [[package]]
name = "base64-ng" name = "base64-ng"
version = "1.0.6" version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8452b0c98385f31f08318109d6e06a859f89e0c5e38aad6103f095443b063052" checksum = "f6e82a23a3dc4d31148b7f0ea64039a0e59bba046e2879fe763f512bc1f26597"
[[package]] [[package]]
name = "bitflags" name = "bitflags"
version = "2.12.1" version = "2.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "84d7ced0ae9557296835c32bf1b1e02b44c746701f898460fb000d7eaa84f00a" checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
[[package]] [[package]]
name = "bumpalo" name = "bumpalo"
@@ -83,9 +83,9 @@ checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.2.63" version = "1.2.64"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" checksum = "dad887fd958be91b5098c0248def011f4523ab786cd411be668777e55063501f"
dependencies = [ dependencies = [
"find-msvc-tools", "find-msvc-tools",
"jobserver", "jobserver",
@@ -493,9 +493,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]] [[package]]
name = "http" name = "http"
version = "1.4.1" version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8be7462df143984c4598a256ef469b251d7d7f9e271135073e78fc535414f3d0" checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425"
dependencies = [ dependencies = [
"bytes", "bytes",
"itoa", "itoa",
@@ -802,13 +802,12 @@ dependencies = [
[[package]] [[package]]
name = "js-sys" name = "js-sys"
version = "0.3.99" version = "0.3.102"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"futures-util", "futures-util",
"once_cell",
"wasm-bindgen", "wasm-bindgen",
] ]
@@ -862,9 +861,9 @@ dependencies = [
[[package]] [[package]]
name = "log" name = "log"
version = "0.4.31" version = "0.4.32"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "113b30b4cd05f7c06868fdb2854f66a7b9fece9a48425351cd532e810d74024f" checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a"
[[package]] [[package]]
name = "lru-slab" name = "lru-slab"
@@ -874,9 +873,9 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
[[package]] [[package]]
name = "memchr" name = "memchr"
version = "2.8.1" version = "2.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
[[package]] [[package]]
name = "mime" name = "mime"
@@ -929,9 +928,9 @@ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
[[package]] [[package]]
name = "openssl" name = "openssl"
version = "0.10.80" version = "0.10.81"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a45fa2aa886c42762255da344f0a0d313e254066c46aad76f300c3d3da62d967" checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"cfg-if", "cfg-if",
@@ -960,9 +959,9 @@ checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
[[package]] [[package]]
name = "openssl-sys" name = "openssl-sys"
version = "0.9.116" version = "0.9.117"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f28a22dc7140cda5f096e5e7724a6962ca81a7f8bfd2979f9b18c11af56318c4" checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695"
dependencies = [ dependencies = [
"cc", "cc",
"libc", "libc",
@@ -1188,9 +1187,9 @@ dependencies = [
[[package]] [[package]]
name = "regex" name = "regex"
version = "1.12.3" version = "1.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba"
dependencies = [ dependencies = [
"aho-corasick", "aho-corasick",
"memchr", "memchr",
@@ -1211,9 +1210,9 @@ dependencies = [
[[package]] [[package]]
name = "regex-syntax" name = "regex-syntax"
version = "0.8.10" version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
[[package]] [[package]]
name = "reqwest" name = "reqwest"
@@ -1545,9 +1544,9 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
[[package]] [[package]]
name = "smallvec" name = "smallvec"
version = "1.15.1" version = "1.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
[[package]] [[package]]
name = "socket2" name = "socket2"
@@ -1573,7 +1572,7 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]] [[package]]
name = "swoosh" name = "swoosh"
version = "0.2.1" version = "0.3.4"
dependencies = [ dependencies = [
"base64-ng", "base64-ng",
"const_format", "const_format",
@@ -1658,13 +1657,12 @@ dependencies = [
[[package]] [[package]]
name = "textsender_models" name = "textsender_models"
version = "0.2.5" version = "0.3.1"
source = "git+ssh://git@git.kundeng.us/phoenix/textsender-models.git?tag=v0.2.5-v0.3.0-migrate-38dbcb09f7-111#38dbcb09f7c2c572f429ec382c01e14b72b1d615" source = "git+ssh://git@git.kundeng.us/phoenix/textsender_models.git?tag=v0.3.1#ba998096cb5d35dae8e627136a795c4d9af5c8f5"
dependencies = [ dependencies = [
"const_format", "const_format",
"dotenvy", "dotenvy",
"josekit", "josekit",
"rand 0.10.1",
"serde", "serde",
"serde_json", "serde_json",
"time", "time",
@@ -1937,9 +1935,9 @@ dependencies = [
[[package]] [[package]]
name = "uuid" name = "uuid"
version = "1.23.2" version = "1.23.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7" checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7"
dependencies = [ dependencies = [
"getrandom 0.4.2", "getrandom 0.4.2",
"js-sys", "js-sys",
@@ -1980,9 +1978,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
[[package]] [[package]]
name = "wasip2" name = "wasip2"
version = "1.0.3+wasi-0.2.9" version = "1.0.4+wasi-0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
dependencies = [ dependencies = [
"wit-bindgen 0.57.1", "wit-bindgen 0.57.1",
] ]
@@ -1998,9 +1996,9 @@ dependencies = [
[[package]] [[package]]
name = "wasm-bindgen" name = "wasm-bindgen"
version = "0.2.122" version = "0.2.125"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"once_cell", "once_cell",
@@ -2011,9 +2009,9 @@ dependencies = [
[[package]] [[package]]
name = "wasm-bindgen-futures" name = "wasm-bindgen-futures"
version = "0.4.72" version = "0.4.75"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f" checksum = "503b14d284f2c8dac03b819967e155ea753f573586193b2b2c95990cb5d69280"
dependencies = [ dependencies = [
"js-sys", "js-sys",
"wasm-bindgen", "wasm-bindgen",
@@ -2021,9 +2019,9 @@ dependencies = [
[[package]] [[package]]
name = "wasm-bindgen-macro" name = "wasm-bindgen-macro"
version = "0.2.122" version = "0.2.125"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d"
dependencies = [ dependencies = [
"quote", "quote",
"wasm-bindgen-macro-support", "wasm-bindgen-macro-support",
@@ -2031,9 +2029,9 @@ dependencies = [
[[package]] [[package]]
name = "wasm-bindgen-macro-support" name = "wasm-bindgen-macro-support"
version = "0.2.122" version = "0.2.125"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd"
dependencies = [ dependencies = [
"bumpalo", "bumpalo",
"proc-macro2", "proc-macro2",
@@ -2044,9 +2042,9 @@ dependencies = [
[[package]] [[package]]
name = "wasm-bindgen-shared" name = "wasm-bindgen-shared"
version = "0.2.122" version = "0.2.125"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f"
dependencies = [ dependencies = [
"unicode-ident", "unicode-ident",
] ]
@@ -2100,9 +2098,9 @@ dependencies = [
[[package]] [[package]]
name = "web-sys" name = "web-sys"
version = "0.3.99" version = "0.3.102"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436" checksum = "a6430a72df5eb332242960fe84b3002a241163998241eb596d4f739b9757061d"
dependencies = [ dependencies = [
"js-sys", "js-sys",
"wasm-bindgen", "wasm-bindgen",
@@ -2429,9 +2427,9 @@ checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
[[package]] [[package]]
name = "yoke" name = "yoke"
version = "0.8.2" version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5"
dependencies = [ dependencies = [
"stable_deref_trait", "stable_deref_trait",
"yoke-derive", "yoke-derive",
@@ -2452,18 +2450,18 @@ dependencies = [
[[package]] [[package]]
name = "zerocopy" name = "zerocopy"
version = "0.8.50" version = "0.8.52"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1" checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
dependencies = [ dependencies = [
"zerocopy-derive", "zerocopy-derive",
] ]
[[package]] [[package]]
name = "zerocopy-derive" name = "zerocopy-derive"
version = "0.8.50" version = "0.8.52"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639" checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -2493,9 +2491,9 @@ dependencies = [
[[package]] [[package]]
name = "zeroize" name = "zeroize"
version = "1.8.2" version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e"
[[package]] [[package]]
name = "zerotrie" name = "zerotrie"
+3 -3
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "swoosh" name = "swoosh"
version = "0.2.1" version = "0.3.4"
edition = "2024" edition = "2024"
rust-version = "1.95" rust-version = "1.95"
description = "Library to send text messages" description = "Library to send text messages"
@@ -15,10 +15,10 @@ reqwest = { version = "0.13.3", features = ["form", "json", "blocking", "multipa
rand = { version = "0.10.1" } rand = { version = "0.10.1" }
time = { version = "0.3.47", features = ["formatting", "macros", "parsing", "serde"] } time = { version = "0.3.47", features = ["formatting", "macros", "parsing", "serde"] }
uuid = { version = "1.23.1", features = ["v4", "serde"] } uuid = { version = "1.23.1", features = ["v4", "serde"] }
base64-ng = { version = "1.0.6" } base64-ng = { version = "1.0.8" }
const_format = { version = "0.2.36" } const_format = { version = "0.2.36" }
josekit = { version = "0.10.3" } josekit = { version = "0.10.3" }
textsender_models = { git = "ssh://git@git.kundeng.us/phoenix/textsender-models.git", tag = "v0.2.5-v0.3.0-migrate-38dbcb09f7-111" } textsender_models = { git = "ssh://git@git.kundeng.us/phoenix/textsender_models.git", tag = "v0.3.1" }
[dev-dependencies] [dev-dependencies]
tempfile = { version = "3.27.0" } tempfile = { version = "3.27.0" }
+18 -121
View File
@@ -1,13 +1,18 @@
// use josekit::jwk::alg::ec::EcCurve::P256;
pub mod types; pub mod types;
pub async fn response_to_json(response: reqwest::Response) -> serde_json::Value {
match response.json().await {
Ok(json_body) => json_body,
Err(_err) => serde_json::Value::Null,
}
}
pub async fn send_mssage( pub async fn send_mssage(
msg: &textsender_models::message::Message, msg: &textsender_models::message::Message,
contact: &textsender_models::contact::Contact, contact: &textsender_models::contact::Contact,
param: crate::twilio::types::Parameters, param: crate::twilio::types::Parameters,
config: &textsender_models::config::auxiliary::TwilioConfig, config: &textsender_models::config::auxiliary::TwilioConfig,
) -> Result<crate::twilio::api::types::TwilioAPIMessage, std::io::Error> { ) -> Result<reqwest::Response, std::io::Error> {
if config.account_sid.is_empty() { if config.account_sid.is_empty() {
Err(std::io::Error::other("Account SID is empty")) Err(std::io::Error::other("Account SID is empty"))
} else if config.auth_token.is_empty() { } else if config.auth_token.is_empty() {
@@ -23,28 +28,18 @@ pub async fn send_mssage(
); );
headers.insert("Accept", "application/json".parse().unwrap()); headers.insert("Accept", "application/json".parse().unwrap());
let auth = generate_auth(config).unwrap(); let auth = generate_auth(config).unwrap();
// headers.insert("Authorization", "Basic QUNlZmExZWY1MTYzMTRjOWQxYTY4Y2JkNjU3ZGU0OTI3NzpmNGExZjJiMGI3OWVhMzczNTA3OGMyZDhlZTk2ODRlMQ==".parse()?);
headers.insert("Authorization", auth.parse().unwrap()); headers.insert("Authorization", auth.parse().unwrap());
let mut params = std::collections::HashMap::new(); let mut params = std::collections::HashMap::new();
params.insert("To", contact.phone_number.as_str()); params.insert("To", contact.phone_number.as_str());
// params.insert("StatusCallback", "http://OjQozHznkhNTTR.vpnrM1zdXFuiQ");
// params.insert("MaxPrice", "1");
params.insert("ProvideFeedback", "true"); params.insert("ProvideFeedback", "true");
// params.insert("Attempt", "5");
// params.insert("ValidityPeriod", "1537");
params.insert("ForceDelivery", "false"); params.insert("ForceDelivery", "false");
params.insert("ContentRetention", "retain"); params.insert("ContentRetention", "retain");
params.insert("AddressRetention", "obfuscate"); params.insert("AddressRetention", "obfuscate");
params.insert("SmartEncoded", "true"); params.insert("SmartEncoded", "true");
// params.insert("PersistentAction", "string");
// params.insert("PersistentAction", "string");
params.insert("ShortenUrls", "true"); params.insert("ShortenUrls", "true");
let date = match param.schedule_at { let date = match param.schedule_at {
Some(date_value) => { Some(date_value) => date_value.to_string(),
let converted = date_value.to_string();
converted
}
None => String::new(), None => String::new(),
}; };
if param.schedule && is_scheduleable(&Some(now), &param.schedule_at) { if param.schedule && is_scheduleable(&Some(now), &param.schedule_at) {
@@ -62,38 +57,14 @@ pub async fn send_mssage(
config.account_sid config.account_sid
); );
// let client = reqwest::Client::new();
/*
let request = client.request(reqwest::Method::POST, url)
.headers(headers)
.form(&params);
*/
let request = client.post(url).headers(headers).form(&params); let request = client.post(url).headers(headers).form(&params);
match request.send().await { match request.send().await {
Ok(response) => { Ok(response) => match response.status() {
match response reqwest::StatusCode::CREATED => Ok(response),
.json::<crate::twilio::api::types::TwilioAPIMessage>() status => Err(std::io::Error::other(format!(
.await "Unaccounted status: {status:?}"
{ ))),
Ok(resp) => Ok(resp), },
Err(err) => Err(std::io::Error::other(err)),
}
/*
match response.text().await {
Ok(body) => {
let mut obj = crate::twilio::api::types::TwilioAPIMessage {
..Default::default()
};
Ok(obj)
}
Err(err) => {
Err(std::io::Error::other(err))
}
}
*/
}
Err(err) => Err(std::io::Error::other(err.to_string())), Err(err) => Err(std::io::Error::other(err.to_string())),
} }
} }
@@ -112,18 +83,7 @@ fn generate_auth(
} }
} }
/* /*
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::builder()
.build()?;
let mut headers = reqwest::header::HeaderMap::new();
headers.insert("Content-Type", "application/x-www-form-urlencoded".parse()?);
headers.insert("Accept", "application/json".parse()?);
headers.insert("Authorization", "Basic QUNlZmExZWY1MTYzMTRjOWQxYTY4Y2JkNjU3ZGU0OTI3NzpmNGExZjJiMGI3OWVhMzczNTA3OGMyZDhlZTk2ODRlMQ==".parse()?);
let mut params = std::collections::HashMap::new(); let mut params = std::collections::HashMap::new();
params.insert("To", "16303831708");
params.insert("StatusCallback", "http://OjQozHznkhNTTR.vpnrM1zdXFuiQ"); params.insert("StatusCallback", "http://OjQozHznkhNTTR.vpnrM1zdXFuiQ");
params.insert("MaxPrice", "1"); params.insert("MaxPrice", "1");
params.insert("ProvideFeedback", "true"); params.insert("ProvideFeedback", "true");
@@ -136,74 +96,11 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
params.insert("PersistentAction", "string"); params.insert("PersistentAction", "string");
params.insert("PersistentAction", "string"); params.insert("PersistentAction", "string");
params.insert("ShortenUrls", "true"); params.insert("ShortenUrls", "true");
params.insert("ScheduleType", "fixed");
params.insert("SendAt", "2026-06-03T19:50:00.0Z");
params.insert("SendAsMms", "true"); params.insert("SendAsMms", "true");
params.insert("RiskCheck", "enable"); params.insert("RiskCheck", "enable");
params.insert("From", "12243026041");
params.insert("MessagingServiceSid", "MG803f3676706b92eb02e18dd820c447f2");
params.insert("Body", "This is a test");
let request = client.request(reqwest::Method::POST, "https://api.twilio.com/2010-04-01/Accounts/ACefa1ef516314c9d1a68cbd657de49277/Messages.json")
.headers(headers)
.form(&params);
let response = request.send().await?;
let body = response.text().await?;
println!("{}", body);
Ok(())
}
*/ */
/** const DEFAULT_SCHEDULING_SECONDS: i64 = 300;
func (m *MessageSender) Send(msg message.Message, number contact.Contact, sendTime *time.Time) (*types.TwilioResult, map[string]any, error) {
if m.Config == nil {
return nil, nil, fmt.Errorf("Config has not been initialized")
}
now := time.Now()
client := twilio.NewRestClientWithParams(twilio.ClientParams{
Username: m.Config.AccountSID,
Password: m.Config.AuthToken,
})
params := &twilioApi.CreateMessageParams{}
params.SetTo(number.PhoneNumber)
params.SetFrom(m.Config.Number)
params.SetMessagingServiceSid(m.Config.ServiceSID)
params.SetBody(msg.Content)
if sendTime != nil && isSchedulable(&now, sendTime) {
params.SetSendAt(*sendTime)
params.SetScheduleType(Schedule_Type)
}
if resp, err := client.Api.CreateMessage(params); err != nil {
return nil, nil, fmt.Errorf("Error sending message: %v", err)
} else {
if twilioRespMarshaled, err := json.Marshal(*resp); err != nil {
return nil, nil, fmt.Errorf("Error parsing result: %v", err)
} else {
var rawObject map[string]any
if err := json.Unmarshal(twilioRespMarshaled, &rawObject); err != nil {
return resp, nil, err
} else {
return resp, rawObject, nil
}
}
}
}
func isSchedulable(now *time.Time, scheduled *time.Time) bool {
early := now.Add(Schedulable_Limit_In_Seconds * time.Second)
if scheduled.After(early) {
return true
} else {
return false
}
}
*/
fn is_scheduleable( fn is_scheduleable(
now: &Option<time::OffsetDateTime>, now: &Option<time::OffsetDateTime>,
@@ -213,9 +110,9 @@ fn is_scheduleable(
Some(schedule_at) => { Some(schedule_at) => {
let early = now let early = now
.unwrap() .unwrap()
.checked_add(time::Duration::seconds(300)) .checked_add(time::Duration::seconds(DEFAULT_SCHEDULING_SECONDS))
.unwrap(); .unwrap();
if *schedule_at > early { true } else { false } *schedule_at > early
} }
None => false, None => false,
} }
+13 -32
View File
@@ -3,20 +3,28 @@ pub struct TwilioAPIMessage {
pub account_sid: String, pub account_sid: String,
pub api_version: String, pub api_version: String,
pub body: String, pub body: String,
// pub date_created: time::OffsetDateTime, #[serde(with = "time::serde::rfc3339::option")]
pub date_created: Option<time::OffsetDateTime>,
#[serde(with = "time::serde::rfc3339::option")]
pub date_sent: Option<time::OffsetDateTime>, pub date_sent: Option<time::OffsetDateTime>,
#[serde(with = "time::serde::rfc3339::option")]
pub date_updated: Option<time::OffsetDateTime>, pub date_updated: Option<time::OffsetDateTime>,
pub direction: String, pub direction: String,
// Not definite of what type this is // Not definite of what type this is
pub error_code: Option<String>, #[serde(skip_serializing_if = "String::is_empty")]
pub error_code: String,
// Not definite of what type this is // Not definite of what type this is
pub error_message: Option<String>, #[serde(skip_serializing_if = "String::is_empty")]
pub error_message: String,
pub from: String, pub from: String,
pub messaging_service_sid: String, pub messaging_service_sid: String,
pub num_media: String, pub num_media: String,
pub num_segments: String, pub num_segments: String,
pub price: Option<String>, #[serde(skip_serializing_if = "String::is_empty")]
pub price_unit: Option<String>, pub price: String,
#[serde(skip_serializing_if = "String::is_empty")]
pub price_unit: String,
#[serde(skip_serializing_if = "String::is_empty")]
pub sid: String, pub sid: String,
pub status: String, pub status: String,
pub subresource_uris: SubresourceURI, pub subresource_uris: SubresourceURI,
@@ -28,30 +36,3 @@ pub struct TwilioAPIMessage {
pub struct SubresourceURI { pub struct SubresourceURI {
pub media: String, pub media: String,
} }
/*
{
"account_sid": "ACefa1ef516314c9d1a68cbd657de49277",
"api_version": "2010-04-01",
"body": "This is a test",
"date_created": "Wed, 03 Jun 2026 19:40:55 +0000",
"date_sent": null,
"date_updated": "Wed, 03 Jun 2026 19:40:55 +0000",
"direction": "outbound-api",
"error_code": null,
"error_message": null,
"from": "+12243026041",
"messaging_service_sid": "MG803f3676706b92eb02e18dd820c447f2",
"num_media": "0",
"num_segments": "0",
"price": null,
"price_unit": null,
"sid": "SMf5c09c776c931bdb00c6e274da2ce34d",
"status": "scheduled",
"subresource_uris": {
"media": "/2010-04-01/Accounts/ACefa1ef516314c9d1a68cbd657de49277/Messages/SMf5c09c776c931bdb00c6e274da2ce34d/Media.json"
},
"to": "+16303831708",
"uri": "/2010-04-01/Accounts/ACefa1ef516314c9d1a68cbd657de49277/Messages/SMf5c09c776c931bdb00c6e274da2ce34d.json"
}
*/
+1 -5
View File
@@ -1,8 +1,4 @@
// Things needed to send a message /// Parameters - Controls flow of sending message
// Contact - Receipient to send to (textsender-models)
// Message - The content to sent (textsender-models)
// Parameters - Controls flow of sending message
// Config - Contains info needed to send message (textsender-models)
pub struct Parameters { pub struct Parameters {
pub schedule: bool, pub schedule: bool,
pub schedule_at: Option<time::OffsetDateTime>, pub schedule_at: Option<time::OffsetDateTime>,