extern crate coap;
use std::net::SocketAddr;
use coap::Server;
use coap_lite::CoapRequest;
use coap_lite::RequestType as Method;
use tokio::runtime::Runtime;
fn main() {
let addr = "127.0.0.1:5683";
Runtime::new().unwrap().block_on(async move {
let server = Server::new_udp(addr).unwrap();
println!("Server up on {}", addr);
server
.run(|mut request: Box<CoapRequest<SocketAddr>>| async move {
match *request.get_method() {
Method::Get => println!("request by get {}", request.get_path()),
Method::Post => println!(
"request by post {}",
String::from_utf8(request.message.payload.clone()).unwrap()
),
Method::Put => println!(
"request by put {}",
String::from_utf8(request.message.payload.clone()).unwrap()
),
_ => println!("request by other method"),
};
if let Some(ref mut message) = request.response {
message.message.payload = b"OK".to_vec();
};
request
})
.await
.unwrap();
});
}