wompi-client 0.1.0

Client for the Wompi API
Documentation

#[derive(Debug, Clone, PartialEq, Eq, Hash, Default)]
pub enum RutaAPI<'a> {
    #[default]
    Base,
    OAuth2,
    CrearEnlaceDePago,
    CrearCargoRecurrente,
    ListarCargosRecurrentes,
    DetallarCargoRecurrente(&'a str),
    SuscripcionesCargoRecurrente(&'a str),
    AgregarImagenCargoRecurrente(&'a str),
}
impl<'a> AsRef<str> for RutaAPI<'a> {
    fn as_ref(&self) -> &'a str {
        match self {
            Self::Base => "https://api.wompi.sv",
            Self::OAuth2 => "https://id.wompi.sv/connect/token",
            Self::CrearEnlaceDePago => "/EnlacePago",
            Self::CrearCargoRecurrente | Self::ListarCargosRecurrentes => "/EnlacePagoRecurrente",
            _ => {
                unreachable!()
            }
        }
    }
}

impl std::fmt::Display for RutaAPI<'_> {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            Self::Base => write!(f, "{}", RutaAPI::Base.as_ref()),
            Self::OAuth2 => write!(f, "{}", RutaAPI::OAuth2.as_ref()),
            Self::CrearEnlaceDePago => write!(
                f,
                "{}{}",
                RutaAPI::Base.as_ref(),
                RutaAPI::CrearEnlaceDePago.as_ref()
            ),
            Self::CrearCargoRecurrente => write!(
                f,
                "{}{}",
                RutaAPI::Base.as_ref(),
                RutaAPI::CrearCargoRecurrente.as_ref()
            ),
            Self::ListarCargosRecurrentes => {
                write!(
                    f,
                    "{}{}",
                    RutaAPI::Base.as_ref(),
                    RutaAPI::ListarCargosRecurrentes.as_ref()
                )
            }
            Self::DetallarCargoRecurrente(id) => {
                write!(
                    f,
                    "{}{}/{}",
                    RutaAPI::Base.as_ref(),
                    RutaAPI::ListarCargosRecurrentes.as_ref(),
                    id
                )
            }
            Self::SuscripcionesCargoRecurrente(id) => write!(
                f,
                "{}{}/{}/suscripciones",
                RutaAPI::Base.as_ref(),
                RutaAPI::ListarCargosRecurrentes.as_ref(),
                id
            ),
            Self::AgregarImagenCargoRecurrente(id) => write!(
                f,
                "{}{}/{}/imagen",
                RutaAPI::Base.as_ref(),
                RutaAPI::ListarCargosRecurrentes.as_ref(),
                id
            ),
        }
    }
}