wompi_client/
routes.rs

1
2#[derive(Debug, Clone, PartialEq, Eq, Hash, Default)]
3pub enum RutaAPI<'a> {
4    #[default]
5    Base,
6    OAuth2,
7    CrearEnlaceDePago,
8    CrearCargoRecurrente,
9    ListarCargosRecurrentes,
10    DetallarCargoRecurrente(&'a str),
11    SuscripcionesCargoRecurrente(&'a str),
12    AgregarImagenCargoRecurrente(&'a str),
13}
14impl<'a> AsRef<str> for RutaAPI<'a> {
15    fn as_ref(&self) -> &'a str {
16        match self {
17            Self::Base => "https://api.wompi.sv",
18            Self::OAuth2 => "https://id.wompi.sv/connect/token",
19            Self::CrearEnlaceDePago => "/EnlacePago",
20            Self::CrearCargoRecurrente | Self::ListarCargosRecurrentes => "/EnlacePagoRecurrente",
21            _ => {
22                unreachable!()
23            }
24        }
25    }
26}
27
28impl std::fmt::Display for RutaAPI<'_> {
29    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
30        match self {
31            Self::Base => write!(f, "{}", RutaAPI::Base.as_ref()),
32            Self::OAuth2 => write!(f, "{}", RutaAPI::OAuth2.as_ref()),
33            Self::CrearEnlaceDePago => write!(
34                f,
35                "{}{}",
36                RutaAPI::Base.as_ref(),
37                RutaAPI::CrearEnlaceDePago.as_ref()
38            ),
39            Self::CrearCargoRecurrente => write!(
40                f,
41                "{}{}",
42                RutaAPI::Base.as_ref(),
43                RutaAPI::CrearCargoRecurrente.as_ref()
44            ),
45            Self::ListarCargosRecurrentes => {
46                write!(
47                    f,
48                    "{}{}",
49                    RutaAPI::Base.as_ref(),
50                    RutaAPI::ListarCargosRecurrentes.as_ref()
51                )
52            }
53            Self::DetallarCargoRecurrente(id) => {
54                write!(
55                    f,
56                    "{}{}/{}",
57                    RutaAPI::Base.as_ref(),
58                    RutaAPI::ListarCargosRecurrentes.as_ref(),
59                    id
60                )
61            }
62            Self::SuscripcionesCargoRecurrente(id) => write!(
63                f,
64                "{}{}/{}/suscripciones",
65                RutaAPI::Base.as_ref(),
66                RutaAPI::ListarCargosRecurrentes.as_ref(),
67                id
68            ),
69            Self::AgregarImagenCargoRecurrente(id) => write!(
70                f,
71                "{}{}/{}/imagen",
72                RutaAPI::Base.as_ref(),
73                RutaAPI::ListarCargosRecurrentes.as_ref(),
74                id
75            ),
76        }
77    }
78}
79