cyfs_util/interface/
http_server.rs1use 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}