Skip to content

Commit c622bf4

Browse files
committed
cors and tracing
1 parent f3559cb commit c622bf4

File tree

4 files changed

+27
-16
lines changed

4 files changed

+27
-16
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

slingshot/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ atrium-identity = "0.1.5"
1010
atrium-oauth = "0.1.3"
1111
clap = { version = "4.5.41", features = ["derive"] }
1212
ctrlc = "3.4.7"
13-
env_logger = "0.11.8"
1413
foyer = { version = "0.18.0", features = ["serde"] }
1514
hickory-resolver = "0.25.2"
1615
jetstream = { path = "../jetstream", features = ["metrics"] }
@@ -27,4 +26,5 @@ thiserror = "2.0.12"
2726
time = { version = "0.3.41", features = ["serde"] }
2827
tokio = { version = "1.47.0", features = ["full"] }
2928
tokio-util = "0.7.15"
29+
tracing-subscriber = { version = "0.3.19", features = ["env-filter"] }
3030
url = "2.5.4"

slingshot/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ struct Args {
3535

3636
#[tokio::main]
3737
async fn main() -> Result<(), String> {
38-
env_logger::init();
38+
tracing_subscriber::fmt::init();
3939

4040
let shutdown = CancellationToken::new();
4141

slingshot/src/server.rs

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ use std::sync::Arc;
55
use tokio_util::sync::CancellationToken;
66

77
use poem::{
8-
Endpoint, Route, Server,
8+
Endpoint, EndpointExt, Route, Server,
99
endpoint::make_sync,
10+
http::Method,
1011
listener::{
1112
Listener, TcpListener,
1213
acme::{AutoCert, LETS_ENCRYPT_PRODUCTION},
1314
},
15+
middleware::{Cors, Tracing},
1416
};
1517
use poem_openapi::{
1618
ApiResponse, Object, OpenApi, OpenApiService, param::Query, payload::Json, types::Example,
@@ -242,7 +244,7 @@ pub async fn serve(
242244
.server("http://localhost:3000")
243245
.url_prefix("/xrpc");
244246

245-
let app = Route::new()
247+
let mut app = Route::new()
246248
.nest("/", api_service.scalar())
247249
.nest("/openapi.json", api_service.spec_endpoint())
248250
.nest("/xrpc/", api_service);
@@ -252,24 +254,33 @@ pub async fn serve(
252254
.install_default()
253255
.expect("alskfjalksdjf");
254256

255-
let app = app.at("/.well-known/did.json", get_did_doc(&host));
257+
app = app
258+
.at("/.well-known/did.json", get_did_doc(&host));
256259

257260
let auto_cert = AutoCert::builder()
258261
.directory_url(LETS_ENCRYPT_PRODUCTION)
259262
.domain(&host)
260263
.build()
261264
.map_err(ServerError::AcmeBuildError)?;
262265

263-
Server::new(TcpListener::bind("0.0.0.0:443").acme(auto_cert))
264-
.name("slingshot")
265-
.run(app)
266-
.await
267-
.map_err(ServerError::ServerExited)
266+
run(TcpListener::bind("0.0.0.0:443").acme(auto_cert), app).await
268267
} else {
269-
Server::new(TcpListener::bind("127.0.0.1:3000"))
270-
.name("slingshot")
271-
.run(app)
272-
.await
273-
.map_err(ServerError::ServerExited)
268+
run(TcpListener::bind("127.0.0.1:3000"), app).await
274269
}
275270
}
271+
272+
async fn run<L>(listener: L, app: Route) -> Result<(), ServerError>
273+
where
274+
L: Listener + 'static
275+
{
276+
let app = app
277+
.with(Cors::new()
278+
.allow_method(Method::GET)
279+
.allow_credentials(false))
280+
.with(Tracing);
281+
Server::new(listener)
282+
.name("slingshot")
283+
.run(app)
284+
.await
285+
.map_err(ServerError::ServerExited)
286+
}

0 commit comments

Comments
 (0)