rename state to service
This commit is contained in:
parent
34e64f5e51
commit
597148f500
3 changed files with 19 additions and 20 deletions
|
@ -21,7 +21,7 @@ pub struct App {
|
||||||
pub uploads: BTreeMap<Julid, JoecalUploadRequest>,
|
pub uploads: BTreeMap<Julid, JoecalUploadRequest>,
|
||||||
upload_state: TableState,
|
upload_state: TableState,
|
||||||
// for getting messages back from the web server or web client about things we've done; the
|
// for getting messages back from the web server or web client about things we've done; the
|
||||||
// other end is held by the state
|
// other end is held by the service
|
||||||
event_listener: UnboundedReceiver<TransferEvent>,
|
event_listener: UnboundedReceiver<TransferEvent>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -96,13 +96,13 @@ impl JoecalService {
|
||||||
|
|
||||||
/// Axum request handler for receiving other devices' registration requests.
|
/// Axum request handler for receiving other devices' registration requests.
|
||||||
pub async fn register_device(
|
pub async fn register_device(
|
||||||
State(state): State<JoecalService>,
|
State(service): State<JoecalService>,
|
||||||
ConnectInfo(addr): ConnectInfo<SocketAddr>,
|
ConnectInfo(addr): ConnectInfo<SocketAddr>,
|
||||||
Json(device): Json<Device>,
|
Json(device): Json<Device>,
|
||||||
) -> Json<Device> {
|
) -> Json<Device> {
|
||||||
let mut addr = addr;
|
let mut addr = addr;
|
||||||
addr.set_port(state.device.port);
|
addr.set_port(service.device.port);
|
||||||
state
|
service
|
||||||
.peers
|
.peers
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
|
|
@ -100,10 +100,10 @@ impl JoecalService {
|
||||||
Ok(response)
|
Ok(response)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn upload(
|
pub async fn send_bytes(
|
||||||
&self,
|
&self,
|
||||||
session_id: String,
|
session_id: String,
|
||||||
file_id: String,
|
content_id: String,
|
||||||
token: String,
|
token: String,
|
||||||
body: Bytes,
|
body: Bytes,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
|
@ -114,13 +114,13 @@ impl JoecalService {
|
||||||
return Err(LocalSendError::SessionInactive);
|
return Err(LocalSendError::SessionInactive);
|
||||||
}
|
}
|
||||||
|
|
||||||
if session.file_tokens.get(&file_id) != Some(&token) {
|
if session.file_tokens.get(&content_id) != Some(&token) {
|
||||||
return Err(LocalSendError::InvalidToken);
|
return Err(LocalSendError::InvalidToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
let request = self.client
|
let request = self.client
|
||||||
.post(format!(
|
.post(format!(
|
||||||
"{}://{}/api/localsend/v2/upload?sessionId={session_id}&fileId={file_id}&token={token}",
|
"{}://{}/api/localsend/v2/upload?sessionId={session_id}&fileId={content_id}&token={token}",
|
||||||
session.receiver.protocol, session.addr))
|
session.receiver.protocol, session.addr))
|
||||||
.body(body);
|
.body(body);
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ impl JoecalService {
|
||||||
let bytes = Bytes::from(file_contents);
|
let bytes = Bytes::from(file_contents);
|
||||||
|
|
||||||
// Upload file
|
// Upload file
|
||||||
self.upload(
|
self.send_bytes(
|
||||||
prepare_response.session_id,
|
prepare_response.session_id,
|
||||||
file_metadata.id,
|
file_metadata.id,
|
||||||
token.clone(),
|
token.clone(),
|
||||||
|
@ -190,7 +190,7 @@ impl JoecalService {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn register_prepare_upload(
|
pub async fn register_prepare_upload(
|
||||||
State(state): State<JoecalService>,
|
State(service): State<JoecalService>,
|
||||||
ConnectInfo(addr): ConnectInfo<SocketAddr>,
|
ConnectInfo(addr): ConnectInfo<SocketAddr>,
|
||||||
Json(req): Json<PrepareUploadRequest>,
|
Json(req): Json<PrepareUploadRequest>,
|
||||||
) -> impl IntoResponse {
|
) -> impl IntoResponse {
|
||||||
|
@ -198,14 +198,13 @@ pub async fn register_prepare_upload(
|
||||||
|
|
||||||
let id = Julid::new();
|
let id = Julid::new();
|
||||||
let (tx, mut rx) = unbounded_channel();
|
let (tx, mut rx) = unbounded_channel();
|
||||||
// be sure to clear this request before this function exits!
|
|
||||||
let request = JoecalUploadRequest {
|
let request = JoecalUploadRequest {
|
||||||
alias: req.info.alias.clone(),
|
alias: req.info.alias.clone(),
|
||||||
files: req.files.clone(),
|
files: req.files.clone(),
|
||||||
tx,
|
tx,
|
||||||
};
|
};
|
||||||
|
|
||||||
match state
|
match service
|
||||||
.transfer_event_tx
|
.transfer_event_tx
|
||||||
.send(TransferEvent::UploadRequest { id, request })
|
.send(TransferEvent::UploadRequest { id, request })
|
||||||
{
|
{
|
||||||
|
@ -239,13 +238,13 @@ pub async fn register_prepare_upload(
|
||||||
session_id: session_id.clone(),
|
session_id: session_id.clone(),
|
||||||
files: req.files.clone(),
|
files: req.files.clone(),
|
||||||
file_tokens: file_tokens.clone(),
|
file_tokens: file_tokens.clone(),
|
||||||
receiver: state.device.clone(),
|
receiver: service.device.clone(),
|
||||||
sender: req.info.clone(),
|
sender: req.info.clone(),
|
||||||
status: SessionStatus::Active,
|
status: SessionStatus::Active,
|
||||||
addr,
|
addr,
|
||||||
};
|
};
|
||||||
|
|
||||||
state
|
service
|
||||||
.sessions
|
.sessions
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -263,7 +262,7 @@ pub async fn register_prepare_upload(
|
||||||
|
|
||||||
pub async fn register_upload(
|
pub async fn register_upload(
|
||||||
Query(params): Query<UploadParams>,
|
Query(params): Query<UploadParams>,
|
||||||
State(state): State<JoecalService>,
|
State(service): State<JoecalService>,
|
||||||
Extension(download_dir): Extension<String>,
|
Extension(download_dir): Extension<String>,
|
||||||
body: Bytes,
|
body: Bytes,
|
||||||
) -> impl IntoResponse {
|
) -> impl IntoResponse {
|
||||||
|
@ -273,7 +272,7 @@ pub async fn register_upload(
|
||||||
let token = ¶ms.token;
|
let token = ¶ms.token;
|
||||||
|
|
||||||
// Get session and validate
|
// Get session and validate
|
||||||
let mut sessions_lock = state.sessions.lock().await;
|
let mut sessions_lock = service.sessions.lock().await;
|
||||||
let session = match sessions_lock.get_mut(session_id) {
|
let session = match sessions_lock.get_mut(session_id) {
|
||||||
Some(session) => session,
|
Some(session) => session,
|
||||||
None => return StatusCode::BAD_REQUEST.into_response(),
|
None => return StatusCode::BAD_REQUEST.into_response(),
|
||||||
|
@ -322,7 +321,7 @@ pub async fn register_upload(
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Ok(id) = Julid::from_str(session_id) {
|
if let Ok(id) = Julid::from_str(session_id) {
|
||||||
state.send_event(TransferEvent::Received(id));
|
service.send_event(TransferEvent::Received(id));
|
||||||
};
|
};
|
||||||
|
|
||||||
StatusCode::OK.into_response()
|
StatusCode::OK.into_response()
|
||||||
|
@ -339,9 +338,9 @@ pub struct UploadParams {
|
||||||
|
|
||||||
pub async fn register_cancel(
|
pub async fn register_cancel(
|
||||||
Query(params): Query<CancelParams>,
|
Query(params): Query<CancelParams>,
|
||||||
State(state): State<JoecalService>,
|
State(service): State<JoecalService>,
|
||||||
) -> impl IntoResponse {
|
) -> impl IntoResponse {
|
||||||
let mut sessions_lock = state.sessions.lock().await;
|
let mut sessions_lock = service.sessions.lock().await;
|
||||||
let session = match sessions_lock.get_mut(¶ms.session_id) {
|
let session = match sessions_lock.get_mut(¶ms.session_id) {
|
||||||
Some(session) => session,
|
Some(session) => session,
|
||||||
None => return StatusCode::BAD_REQUEST.into_response(),
|
None => return StatusCode::BAD_REQUEST.into_response(),
|
||||||
|
@ -352,7 +351,7 @@ pub async fn register_cancel(
|
||||||
session.status = SessionStatus::Cancelled;
|
session.status = SessionStatus::Cancelled;
|
||||||
|
|
||||||
if let Ok(id) = Julid::from_str(¶ms.session_id) {
|
if let Ok(id) = Julid::from_str(¶ms.session_id) {
|
||||||
state.send_event(TransferEvent::Cancelled(id));
|
service.send_event(TransferEvent::Cancelled(id));
|
||||||
};
|
};
|
||||||
|
|
||||||
StatusCode::OK.into_response()
|
StatusCode::OK.into_response()
|
||||||
|
|
Loading…
Reference in a new issue