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