simple-api 0.1.0

A simple web framework for learing Rust
Documentation
use crate::types::HttpResonse;
use hyper::{header, Body, Response, StatusCode};
use serde_json::Value;

pub fn build_response(
    body_text: String,
    status_code: StatusCode,
    content_type: &str,
) -> anyhow::Result<HttpResonse> {
    let mut r = Response::builder()
        .status(status_code)
        .body(Body::from(body_text))?;
    r.headers_mut()
        .insert(header::CONTENT_TYPE, content_type.parse()?);
    Ok(r)
}

pub fn response_json(body_text: String, status_code: StatusCode) -> anyhow::Result<HttpResonse> {
    build_response(body_text, status_code, "application/json")
}

pub fn ok_json(v: Value) -> anyhow::Result<HttpResonse> {
    ret_json(StatusCode::OK, v)
}

pub fn ret_json(status_code: StatusCode, v: Value) -> anyhow::Result<HttpResonse> {
    response_json(v.to_string(), status_code)
}

pub fn internal_server_error(error: anyhow::Error) -> anyhow::Result<HttpResonse> {
    build_response(
        format!("Error: {}", error.to_string()),
        StatusCode::INTERNAL_SERVER_ERROR,
        "text/html",
    )
}

pub fn internal_server_error_force(error: anyhow::Error) -> HttpResonse {
    return internal_server_error(error).unwrap();
}