1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
use address::Address;
use errors::Error;
use net_listener::NetListener;

use tiny_http::{Server, Response};

pub struct HttpListener {
    addr: String
}

impl NetListener for HttpListener{
    fn new(addr: Address) -> Result<Box<HttpListener>, Error>{
        Ok(Box::new(HttpListener{
            addr: String::from(addr.string()),
        }))
    }
    
    fn listen(&self) -> Result<(), Error>{ 
        let server = Server::http(self.addr.as_str());
        
        if server.is_err() {
            return Err(Error::ListenError);
        }
        let server = server.unwrap();

        for request in server.incoming_requests() {
            println!("received request! method: {:?}, url: {:?}, headers: {:?}",
                request.method(),
                request.url(),
                request.headers()
            );

            let response = Response::from_string("hello world");
            request.respond(response);
        }

        Ok(()) 
    }

    fn handle_get(&self) -> Result<(), Error> { Ok(()) }
    fn handle_post(&self) -> Result<(), Error> { Ok(()) }
}