From bc0fac1bf2a02c9a76c8c4b9eccc9235de4e86b2 Mon Sep 17 00:00:00 2001 From: yuzu Date: Wed, 9 Jul 2025 20:24:36 +0000 Subject: working network communication git-svn-id: svn+ssh://diminuette.aengel.lesbianunix.dev/salaryman/trunk@13 b9215c17-b818-4693-b096-d1e41a411fef --- src/smd/endpoints.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/smd/endpoints.rs') diff --git a/src/smd/endpoints.rs b/src/smd/endpoints.rs index 8b13789..48c9720 100644 --- a/src/smd/endpoints.rs +++ b/src/smd/endpoints.rs @@ -1 +1,37 @@ +use super::{ + Config, + context::{SalarymanDContext, StdinBuffer}, +}; +use dropshot::{HttpError, HttpResponseOk, RequestContext, TypedBody, endpoint}; +use std::sync::Arc; +#[endpoint { + method = GET, + path = "/config", +}] +pub async fn endpoint_get_config( + rqctx: RequestContext>, +) -> Result, HttpError> { + Ok(HttpResponseOk(rqctx.context().config.clone())) +} + +#[endpoint { + method = PUT, + path = "/services/write" +}] +pub async fn endpoint_post_stdin( + rqctx: RequestContext>, + update: TypedBody, +) -> Result, HttpError> { + let ctx = rqctx.context(); + let stdin_str = update.into_inner(); + for i in 0..ctx.service.len() { + let mut lock = ctx.service[i].lock().await; + if lock.started().await { + lock.writeln_stdin(stdin_str.string.clone()).await.unwrap(); //TODO: PROPERLY HANDLE ERROR! + } + drop(lock); + } + + Ok(HttpResponseOk(())) +} -- cgit 1.4.1-2-gfad0