Files
taskwarrior-2.x/sync-server/src/lib.rs
2021-09-12 21:30:04 +00:00

38 lines
827 B
Rust

#![deny(clippy::all)]
mod api;
mod server;
pub mod storage;
use crate::storage::Storage;
use actix_web::{get, web, Responder, Scope};
use api::{api_scope, ServerState};
#[get("/")]
async fn index() -> impl Responder {
format!("TaskChampion sync server v{}", env!("CARGO_PKG_VERSION"))
}
/// A Server represents a sync server.
#[derive(Clone)]
pub struct Server {
storage: ServerState,
}
impl Server {
/// Create a new sync server with the given storage implementation.
pub fn new(storage: Box<dyn Storage>) -> Self {
Self {
storage: storage.into(),
}
}
/// Get an Actix-web service for this server.
pub fn service(&self) -> Scope {
web::scope("")
.data(self.storage.clone())
.service(index)
.service(api_scope())
}
}