openauth-plugins 0.0.4

Official OpenAuth plugin modules.
Documentation
mod code;
mod decision;
mod openapi;
mod token;
mod verify;

use http::{header, Response, StatusCode};
use openauth_core::api::ApiResponse;
use openauth_core::error::OpenAuthError;
use serde::Serialize;

pub use code::{device_code, DeviceCodeRequest, DeviceCodeResponse};
pub use decision::{device_approve, device_deny, DeviceApprovalRequest};
pub use token::{device_token, DeviceTokenRequest, DeviceTokenResponse};
pub use verify::{device_verify, DeviceVerificationResponse};

#[derive(Debug, Serialize)]
struct SuccessResponse {
    success: bool,
}

fn json_response<T: Serialize>(status: StatusCode, body: &T) -> Result<ApiResponse, OpenAuthError> {
    let body = serde_json::to_vec(body).map_err(|error| OpenAuthError::Api(error.to_string()))?;
    Response::builder()
        .status(status)
        .header(header::CONTENT_TYPE, "application/json")
        .body(body)
        .map_err(|error| OpenAuthError::Api(error.to_string()))
}

fn clean_user_code(user_code: &str) -> String {
    user_code.replace('-', "")
}