nym_credential_proxy_requests/
lib.rs

1// Copyright 2024 Nym Technologies SA <contact@nymtech.net>
2// SPDX-License-Identifier: GPL-3.0-only
3
4pub mod api;
5pub mod client;
6mod helpers;
7
8macro_rules! absolute_route {
9    ( $name:ident, $parent:expr, $suffix:expr ) => {
10        pub fn $name() -> String {
11            format!("{}{}", $parent, $suffix)
12        }
13    };
14}
15
16pub mod routes {
17    pub const ROOT: &str = "/";
18    pub const API: &str = "/api";
19
20    pub mod api {
21        pub const V1: &str = "/v1";
22
23        absolute_route!(v1_absolute, super::API, V1);
24
25        pub mod v1 {
26            use super::*;
27
28            pub const SWAGGER: &str = "/swagger";
29            pub const TICKETBOOK: &str = "/ticketbook";
30
31            // define helper functions to get absolute routes
32            absolute_route!(swagger_absolute, v1_absolute(), SWAGGER);
33            absolute_route!(ticketbook_absolute, v1_absolute(), TICKETBOOK);
34
35            pub mod ticketbook {
36                use super::*;
37
38                pub const OBTAIN: &str = "/obtain";
39                pub const OBTAIN_ASYNC: &str = "/obtain-async";
40                pub const DEPOSIT_AMOUNT: &str = "/deposit-amount";
41                pub const MASTER_KEY: &str = "/master-verification-key";
42                pub const PARTIAL_KEYS: &str = "/partial-verification-keys";
43                pub const CURRENT_EPOCH: &str = "/current-epoch";
44                pub const SHARES: &str = "/shares";
45
46                absolute_route!(obtain_wallet_shares_absolute, ticketbook_absolute(), OBTAIN);
47                absolute_route!(
48                    obtain_async_wallet_shares_absolute,
49                    ticketbook_absolute(),
50                    OBTAIN_ASYNC
51                );
52                absolute_route!(
53                    current_deposit_amount_absolute,
54                    ticketbook_absolute(),
55                    DEPOSIT_AMOUNT
56                );
57                absolute_route!(master_key_absolute, ticketbook_absolute(), MASTER_KEY);
58                absolute_route!(partial_keys_absolute, ticketbook_absolute(), PARTIAL_KEYS);
59                absolute_route!(current_epoch_absolute, ticketbook_absolute(), CURRENT_EPOCH);
60                absolute_route!(shares_absolute, ticketbook_absolute(), SHARES);
61
62                pub mod shares {
63                    use super::*;
64
65                    pub const SHARE_BY_ID: &str = "/:share_id";
66                    pub const SHARE_BY_DEVICE_AND_CREDENTIAL_ID: &str =
67                        "/device/:device_id/credential/:credential_id";
68
69                    absolute_route!(share_by_id_absolute, shares_absolute(), SHARE_BY_ID);
70                    absolute_route!(
71                        share_by_device_and_credential_id_absolute,
72                        shares_absolute(),
73                        SHARE_BY_DEVICE_AND_CREDENTIAL_ID
74                    );
75                }
76            }
77        }
78    }
79}