@@ -695,6 +695,13 @@ async fn handle_put_site_config(mut request: Request<State>) -> tide::Result<Res
695
695
}
696
696
697
697
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
+ }
698
705
let site_path = {
699
706
if let Some ( site) = get_site ( & request) {
700
707
let pubkey = get_pubkey ( & request) ;
@@ -819,7 +826,7 @@ async fn handle_blossom_upload_request(mut request: Request<State>) -> tide::Res
819
826
return Ok ( Response :: builder ( StatusCode :: Ok )
820
827
. header ( "Access-Control-Allow-Origin" , "*" )
821
828
. header ( "Access-Control-Allow-Headers" , "Authorization,*" )
822
- . header ( "Access-Control-Allow-Methods" , "GET, PUT,DELETE " )
829
+ . header ( "Access-Control-Allow-Methods" , "PUT" )
823
830
. build ( ) ) ;
824
831
}
825
832
@@ -924,7 +931,9 @@ async fn server(
924
931
app. at ( "/upload" )
925
932
. options ( handle_blossom_upload_request)
926
933
. 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) ;
928
937
app. at ( "/:sha256" ) . delete ( handle_blossom_delete_request) ;
929
938
930
939
app
@@ -1642,13 +1651,24 @@ mod tests {
1642
1651
assert_eq ! ( icon_url, expected_icon_url) ;
1643
1652
1644
1653
// 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( ) , "*" ) ;
1645
1658
let req = Request :: new ( Method :: Get , Url :: parse ( & icon_url) ?) ;
1646
1659
let mut response: Response = app. respond ( req) . await ?;
1647
1660
assert_eq ! ( response. status( ) , StatusCode :: Ok ) ;
1648
1661
let response = response. body_bytes ( ) . await ?;
1649
1662
assert_eq ! ( response, ICON_BYTES ) ;
1650
1663
1651
1664
// /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( ) , "*" ) ;
1652
1672
let req = Request :: new (
1653
1673
Method :: Get ,
1654
1674
Url :: parse ( & format ! ( "https://site1.com/list/{}" , leader_monkey_pubkey) ) ?,
0 commit comments