1use serde::{Deserialize, Serialize};
7
8use crate::types::{BankName, Bic, Blz, FinTSUrl};
9
10#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct BankConfig {
13 pub name: BankName,
14 pub blz: Blz,
15 pub bic: Bic,
16 pub url: FinTSUrl,
17}
18
19impl BankConfig {
20 pub fn new(
22 name: impl Into<String>,
23 blz: impl Into<String>,
24 bic: impl Into<String>,
25 url: impl Into<String>,
26 ) -> Self {
27 Self {
28 name: BankName::new(name),
29 blz: Blz::new(blz),
30 bic: Bic::new(bic),
31 url: FinTSUrl::new(url),
32 }
33 }
34
35 pub fn new_raw(
37 blz: impl Into<String>,
38 bic: impl Into<String>,
39 name: impl Into<String>,
40 url: impl Into<String>,
41 ) -> Self {
42 Self {
43 blz: Blz::new(blz),
44 bic: Bic::new(bic),
45 name: BankName::new(name),
46 url: FinTSUrl::new(url),
47 }
48 }
49}
50
51pub fn all_banks() -> Vec<BankConfig> {
53 crate::banks_generated::generated_all_banks()
54}
55
56pub fn bank_by_blz(blz: &str) -> Option<BankConfig> {
58 crate::banks_generated::generated_bank_by_blz(blz)
59}