commit 057f40d6179c3cfdba1089de77fd6af85f2afdd5
parent f8e02d9730b6fd44e7b2cfb5104b610d921479ef
Author: Antoine A <>
Date: Fri, 31 Jul 2026 10:43:18 +0200
common: sync with taler-rust
Diffstat:
8 files changed, 55 insertions(+), 57 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
@@ -895,13 +895,13 @@ dependencies = [
[[package]]
name = "displaydoc"
-version = "0.2.6"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
+checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.119",
+ "syn 3.0.3",
]
[[package]]
@@ -1322,9 +1322,9 @@ dependencies = [
[[package]]
name = "http"
-version = "1.4.2"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425"
+checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0"
dependencies = [
"bytes",
"itoa",
@@ -1356,7 +1356,7 @@ dependencies = [
[[package]]
name = "http-client"
version = "1.5.0"
-source = "git+git://git.taler.net/taler-rust.git/#0b262a884fa9afaf4b718cf7b841f0fa0a9dc62f"
+source = "git+git://git.taler.net/taler-rust.git/#f8078cd31e1046e7ffd587b8ac6bf27793590f99"
dependencies = [
"compact_str",
"futures-util",
@@ -1398,9 +1398,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "hybrid-array"
-version = "0.4.13"
+version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c"
+checksum = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b"
dependencies = [
"typenum",
]
@@ -1930,7 +1930,7 @@ dependencies = [
"bitflags 2.13.1",
"libc",
"plain",
- "redox_syscall 0.9.0",
+ "redox_syscall 0.9.1",
]
[[package]]
@@ -2571,9 +2571,9 @@ dependencies = [
[[package]]
name = "redox_syscall"
-version = "0.9.0"
+version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5102a6aaa05aa011a238e178e6bca86d2cb56fc9f586d37cb80f5bca6e07759"
+checksum = "07507be7b4a5f9f26eeb41eeaebb1f5a7ff29dfb29739facc21d35bf8b11c21e"
dependencies = [
"bitflags 2.13.1",
]
@@ -2765,9 +2765,9 @@ dependencies = [
[[package]]
name = "rustls"
-version = "0.23.42"
+version = "0.23.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c54fcab019b409d04215d3a17cb438fd7fbf192ee61461f20f4fe18704bc138"
+checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06"
dependencies = [
"aws-lc-rs",
"log",
@@ -3467,7 +3467,7 @@ dependencies = [
[[package]]
name = "taler-api"
version = "1.5.0"
-source = "git+git://git.taler.net/taler-rust.git/#0b262a884fa9afaf4b718cf7b841f0fa0a9dc62f"
+source = "git+git://git.taler.net/taler-rust.git/#f8078cd31e1046e7ffd587b8ac6bf27793590f99"
dependencies = [
"aws-lc-rs",
"axum",
@@ -3495,12 +3495,12 @@ dependencies = [
[[package]]
name = "taler-build"
version = "1.5.0"
-source = "git+git://git.taler.net/taler-rust.git/#0b262a884fa9afaf4b718cf7b841f0fa0a9dc62f"
+source = "git+git://git.taler.net/taler-rust.git/#f8078cd31e1046e7ffd587b8ac6bf27793590f99"
[[package]]
name = "taler-common"
version = "1.5.0"
-source = "git+git://git.taler.net/taler-rust.git/#0b262a884fa9afaf4b718cf7b841f0fa0a9dc62f"
+source = "git+git://git.taler.net/taler-rust.git/#f8078cd31e1046e7ffd587b8ac6bf27793590f99"
dependencies = [
"anyhow",
"aws-lc-rs",
@@ -3530,7 +3530,7 @@ dependencies = [
[[package]]
name = "taler-macros"
version = "1.5.0"
-source = "git+git://git.taler.net/taler-rust.git/#0b262a884fa9afaf4b718cf7b841f0fa0a9dc62f"
+source = "git+git://git.taler.net/taler-rust.git/#f8078cd31e1046e7ffd587b8ac6bf27793590f99"
dependencies = [
"proc-macro2",
"quote",
@@ -3540,7 +3540,7 @@ dependencies = [
[[package]]
name = "taler-test-utils"
version = "1.5.0"
-source = "git+git://git.taler.net/taler-rust.git/#0b262a884fa9afaf4b718cf7b841f0fa0a9dc62f"
+source = "git+git://git.taler.net/taler-rust.git/#f8078cd31e1046e7ffd587b8ac6bf27793590f99"
dependencies = [
"aws-lc-rs",
"axum",
@@ -3708,13 +3708,13 @@ dependencies = [
[[package]]
name = "tokio-macros"
-version = "2.7.1"
+version = "2.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6328af13490e73a9b4694030fafd93f8c8c6a9dede33e821c3fc63eddf8042ba"
+checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.119",
+ "syn 3.0.3",
]
[[package]]
diff --git a/libeufin-bank/src/api/wire.rs b/libeufin-bank/src/api/wire.rs
@@ -33,7 +33,7 @@ use taler_api::{
constants::WIRE_GATEWAY_API_VERSION,
error::{ApiResult, failure_code},
extract::{Path, Query, Req},
- subject::{IncomingSubject, fmt_in_subject},
+ subject::{IncomingKey, fmt_in_subject},
};
use taler_common::{
api::{
@@ -92,7 +92,7 @@ async fn admin_add_incoming(
username: &str,
amount: &Amount,
debtor: &PaytoURI,
- metadata: &IncomingSubject,
+ metadata: &IncomingKey,
) -> ApiResult<Response> {
let payto = BankPayto::try_from(debtor)?;
match add_incoming(
@@ -101,7 +101,7 @@ async fn admin_add_incoming(
&payto,
&format!(
"Admin incoming {}",
- fmt_in_subject(metadata.ty(), metadata.key())
+ fmt_in_subject(metadata.ty, &metadata.key)
),
username,
&Timestamp::now(),
@@ -331,7 +331,7 @@ pub fn wire_api() -> Router<Arc<BankState>> {
&auth.username,
&req.amount,
&req.debit_account,
- &IncomingSubject::Reserve(req.reserve_pub),
+ &IncomingKey::reserve(req.reserve_pub),
)
.await
},
@@ -349,7 +349,7 @@ pub fn wire_api() -> Router<Arc<BankState>> {
&auth.username,
&req.amount,
&req.debit_account,
- &IncomingSubject::Kyc(req.account_pub),
+ &IncomingKey::kyc(req.account_pub),
)
.await
},
@@ -367,7 +367,7 @@ pub fn wire_api() -> Router<Arc<BankState>> {
&auth.username,
&req.amount,
&req.debit_account,
- &IncomingSubject::Map(req.authorization_pub),
+ &IncomingKey::map(req.authorization_pub),
)
.await
},
diff --git a/libeufin-bank/src/db/exchange.rs b/libeufin-bank/src/db/exchange.rs
@@ -25,7 +25,7 @@ use taler_api::{
db::{BindHelper, TypeHelper, history, page},
notification::NotificationChannel,
serialized,
- subject::{IncomingSubject, fmt_out_subject},
+ subject::{IncomingKey, fmt_out_subject},
};
use taler_common::{
api::{
@@ -231,7 +231,7 @@ pub async fn add_incoming(
subject: &str,
username: &str,
timestamp: &Timestamp,
- metadata: &IncomingSubject,
+ metadata: &IncomingKey,
) -> sqlx::Result<AddIncomingResult> {
serialized!(
sqlx::query(
@@ -250,13 +250,13 @@ pub async fn add_incoming(
FROM taler_add_incoming($1,$2,$3,$4,$5,$6,$7::taler_incoming_type)
",
)
- .bind(metadata.key())
+ .bind(metadata.key)
.bind(subject)
.bind(amount)
.bind(debtor.canonical())
.bind(username)
.bind_timestamp(timestamp)
- .bind(metadata.ty().as_ref())
+ .bind(metadata.ty.as_ref())
.try_map(|r: PgRow| {
Ok(if r.try_get_flag("out_creditor_not_found")? {
AddIncomingResult::UnknownExchange
diff --git a/libeufin-bank/src/db/tx.rs b/libeufin-bank/src/db/tx.rs
@@ -25,7 +25,7 @@ use taler_api::{
db::{BindHelper, TypeHelper, history},
notification::NotificationChannel,
serialized,
- subject::{IncomingSubject, parse_incoming_unstructured},
+ subject::{IncomingKey, IncomingSubject, parse_incoming_unstructured},
};
use taler_common::{
api::{ShortHashCode, params::History, revenue::RevenueIncomingBankTransaction},
@@ -64,19 +64,14 @@ pub async fn create(
min_amount: Amount,
max_amount: Amount,
) -> sqlx::Result<TxResult> {
- let res = match parse_incoming_unstructured(subject) {
- Ok(subject) => {
- if IncomingSubject::AdminBalanceAdjust == subject {
- Err("unsupported admin balance adjust".to_string())
- } else {
- Ok(subject)
- }
- }
- Err(e) => Err(format!("malformed metadata - {e}")),
- };
- let (ty, metadata, cause) = match &res {
- Ok(s) => (Some(s.ty()), Some(s.key()), None),
- Err(e) => (None, None, Some(e)),
+ let (ty, metadata, cause) = match parse_incoming_unstructured(subject) {
+ Ok(IncomingSubject::Key(IncomingKey { ty, key })) => (Some(ty), Some(key), None),
+ Ok(IncomingSubject::AdminBalanceAdjust) => (
+ None,
+ None,
+ Some("unsupported admin balance adjust".to_string()),
+ ),
+ Err(e) => (None, None, Some(format!("malformed metadata - {e}"))),
};
serialized!(
sqlx::query(
@@ -112,7 +107,7 @@ pub async fn create(
.bind(max_amount)
.bind(ty.as_ref().map(|it| it.as_ref()))
.bind(metadata)
- .bind(cause)
+ .bind(&cause)
.try_map(|r: PgRow| {
Ok(if r.try_get_flag("out_creditor_not_found")? {
TxResult::UnknownCreditor
diff --git a/libeufin-nexus/src/api.rs b/libeufin-nexus/src/api.rs
@@ -31,7 +31,7 @@ use taler_api::{
wire::WireGateway,
},
error::{ApiResult, failure_code},
- subject::{IncomingSubject, fmt_in_subject, subject_fmt_qr_bill},
+ subject::{IncomingKey, fmt_in_subject, subject_fmt_qr_bill},
};
use taler_common::{
api::{
@@ -118,7 +118,7 @@ impl TalerApi for NexusApi {
async fn add_incoming(
db: &PgPool,
- subject: &IncomingSubject,
+ subject: &IncomingKey,
amount: Amount,
debit_account: PaytoURI,
) -> ApiResult<AddIncomingResponse> {
@@ -136,7 +136,7 @@ async fn add_incoming(
credit_fee: Amount::zero(&amount.currency),
subject: Some(format!(
"Manual incoming {}",
- fmt_in_subject(subject.ty(), subject.key())
+ fmt_in_subject(subject.ty, &subject.key)
)),
execution_time: now,
debtor: Some(debit_account),
@@ -218,7 +218,7 @@ impl WireGateway for NexusApi {
) -> ApiResult<AddIncomingResponse> {
add_incoming(
&self.pool,
- &IncomingSubject::Reserve(req.reserve_pub),
+ &IncomingKey::reserve(req.reserve_pub),
req.amount,
req.debit_account,
)
@@ -228,7 +228,7 @@ impl WireGateway for NexusApi {
async fn add_incoming_kyc(&self, req: AddKycauthRequest) -> ApiResult<AddIncomingResponse> {
add_incoming(
&self.pool,
- &IncomingSubject::Kyc(req.account_pub),
+ &IncomingKey::kyc(req.account_pub),
req.amount,
req.debit_account,
)
@@ -238,7 +238,7 @@ impl WireGateway for NexusApi {
async fn add_incoming_mapped(&self, req: AddMappedRequest) -> ApiResult<AddIncomingResponse> {
add_incoming(
&self.pool,
- &IncomingSubject::Map(req.authorization_pub),
+ &IncomingKey::map(req.authorization_pub),
req.amount,
req.debit_account,
)
diff --git a/libeufin-nexus/src/db/exchange.rs b/libeufin-nexus/src/db/exchange.rs
@@ -96,6 +96,7 @@ pub async fn incoming_history(
params,
listen,
|| {
+ // What does the order do when it's finaly complete
QueryBuilder::new(
"
SELECT
diff --git a/libeufin-nexus/src/db/payment.rs b/libeufin-nexus/src/db/payment.rs
@@ -21,7 +21,7 @@ use sqlx::{PgPool, Row as _, postgres::PgRow};
use taler_api::{
db::{BindHelper as _, TypeHelper as _},
serialized,
- subject::{IncomingSubject, OutgoingSubject},
+ subject::{IncomingKey, OutgoingSubject},
};
use taler_common::types::amount::Amount;
@@ -154,7 +154,7 @@ pub async fn register_in(pool: &PgPool, payment: &InTx) -> sqlx::Result<InResult
pub async fn register_in_talerable(
pool: &PgPool,
payment: &InTx,
- subject: &IncomingSubject,
+ subject: &IncomingKey,
) -> sqlx::Result<IncomingRegistrationResult> {
serialized!(
sqlx::query(
@@ -179,8 +179,8 @@ pub async fn register_in_talerable(
.bind(payment.id.uetr)
.bind(&payment.id.tx_id)
.bind(&payment.id.sref)
- .bind(subject.ty().as_ref())
- .bind(subject.key())
+ .bind(subject.ty.as_ref())
+ .bind(subject.key)
.try_map(|r: PgRow| {
Ok(if r.try_get_flag("out_reserve_pub_reuse")? {
IncomingRegistrationResult::ReservePubReuse
diff --git a/libeufin-nexus/src/fetch.rs b/libeufin-nexus/src/fetch.rs
@@ -565,7 +565,9 @@ pub async fn register_incoming(
let res = register_in(db, payment).await?;
log_res(res, "admin balance adjust", "");
}
- Ok(subject) => match register_in_talerable(db, payment, &subject).await? {
+ Ok(IncomingSubject::Key(subject)) => match register_in_talerable(db, payment, &subject)
+ .await?
+ {
IncomingRegistrationResult::ReservePubReuse => bounce("reverse pub reuse").await?,
IncomingRegistrationResult::MappingReuse => bounce("mapping reuse").await?,
IncomingRegistrationResult::UnknownMapping => bounce("unknown mapping").await?,