types.rs (1724B)
1 /* 2 This file is part of TALER 3 Copyright (C) 2024-2026 Taler Systems SA 4 5 TALER is free software; you can redistribute it and/or modify it under the 6 terms of the GNU Affero General Public License as published by the Free Software 7 Foundation; either version 3, or (at your option) any later version. 8 9 TALER is distributed in the hope that it will be useful, but WITHOUT ANY 10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 11 A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 12 13 You should have received a copy of the GNU Affero General Public License along with 14 TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> 15 */ 16 17 pub mod ach; 18 pub mod amount; 19 pub mod base32; 20 pub mod iban; 21 pub mod payto; 22 pub mod timestamp; 23 pub mod utils; 24 25 use url::Url; 26 27 pub fn url(url: &str) -> Url { 28 url.parse().expect("Invalid url") 29 } 30 31 pub fn validate_base_url(url: &Url) -> Result<(), String> { 32 if url.scheme() != "http" && url.scheme() != "https" { 33 Err(format!( 34 "only 'http' and 'https' are accepted for baseURL got '{}''", 35 url.scheme() 36 )) 37 } else if !url.has_host() { 38 Err(format!("missing host in baseURL got '{url}'")) 39 } else if url.query().is_some() { 40 Err(format!( 41 "require no query in baseURL got '{}'", 42 url.query().unwrap() 43 )) 44 } else if url.fragment().is_some() { 45 Err(format!( 46 "require no fragment in baseURL got '{}'", 47 url.fragment().unwrap() 48 )) 49 } else if !url.path().ends_with('/') { 50 Err(format!("baseURL path must end with / got '{}'", url.path())) 51 } else { 52 Ok(()) 53 } 54 }