signatory_client_lib/
api_path.rs

1pub const API_BASE_PATH: &str = "api";
2
3pub const ADMIN_BASE_PATH: &str = "admin";
4
5pub const COMMON_BASE_PATH: &str = "common";
6
7pub const EVM_STANDARD_BASE_PATH: &str = "evm";
8pub const EVM_SPONSORED_BASE_PATH: &str = "evm/sponsored";
9
10pub const SOLANA_BASE_PATH: &str = "solana";
11
12pub const MARKETS_PATH: &str = "markets";
13
14pub const INDICATIVE_QUOTE_PATH: &str = "indicativeQuote";
15pub const FIRM_QUOTE_PATH: &str = "firmQuote";
16pub const SEND_TRANSACTION_PATH: &str = "sendTransaction";
17pub const REPORT_TRANSACTION_PATH: &str = "reportTransaction";
18pub const PAYMENT_IN_LIEU_PATH: &str = "paymentInLieu";
19
20/// # Examples
21///
22/// ```
23/// use signatory_client_lib::api_path::build_url;
24/// assert_eq!(
25///     build_url("https://signatory.dflow.net", "foo", "bar"),
26///     "https://signatory.dflow.net/api/foo/bar",
27/// );
28/// ```
29pub fn build_url(signatory_server_url: &str, base_path: &str, path: &str) -> String {
30    format!("{signatory_server_url}/{API_BASE_PATH}/{base_path}/{path}")
31}
32
33#[cfg(test)]
34mod test {
35    use super::*;
36
37    #[test]
38    fn test_build_url() {
39        assert_eq!(
40            build_url("https://signatory.dflow.net", "foo", "bar"),
41            "https://signatory.dflow.net/api/foo/bar",
42        );
43
44        assert_eq!(
45            build_url(
46                "https://signatory.dflow.net",
47                SOLANA_BASE_PATH,
48                FIRM_QUOTE_PATH
49            ),
50            "https://signatory.dflow.net/api/solana/firmQuote",
51        );
52
53        assert_eq!(
54            build_url(
55                "https://signatory.dflow.net",
56                EVM_STANDARD_BASE_PATH,
57                FIRM_QUOTE_PATH
58            ),
59            "https://signatory.dflow.net/api/evm/firmQuote",
60        );
61
62        assert_eq!(
63            build_url(
64                "https://signatory.dflow.net",
65                EVM_SPONSORED_BASE_PATH,
66                FIRM_QUOTE_PATH
67            ),
68            "https://signatory.dflow.net/api/evm/sponsored/firmQuote",
69        );
70    }
71}