use bytes::Bytes;
use http_body_util::combinators::BoxBody;
use http_body_util::{BodyExt, Full};
use hyper::header::{self, HeaderValue};
use hyper::{Response, StatusCode};
pub type Body = BoxBody<Bytes, hyper::Error>;
pub fn full(bytes: impl Into<Bytes>) -> Body {
Full::new(bytes.into())
.map_err(|never| match never {})
.boxed()
}
pub fn status(code: StatusCode) -> Response<Body> {
let mut response = Response::new(full(Bytes::new()));
*response.status_mut() = code;
response
}
pub fn plain(status: StatusCode, text: &'static str) -> Response<Body> {
let mut response = Response::new(full(text));
*response.status_mut() = status;
response.headers_mut().insert(
header::CONTENT_TYPE,
HeaderValue::from_static("text/plain; charset=utf-8"),
);
response
}
pub fn html(status: StatusCode, page: String) -> Response<Body> {
let mut response = Response::new(full(page));
*response.status_mut() = status;
response.headers_mut().insert(
header::CONTENT_TYPE,
HeaderValue::from_static("text/html; charset=utf-8"),
);
response
}
pub fn json(value: serde_json::Value) -> Response<Body> {
let mut response = Response::new(full(value.to_string()));
response.headers_mut().insert(
header::CONTENT_TYPE,
HeaderValue::from_static("application/json"),
);
response
}