use axum::{http::StatusCode, response::IntoResponse, Json}; use near_sdk::serde::{Deserialize, Serialize}; pub mod get_allowance; pub mod relay; pub mod universal_account; #[derive(Serialize, Deserialize, Debug, Clone)] #[serde(crate = "near_sdk::serde")] pub enum SimpleResponse { Success(T), Failure { error: String }, Rejected { reason: String }, } impl From for SimpleResponse { fn from(value: T) -> Self { SimpleResponse::Success(value) } } impl SimpleResponse { pub fn success(value: T) -> Self { Self::Success(value) } } impl IntoResponse for SimpleResponse { fn into_response(self) -> axum::response::Response { let status_code = match self { Self::Success { .. } => StatusCode::OK, Self::Failure { .. } => StatusCode::INTERNAL_SERVER_ERROR, Self::Rejected { .. } => StatusCode::BAD_REQUEST, }; (status_code, Json(self)).into_response() } }