ownserver 0.7.1

Expose your local game server to the Internet
Documentation
use std::sync::Arc;

use futures::Future;
use warp::Filter;

use crate::Store;

pub fn spawn_api(store: Arc<Store>, api_port: u16) -> impl Future<Output = ()> {
    let store_ = store.clone();
    let rtt = warp::path("rtt").map(move || {
        let rtt = store_.get_rtt();
        warp::reply::json(&rtt)
    });
    let store_ = store.clone();
    let endpoints = warp::path("endpoints").map(move || {
        let endpoints = store_.get_endpoints();
        warp::reply::json(&vec![endpoints])
    });
    let streams = warp::path("streams").map(move || {
        let streams = store.list_streams();
        warp::reply::json(
            &streams
        )
    });
    let routes = warp::get().and(
        endpoints
            .or(streams)
            .or(rtt)
    );
    warp::serve(routes).run(([127, 0, 0, 1], api_port))
}