Skip to content

Commit 3543b7f

Browse files
committed
Handle OPTIONS on Blossom list request.
1 parent 086f8e5 commit 3543b7f

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

src/main.rs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,13 @@ async fn handle_put_site_config(mut request: Request<State>) -> tide::Result<Res
695695
}
696696

697697
async fn handle_blossom_list_request(request: Request<State>) -> tide::Result<Response> {
698+
if request.method() == Method::Options {
699+
return Ok(Response::builder(StatusCode::Ok)
700+
.header("Access-Control-Allow-Origin", "*")
701+
.header("Access-Control-Allow-Headers", "Authorization,*")
702+
.header("Access-Control-Allow-Methods", "GET")
703+
.build());
704+
}
698705
let site_path = {
699706
if let Some(site) = get_site(&request) {
700707
let pubkey = get_pubkey(&request);
@@ -819,7 +826,7 @@ async fn handle_blossom_upload_request(mut request: Request<State>) -> tide::Res
819826
return Ok(Response::builder(StatusCode::Ok)
820827
.header("Access-Control-Allow-Origin", "*")
821828
.header("Access-Control-Allow-Headers", "Authorization,*")
822-
.header("Access-Control-Allow-Methods", "GET,PUT,DELETE")
829+
.header("Access-Control-Allow-Methods", "PUT")
823830
.build());
824831
}
825832

@@ -924,7 +931,9 @@ async fn server(
924931
app.at("/upload")
925932
.options(handle_blossom_upload_request)
926933
.put(handle_blossom_upload_request);
927-
app.at("/list/:pubkey").get(handle_blossom_list_request);
934+
app.at("/list/:pubkey")
935+
.options(handle_blossom_list_request)
936+
.get(handle_blossom_list_request);
928937
app.at("/:sha256").delete(handle_blossom_delete_request);
929938

930939
app
@@ -1642,13 +1651,24 @@ mod tests {
16421651
assert_eq!(icon_url, expected_icon_url);
16431652

16441653
// get the file
1654+
let req = Request::new(Method::Options, Url::parse(&icon_url)?);
1655+
let response: Response = app.respond(req).await?;
1656+
assert_eq!(response.status(), StatusCode::Ok);
1657+
assert_eq!(response.header("Access-Control-Allow-Origin").unwrap(), "*");
16451658
let req = Request::new(Method::Get, Url::parse(&icon_url)?);
16461659
let mut response: Response = app.respond(req).await?;
16471660
assert_eq!(response.status(), StatusCode::Ok);
16481661
let response = response.body_bytes().await?;
16491662
assert_eq!(response, ICON_BYTES);
16501663

16511664
// /list
1665+
let req = Request::new(
1666+
Method::Options,
1667+
Url::parse(&format!("https://site1.com/list/{}", leader_monkey_pubkey))?,
1668+
);
1669+
let response: Response = app.respond(req).await?;
1670+
assert_eq!(response.status(), StatusCode::Ok);
1671+
assert_eq!(response.header("Access-Control-Allow-Origin").unwrap(), "*");
16521672
let req = Request::new(
16531673
Method::Get,
16541674
Url::parse(&format!("https://site1.com/list/{}", leader_monkey_pubkey))?,

0 commit comments

Comments
 (0)