libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

commit 5cb097630d761bc37d8654bc49ab5003513e81d3
parent 188094f92c7afbdda811305cd9ec54be189b66ba
Author: Antoine A <>
Date:   Thu, 16 Jul 2026 02:47:44 +0200

common: reduce dependencies

Diffstat:
MCargo.lock | 151+++++++++++++++++++++++++++++++++++++++----------------------------------------
Mlibeufin-ebics/Cargo.toml | 9++++++++-
Dlibeufin-ebics/bin/iso20022-codegen.rs | 206-------------------------------------------------------------------------------
Mlibeufin-ebisync/Cargo.toml | 2--
4 files changed, 83 insertions(+), 285 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -308,9 +308,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" dependencies = [ "serde_core", ] @@ -336,9 +336,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cee35f73844aa3014bb606320a6c1f010249dbdf43342fe54b5a4f6a8ed4b79" +checksum = "1f7dc094d718f2e1c1559ad110e27eeaae14a5465d3d56dd6dbd793079fbd530" dependencies = [ "memchr", "serde_core", @@ -390,9 +390,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.66" +version = "1.2.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" +checksum = "e17dd265a7d0f31ef544e1b20e03add05d3b45b491b633b10d67145d2acc1a38" dependencies = [ "find-msvc-tools", "jobserver", @@ -447,9 +447,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.1" +version = "4.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +checksum = "dd059f9da4f5c36b3787f65d38ccaab1cc315f07b01f89abc8359ee6a8205011" dependencies = [ "clap_builder", "clap_derive", @@ -457,9 +457,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.0" +version = "4.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +checksum = "f09628afdcc538b57f3c6341e9c8e9970f18e4a481690a64974d7023bd33548b" dependencies = [ "anstream", "anstyle", @@ -681,7 +681,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "crossterm_winapi", "derive_more", "document-features", @@ -1223,9 +1223,9 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "globset" -version = "0.4.18" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" +checksum = "e47d37d2ae4464254884b60ab7071be2b876a9c35b696bd018ddcc76847309cd" dependencies = [ "aho-corasick", "bstr", @@ -1336,9 +1336,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" dependencies = [ "bytes", "http", @@ -1346,9 +1346,9 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +checksum = "e9f41fd6a08e4d4ec69df65976da761afd5ad5e58a9d4acb46bd1c953a9e3ff2" dependencies = [ "bytes", "futures-core", @@ -1360,7 +1360,7 @@ dependencies = [ [[package]] name = "http-client" version = "1.5.0" -source = "git+git://git.taler.net/taler-rust.git/#4019ab323771ee02486072b50adb13b5836c8f6b" +source = "git+git://git.taler.net/taler-rust.git/#a523cbbf0efaa493cc159045cd64ebb6ee9d85ff" dependencies = [ "compact_str", "futures-util", @@ -1853,11 +1853,9 @@ dependencies = [ "axum", "clap", "compact_str", - "dialoguer", "http-client", "jiff", "libeufin-ebics", - "pretty_assertions", "reqwest", "serde", "shlex", @@ -1922,7 +1920,7 @@ version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "libc", "plain", "redox_syscall 0.9.0", @@ -2053,9 +2051,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" +checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" dependencies = [ "libc", "log", @@ -2086,7 +2084,7 @@ version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "cfg-if", "cfg_aliases", "libc", @@ -2132,7 +2130,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand 0.8.6", + "rand 0.8.7", "smallvec", "zeroize", ] @@ -2240,7 +2238,7 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f5e456864a7a304047bff84977dc6fb162bd956475d40ba50b2dcecaada7f753" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "itoa", "memchr", "ryu", @@ -2458,9 +2456,9 @@ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] name = "rand" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" dependencies = [ "libc", "rand_chacha 0.3.1", @@ -2469,9 +2467,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.5", @@ -2561,7 +2559,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", ] [[package]] @@ -2570,7 +2568,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5102a6aaa05aa011a238e178e6bca86d2cb56fc9f586d37cb80f5bca6e07759" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", ] [[package]] @@ -2595,9 +2593,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.4" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -2607,9 +2605,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad" dependencies = [ "aho-corasick", "memchr", @@ -2751,7 +2749,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "errno", "libc", "linux-raw-sys", @@ -2760,9 +2758,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.41" +version = "0.23.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" +checksum = "3c54fcab019b409d04215d3a17cb438fd7fbf192ee61461f20f4fe18704bc138" dependencies = [ "aws-lc-rs", "log", @@ -2876,7 +2874,7 @@ version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -2989,9 +2987,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8" dependencies = [ "cfg-if", "cpufeatures 0.2.17", @@ -3073,15 +3071,15 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" [[package]] name = "simd_cesu8" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +checksum = "11031e251abf8611c80f460e19dbdeb54a66db918e49c65a7065b46ac7aec520" dependencies = [ "rustc_version", "simdutf8", @@ -3110,9 +3108,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" dependencies = [ "libc", "windows-sys 0.61.2", @@ -3120,9 +3118,9 @@ dependencies = [ [[package]] name = "spin" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" dependencies = [ "lock_api", ] @@ -3233,7 +3231,7 @@ checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64", - "bitflags 2.13.0", + "bitflags 2.13.1", "byteorder", "bytes", "crc", @@ -3254,7 +3252,7 @@ dependencies = [ "memchr", "once_cell", "percent-encoding", - "rand 0.8.6", + "rand 0.8.7", "rsa", "serde", "sha1", @@ -3276,7 +3274,7 @@ checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64", - "bitflags 2.13.0", + "bitflags 2.13.1", "byteorder", "crc", "dotenvy", @@ -3293,7 +3291,7 @@ dependencies = [ "md-5", "memchr", "once_cell", - "rand 0.8.6", + "rand 0.8.7", "serde", "serde_json", "sha2", @@ -3398,9 +3396,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.118" +version = "2.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" dependencies = [ "proc-macro2", "quote", @@ -3433,7 +3431,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -3451,7 +3449,7 @@ dependencies = [ [[package]] name = "taler-api" version = "1.5.0" -source = "git+git://git.taler.net/taler-rust.git/#4019ab323771ee02486072b50adb13b5836c8f6b" +source = "git+git://git.taler.net/taler-rust.git/#a523cbbf0efaa493cc159045cd64ebb6ee9d85ff" dependencies = [ "aws-lc-rs", "axum", @@ -3470,6 +3468,7 @@ dependencies = [ "taler-common", "thiserror", "tokio", + "tower-http 0.7.0", "tracing", "url", "zlib-rs", @@ -3478,12 +3477,12 @@ dependencies = [ [[package]] name = "taler-build" version = "1.5.0" -source = "git+git://git.taler.net/taler-rust.git/#4019ab323771ee02486072b50adb13b5836c8f6b" +source = "git+git://git.taler.net/taler-rust.git/#a523cbbf0efaa493cc159045cd64ebb6ee9d85ff" [[package]] name = "taler-common" version = "1.5.0" -source = "git+git://git.taler.net/taler-rust.git/#4019ab323771ee02486072b50adb13b5836c8f6b" +source = "git+git://git.taler.net/taler-rust.git/#a523cbbf0efaa493cc159045cd64ebb6ee9d85ff" dependencies = [ "anyhow", "aws-lc-rs", @@ -3513,7 +3512,7 @@ dependencies = [ [[package]] name = "taler-macros" version = "1.5.0" -source = "git+git://git.taler.net/taler-rust.git/#4019ab323771ee02486072b50adb13b5836c8f6b" +source = "git+git://git.taler.net/taler-rust.git/#a523cbbf0efaa493cc159045cd64ebb6ee9d85ff" dependencies = [ "proc-macro2", "quote", @@ -3523,7 +3522,7 @@ dependencies = [ [[package]] name = "taler-test-utils" version = "1.5.0" -source = "git+git://git.taler.net/taler-rust.git/#4019ab323771ee02486072b50adb13b5836c8f6b" +source = "git+git://git.taler.net/taler-rust.git/#a523cbbf0efaa493cc159045cd64ebb6ee9d85ff" dependencies = [ "aws-lc-rs", "axum", @@ -3610,9 +3609,9 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" dependencies = [ "cfg-if", ] @@ -3659,9 +3658,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" dependencies = [ "tinyvec_macros", ] @@ -3768,7 +3767,7 @@ version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "bytes", "futures-util", "http", @@ -3786,7 +3785,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b11f75e912b0c2be01b63d8cf8057b8c3f97cf34abb3d431a3a4c8675498e233" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "bytes", "futures-core", "futures-util", @@ -3892,7 +3891,7 @@ dependencies = [ "http", "httparse", "log", - "rand 0.9.4", + "rand 0.9.5", "sha1", "thiserror", "utf-8", @@ -3909,7 +3908,7 @@ dependencies = [ "http", "httparse", "log", - "rand 0.9.4", + "rand 0.9.5", "sha1", "thiserror", ] @@ -4022,9 +4021,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.23.4" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" +checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239" dependencies = [ "getrandom 0.4.3", "js-sys", @@ -4635,15 +4634,15 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5431d5661c32445236631278f27946e444ddafe4684cac70b185272d4f9c52d5" +checksum = "b142a20ec14a91d5bc708c1dc21b080c550113d8aa77afa29635673a65dd02c5" [[package]] name = "zmij" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" [[package]] name = "zopfli" diff --git a/libeufin-ebics/Cargo.toml b/libeufin-ebics/Cargo.toml @@ -7,6 +7,13 @@ homepage.workspace = true repository.workspace = true license-file.workspace = true +[features] +codegen = ["dep:calamine"] + +[[bin]] +name = "iso20022-codegen" +required-features = ["codegen"] + [dependencies] compact_str.workspace = true aws-lc-rs.workspace = true @@ -37,5 +44,5 @@ reqwest-websocket = "0.6.0" roxmltree = "0.21.1" rcgen = { version = "0.14.7", features = ["aws_lc_rs", "pem"], default-features = false } x509-parser = { version = "0.18.1", features = ["verify-aws"] } -calamine = { version = "0.36.0" } +calamine = { version = "0.36.0", optional = true } pdf-writer = "0.15.0" diff --git a/libeufin-ebics/bin/iso20022-codegen.rs b/libeufin-ebics/bin/iso20022-codegen.rs @@ -1,206 +0,0 @@ -/* -* This file is part of LibEuFin. -* Copyright (C) 2026 Taler Systems S.A. - -* LibEuFin is free software; you can redistribute it and/or modify -* it under the terms of the GNU Affero General Public License as -* published by the Free Software Foundation; either version 3, or -* (at your option) any later version. - -* LibEuFin is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General -* Public License for more details. - -* You should have received a copy of the GNU Affero General Public -* License along with LibEuFin; see the file COPYING. If not, see -* <http://www.gnu.org/licenses/> -*/ - -use std::{ - collections::BTreeMap, - fmt::Write as _, - io::{Cursor, Read as _}, -}; - -use calamine::{DataType, Reader as _, Xlsx}; -use reqwest::StatusCode; -use tokio::join; -use zip::ZipArchive; - -pub async fn iso20022codegen_external_code_set() { - let res = reqwest::get( - "https://www.iso20022.org/sites/default/files/media/file/ExternalCodeSets_XLSX.zip", - ) - .await - .unwrap(); - - assert_eq!(res.status(), StatusCode::OK); - let zipped = res.bytes().await.unwrap(); - let mut zip = ZipArchive::new(Cursor::new(&zipped)).unwrap(); - assert_eq!(zip.len(), 1); - - let mut bytes = Vec::new(); - zip.by_index(0).unwrap().read_to_end(&mut bytes).unwrap(); - let mut excel: Xlsx<_> = calamine::open_workbook_from_rs(Cursor::new(&bytes)).unwrap(); - - let mut code_sets: BTreeMap<_, Vec<_>> = BTreeMap::new(); - - let range = excel.worksheet_range("AllCodeSets").unwrap(); - for row in range.rows() { - let set = row[0].as_string().unwrap(); - let code = row[1].as_string().unwrap(); - let name = row[2].as_string().unwrap().replace('-', ""); - let definition = row[3] - .as_string() - .unwrap() - .split(['.', '\n']) - .next() - .unwrap() - .trim() - .replace("_x000D_", ""); - let vec = code_sets.entry(set).or_default(); - vec.push((code, name, definition)) - } - - let mut out = " -/* - * This file is part of LibEuFin. - * Copyright (C) 2026 Taler Systems S.A. - - * LibEuFin is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation; either version 3, or - * (at your option) any later version. - - * LibEuFin is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General - * Public License for more details. - - * You should have received a copy of the GNU Affero General Public - * License along with LibEuFin; see the file COPYING. If not, see - * <http://www.gnu.org/licenses/> - */ - -// THIS FILE IS GENERATED, DO NOT EDIT - -use taler_macros::EnumMeta; - " - .to_string(); - - for (set, enum_name) in [ - ("ExternalStatusReason1Code", "StatusReason"), - ("ExternalPaymentGroupStatus1Code", "PaymentGroupStatus"), - ( - "ExternalPaymentTransactionStatus1Code", - "PaymentTransactionStatus", - ), - ("ExternalReturnReason1Code", "ReturnReason"), - ] { - let set = code_sets.get_mut(set).unwrap(); - set.sort_unstable_by_key(|(code, _, _)| code.clone()); - writeln!( - &mut out, - " - #[derive(Debug, Clone, Copy, PartialEq, Eq, EnumMeta)] - #[enum_meta(DomainCode, Description, Str)] - pub enum {enum_name} {{ - " - ) - .unwrap(); - for (code, name, description) in set.iter() { - writeln!(&mut out, "/// {description}").unwrap(); - writeln!(&mut out, "#[code = \"{code}\"]").unwrap(); - writeln!(&mut out, "{name},").unwrap(); - } - writeln!(&mut out, "}}").unwrap(); - } - std::fs::write("src/iso20022/status_code.rs", out).unwrap(); -} - -pub async fn iso20022codegen_bank_transaction_code() { - let res = reqwest::get( - "https://www.iso20022.org/sites/default/files/media/file/BTC_Codification_21March2024.xlsx", - ) - .await - .unwrap(); - - assert_eq!(res.status(), StatusCode::OK); - let bytes = res.bytes().await.unwrap(); - let mut excel: Xlsx<_> = calamine::open_workbook_from_rs(Cursor::new(&bytes)).unwrap(); - - let mut domain = BTreeMap::new(); - let mut family = BTreeMap::new(); - let mut subfamily = BTreeMap::new(); - - let range = excel.worksheet_range("BTC_Codification").unwrap(); - - for row in range.rows().skip(3) { - for (i, set) in [&mut domain, &mut family, &mut subfamily] - .into_iter() - .enumerate() - { - let name = row[i].as_string().unwrap(); - let code = row[i + 3].as_string().unwrap(); - let code = code.trim().to_string(); - set.insert(code, name); - } - } - - let mut out = " -/* - * This file is part of LibEuFin. - * Copyright (C) 2026 Taler Systems S.A. - - * LibEuFin is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation; either version 3, or - * (at your option) any later version. - - * LibEuFin is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General - * Public License for more details. - - * You should have received a copy of the GNU Affero General Public - * License along with LibEuFin; see the file COPYING. If not, see - * <http://www.gnu.org/licenses/> - */ - -// THIS FILE IS GENERATED, DO NOT EDIT - -use taler_macros::EnumMeta; - " - .to_string(); - - for (set, enum_name) in [ - (domain, "BankTxDomainCode"), - (family, "BankTxFamilyCode"), - (subfamily, "BankTxSubFamilyCode"), - ] { - writeln!( - &mut out, - " - #[derive(Debug, Clone, Copy, PartialEq, Eq, EnumMeta)] - #[enum_meta(Description, Str)] - pub enum {enum_name} {{ - " - ) - .unwrap(); - for (code, description) in set.iter() { - writeln!(&mut out, "/// {description}").unwrap(); - writeln!(&mut out, "{code},").unwrap(); - } - writeln!(&mut out, "}}").unwrap(); - } - std::fs::write("src/iso20022/bank_tx_code.rs", out).unwrap(); -} - -#[tokio::main] -pub async fn main() { - join!( - iso20022codegen_external_code_set(), - iso20022codegen_bank_transaction_code() - ); -} diff --git a/libeufin-ebisync/Cargo.toml b/libeufin-ebisync/Cargo.toml @@ -28,7 +28,5 @@ anyhow.workspace = true tokio.workspace = true jiff.workspace = true clap.workspace = true -pretty_assertions.workspace = true -dialoguer.workspace = true http-client.workspace = true shlex.workspace = true \ No newline at end of file