cyfs_util/interface/
http_server.rs

1use std::sync::Arc;
2
3
4#[derive(Clone)]
5pub struct HttpServer {
6    server: Arc<::tide::Server<()>>,
7}
8
9impl HttpServer {
10    pub fn new_server() -> ::tide::Server<()> {
11        use http_types::headers::HeaderValue;
12        use tide::security::{CorsMiddleware, Origin};
13
14        let mut server = ::tide::new();
15
16        let cors = CorsMiddleware::new()
17            .allow_methods("GET, POST, OPTIONS".parse::<HeaderValue>().unwrap())
18            .allow_origin(Origin::from("*"))
19            .allow_credentials(true)
20            .allow_headers("*".parse::<HeaderValue>().unwrap())
21            .expose_headers("*".parse::<HeaderValue>().unwrap());
22        server.with(cors);
23
24        server
25    }
26
27    pub fn new(server: tide::Server<()>) -> Self {
28        Self {
29            server: Arc::new(server),
30        }
31    }
32
33    pub fn server(&self) -> &Arc<::tide::Server<()>> {
34        &self.server
35    }
36    
37    pub async fn respond(
38        &self,
39        req: http_types::Request,
40    ) -> http_types::Result<http_types::Response> {
41        self.server.respond(req).await
42    }
43}