teo 0.2.6-alpha.5

Next-generation web framework for Rust, Node.js and Python.
Documentation
use actix_web::{HttpRequest, HttpResponse};
use actix_web::http::StatusCode;
use teo_runtime::response::body::BodyInner;
use teo_runtime::response::Response;
use actix_files::NamedFile;

pub trait IntoHttpResponse {
    fn into_http_response(self, http_request: HttpRequest) -> HttpResponse;
}

impl IntoHttpResponse for Response {

    fn into_http_response(self, http_request: HttpRequest) -> HttpResponse {
        let mut builder = HttpResponse::Ok();
        builder.status(StatusCode::from_u16(self.code()).unwrap());
        for key in self.headers().keys() {
            builder.insert_header((key.clone(), self.headers().get(&key).unwrap().as_str()));
        }
        match self.body().inner.as_ref() {
            BodyInner::Empty => (),
            BodyInner::String(content) => return builder.body(content.to_string()),
            BodyInner::File(file) => return NamedFile::open(file).unwrap().into_response(&http_request),
            BodyInner::Teon(value) => {
                builder.content_type("application/json");
                let json_value = serde_json::Value::try_from(value).unwrap();
                let string_value = serde_json::to_string(&json_value).unwrap();
                return builder.body(string_value);
            }
        }
        builder.finish()
    }
}