Skip to content

Commit 9c7f701

Browse files
committed
fmt all
1 parent 812e335 commit 9c7f701

File tree

10 files changed

+147
-116
lines changed

10 files changed

+147
-116
lines changed

ntfy-daemon/src/credentials.rs

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use async_trait::async_trait;
99
pub struct KeyringItem {
1010
attributes: HashMap<String, String>,
1111
// we could zero-out this region of memory
12-
secret: Vec<u8>
12+
secret: Vec<u8>,
1313
}
1414

1515
impl KeyringItem {
@@ -121,7 +121,10 @@ impl NullableKeyring {
121121
("username".to_string(), cred.username.clone()),
122122
("server".to_string(), cred.password.clone()),
123123
]);
124-
search_response.push(KeyringItem { attributes, secret: cred.password.into_bytes() });
124+
search_response.push(KeyringItem {
125+
attributes,
126+
secret: cred.password.into_bytes(),
127+
});
125128
}
126129

127130
Self { search_response }
@@ -163,17 +166,12 @@ impl Credentials {
163166
}
164167
pub async fn load(&mut self) -> anyhow::Result<()> {
165168
let attrs = HashMap::from([("type", "password")]);
166-
let values = self
167-
.keyring
168-
.search_items(attrs)
169-
.await?;
169+
let values = self.keyring.search_items(attrs).await?;
170170

171171
let mut lock = self.creds.write().unwrap();
172172
lock.clear();
173173
for item in values {
174-
let attrs = item
175-
.attributes()
176-
.await;
174+
let attrs = item.attributes().await;
177175
lock.insert(
178176
attrs["server"].to_string(),
179177
Credential {
@@ -230,9 +228,7 @@ impl Credentials {
230228
("username", &creds.username),
231229
("server", server),
232230
]);
233-
self.keyring
234-
.delete(attrs)
235-
.await?;
231+
self.keyring.delete(attrs).await?;
236232
self.creds
237233
.write()
238234
.unwrap()

ntfy-daemon/src/http_client.rs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ use anyhow::Result;
22
use async_trait::async_trait;
33
use reqwest::{header::HeaderMap, Client, Request, RequestBuilder, Response, ResponseBuilderExt};
44
use serde_json::{json, Value};
5-
use tokio::time;
65
use std::collections::{HashMap, VecDeque};
76
use std::sync::Arc;
87
use std::time::Duration;
98
use tokio::sync::RwLock;
9+
use tokio::time;
1010

1111
use crate::models;
1212
use crate::output_tracker::OutputTrackerAsync;
@@ -86,7 +86,6 @@ impl HttpClient {
8686
}
8787
}
8888

89-
9089
#[derive(Clone, Default)]
9190
pub struct NullableClient {
9291
responses: Arc<RwLock<HashMap<String, VecDeque<Response>>>>,
@@ -161,7 +160,12 @@ impl NullableClientBuilder {
161160

162161
pub fn build(self) -> NullableClient {
163162
NullableClient {
164-
responses: Arc::new(RwLock::new(self.responses.into_iter().map(|(k, v)| (k, v.into())).collect())),
163+
responses: Arc::new(RwLock::new(
164+
self.responses
165+
.into_iter()
166+
.map(|(k, v)| (k, v.into()))
167+
.collect(),
168+
)),
165169
default_response: Arc::new(RwLock::new(self.default_response)),
166170
}
167171
}
@@ -183,7 +187,7 @@ impl LightHttpClient for NullableClient {
183187
time::sleep(Duration::from_millis(1)).await;
184188
let url = request.url().to_string();
185189
let mut responses = self.responses.write().await;
186-
190+
187191
if let Some(url_responses) = responses.get_mut(&url) {
188192
if let Some(response) = url_responses.pop_front() {
189193
// Remove the URL entry if no more responses
@@ -282,20 +286,26 @@ mod tests {
282286
let http_client = HttpClient::new_nullable(client);
283287

284288
// First request gets first response
285-
let request = http_client.get("https://api.example.com/sequence").build()?;
289+
let request = http_client
290+
.get("https://api.example.com/sequence")
291+
.build()?;
286292
let response = http_client.execute(request).await?;
287293
assert_eq!(response.text().await?, "first");
288294

289295
// Second request gets second response
290-
let request = http_client.get("https://api.example.com/sequence").build()?;
296+
let request = http_client
297+
.get("https://api.example.com/sequence")
298+
.build()?;
291299
let response = http_client.execute(request).await?;
292300
assert_eq!(response.text().await?, "second");
293301

294302
// Third request fails (no more responses)
295-
let request = http_client.get("https://api.example.com/sequence").build()?;
303+
let request = http_client
304+
.get("https://api.example.com/sequence")
305+
.build()?;
296306
let result = http_client.execute(request).await;
297307
assert!(result.is_err());
298308

299309
Ok(())
300310
}
301-
}
311+
}

ntfy-daemon/src/lib.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
pub mod credentials;
2-
pub mod message_repo;
3-
pub mod models;
4-
pub mod retry;
52
mod http_client;
6-
mod output_tracker;
73
mod listener;
4+
pub mod message_repo;
5+
pub mod models;
86
mod ntfy;
7+
mod output_tracker;
8+
pub mod retry;
99
mod subscription;
1010

11-
pub use subscription::SubscriptionHandle;
1211
pub use listener::*;
13-
pub use ntfy::NtfyHandle;
1412
pub use ntfy::start;
13+
pub use ntfy::NtfyHandle;
1514
use std::sync::Arc;
15+
pub use subscription::SubscriptionHandle;
1616

1717
use http_client::HttpClient;
1818

@@ -43,4 +43,3 @@ pub enum Error {
4343
#[error("subscription not found while {0}")]
4444
SubscriptionNotFound(String),
4545
}
46-

ntfy-daemon/src/listener.rs

Lines changed: 61 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::cell::RefCell;
22
use std::sync::Arc;
33
use std::thread::JoinHandle;
4-
use std::{time::Duration};
4+
use std::time::Duration;
55

66
use futures::{StreamExt, TryStreamExt};
77
use serde::{Deserialize, Serialize};
@@ -11,7 +11,7 @@ use tokio::sync::RwLock;
1111
use tokio::task::{self, spawn_local, AbortHandle, LocalSet};
1212
use tokio::{
1313
select,
14-
sync::{mpsc, watch, oneshot},
14+
sync::{mpsc, oneshot, watch},
1515
};
1616
use tokio_stream::wrappers::LinesStream;
1717
use tracing::{debug, error, info};
@@ -36,9 +36,7 @@ pub enum ServerEvent {
3636
topic: String,
3737
},
3838
#[serde(rename = "message")]
39-
Message (
40-
models::Message,
41-
),
39+
Message(models::Message),
4240
#[serde(rename = "keepalive")]
4341
KeepAlive {
4442
id: String,
@@ -116,9 +114,7 @@ pub struct ListenerActor {
116114
}
117115

118116
impl ListenerActor {
119-
pub fn new(
120-
config: ListenerConfig,
121-
) -> ListenerHandle {
117+
pub fn new(config: ListenerConfig) -> ListenerHandle {
122118
let (event_tx, event_rx) = async_channel::bounded(64);
123119
let (commands_tx, commands_rx) = mpsc::channel(1);
124120

@@ -127,7 +123,6 @@ impl ListenerActor {
127123
// use a new local set to isolate panics
128124
let local_set = LocalSet::new();
129125
local_set.spawn_local(async move {
130-
131126
let this = Self {
132127
event_tx,
133128
commands_rx: Some(commands_rx),
@@ -149,41 +144,44 @@ impl ListenerActor {
149144
}
150145

151146
pub async fn run_loop(mut self) {
152-
let mut commands_rx = self.commands_rx.take().unwrap();
153-
loop {
154-
select! {
155-
_ = self.run_supervised_loop() => {
156-
// the supervised loop cannot fail. If it finished, don't restart.
157-
break;
158-
},
159-
cmd = commands_rx.recv() => {
160-
match cmd {
161-
Some(ListenerCommand::Restart) => {
162-
info!("Received restart command");
163-
continue;
164-
}
165-
Some(ListenerCommand::Shutdown) => {
166-
info!("Received shutdown command");
167-
break;
168-
}
169-
Some(ListenerCommand::GetState(tx)) => {
170-
info!("Received get state command");
171-
let state = self.state.clone();
172-
let _ = tx.send(state);
173-
}
174-
None => {
175-
error!("Channel closed for ListenerActor");
176-
break;
177-
}
147+
let mut commands_rx = self.commands_rx.take().unwrap();
148+
loop {
149+
select! {
150+
_ = self.run_supervised_loop() => {
151+
// the supervised loop cannot fail. If it finished, don't restart.
152+
break;
153+
},
154+
cmd = commands_rx.recv() => {
155+
match cmd {
156+
Some(ListenerCommand::Restart) => {
157+
info!("Received restart command");
158+
continue;
159+
}
160+
Some(ListenerCommand::Shutdown) => {
161+
info!("Received shutdown command");
162+
break;
163+
}
164+
Some(ListenerCommand::GetState(tx)) => {
165+
info!("Received get state command");
166+
let state = self.state.clone();
167+
let _ = tx.send(state);
168+
}
169+
None => {
170+
error!("Channel closed for ListenerActor");
171+
break;
178172
}
179173
}
180174
}
181175
}
176+
}
182177
}
183178

184179
async fn set_state(&mut self, state: ConnectionState) {
185180
self.state = state.clone();
186-
self.event_tx.send(ListenerEvent::ConnectionStateChanged(state)).await.unwrap();
181+
self.event_tx
182+
.send(ListenerEvent::ConnectionStateChanged(state))
183+
.await
184+
.unwrap();
187185
}
188186
async fn run_supervised_loop(&mut self) {
189187
dbg!("supervised");
@@ -208,7 +206,8 @@ impl ListenerActor {
208206
retry_count: retry.count(),
209207
delay: retry.next_delay(),
210208
error: Some(Arc::new(e)),
211-
}).await;
209+
})
210+
.await;
212211
info!(delay = ?retry.next_delay(), "restarting");
213212
retry.wait().await;
214213
} else {
@@ -236,9 +235,7 @@ impl ListenerActor {
236235
let stream = response_lines(reader).await?;
237236
tokio::pin!(stream);
238237

239-
self.set_state(
240-
ConnectionState::Connected,
241-
).await;
238+
self.set_state(ConnectionState::Connected).await;
242239

243240
info!(topic = %&self.config.topic, "listening");
244241
while let Some(msg) = stream.next().await {
@@ -254,7 +251,10 @@ impl ListenerActor {
254251
match event {
255252
ServerEvent::Message(msg) => {
256253
debug!("message event");
257-
self.event_tx.send(ListenerEvent::Message(msg)).await.unwrap();
254+
self.event_tx
255+
.send(ListenerEvent::Message(msg))
256+
.await
257+
.unwrap();
258258
}
259259
ServerEvent::KeepAlive { .. } => {
260260
debug!("keepalive event");
@@ -283,7 +283,10 @@ impl ListenerHandle {
283283
// the response will be sent as an event in self.events
284284
pub async fn request_state(&self) -> ConnectionState {
285285
let (tx, rx) = oneshot::channel();
286-
self.commands.send(ListenerCommand::GetState(tx)).await.unwrap();
286+
self.commands
287+
.send(ListenerCommand::GetState(tx))
288+
.await
289+
.unwrap();
287290
rx.await.unwrap()
288291
}
289292
}
@@ -336,7 +339,6 @@ mod tests {
336339

337340
let mut listener = ListenerActor::new(config.clone());
338341
let items: Vec<_> = listener.events.take(3).collect().await;
339-
340342

341343
dbg!(&items);
342344
assert!(matches!(
@@ -355,7 +357,7 @@ mod tests {
355357
// ListenerEvent::Connected { .. },
356358
// ));
357359
});
358-
local_set.await;
360+
local_set.await;
359361
}
360362

361363
#[tokio::test]
@@ -400,23 +402,22 @@ mod tests {
400402
#[tokio::test]
401403
async fn integration_connects_sends_receives_simple() {
402404
let local_set = LocalSet::new();
403-
local_set
404-
.spawn_local(async {
405-
let http_client = HttpClient::new(reqwest::Client::new());
406-
let credentials = Credentials::new_nullable(vec![]).await.unwrap();
407-
408-
let config = ListenerConfig {
409-
http_client,
410-
credentials,
411-
endpoint: "http://localhost:8000".to_string(),
412-
topic: "test".to_string(),
413-
since: 0,
414-
};
405+
local_set.spawn_local(async {
406+
let http_client = HttpClient::new(reqwest::Client::new());
407+
let credentials = Credentials::new_nullable(vec![]).await.unwrap();
408+
409+
let config = ListenerConfig {
410+
http_client,
411+
credentials,
412+
endpoint: "http://localhost:8000".to_string(),
413+
topic: "test".to_string(),
414+
since: 0,
415+
};
415416

416-
let mut listener = ListenerActor::new(config.clone());
417+
let mut listener = ListenerActor::new(config.clone());
417418

418-
// assert_event_matches!(listener, ListenerEvent::Connected { .. },);
419-
});
420-
local_set.await;
419+
// assert_event_matches!(listener, ListenerEvent::Connected { .. },);
420+
});
421+
local_set.await;
421422
}
422423
}

ntfy-daemon/src/message_repo/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ impl Db {
2828
}
2929
fn migrate(&mut self) -> Result<()> {
3030
self.conn
31-
.read().unwrap()
31+
.read()
32+
.unwrap()
3233
.execute_batch(include_str!("./migrations/00.sql"))?;
3334
Ok(())
3435
}

0 commit comments

Comments
 (0)