@@ -92,7 +92,10 @@ def return_404(message: str = "this download does not exist") -> RESTResponse:
92
92
"""
93
93
Returns a 404 response code if your channel has not been created.
94
94
"""
95
- return RESTResponse ({"error" : message }, status = HTTP_NOT_FOUND )
95
+ return RESTResponse ({"error" : {
96
+ "handled" : True ,
97
+ "message" : message
98
+ }}, status = HTTP_NOT_FOUND )
96
99
97
100
def create_dconfig_from_params (self , parameters : dict ) -> tuple [DownloadConfig , None ] | tuple [None , str ]:
98
101
"""
@@ -423,19 +426,28 @@ async def add_download(self, request: Request) -> RESTResponse: # noqa: C901
423
426
params = await request .json ()
424
427
uri = params .get ("uri" )
425
428
if not uri :
426
- return RESTResponse ({"error" : "uri parameter missing" }, status = HTTP_BAD_REQUEST )
429
+ return RESTResponse ({"error" : {
430
+ "handled" : True ,
431
+ "message" : "uri parameter missing"
432
+ }}, status = HTTP_BAD_REQUEST )
427
433
428
434
download_config , error = self .create_dconfig_from_params (params )
429
435
if error :
430
- return RESTResponse ({"error" : error }, status = HTTP_BAD_REQUEST )
436
+ return RESTResponse ({"error" : {
437
+ "handled" : True ,
438
+ "message" : error
439
+ }}, status = HTTP_BAD_REQUEST )
431
440
432
441
try :
433
442
if tdef :
434
443
download = await self .download_manager .start_download (tdef = tdef , config = download_config )
435
444
elif uri :
436
445
download = await self .download_manager .start_download_from_uri (uri , config = download_config )
437
446
except Exception as e :
438
- return RESTResponse ({"error" : str (e )}, status = HTTP_INTERNAL_SERVER_ERROR )
447
+ return RESTResponse ({"error" : {
448
+ "handled" : True ,
449
+ "message" : str (e )
450
+ }}, status = HTTP_INTERNAL_SERVER_ERROR )
439
451
440
452
return RESTResponse ({"started" : True , "infohash" : hexlify (download .get_def ().get_infohash ()).decode ()})
441
453
@@ -465,7 +477,10 @@ async def delete_download(self, request: Request) -> RESTResponse:
465
477
"""
466
478
parameters = await request .json ()
467
479
if "remove_data" not in parameters :
468
- return RESTResponse ({"error" : "remove_data parameter missing" }, status = HTTP_BAD_REQUEST )
480
+ return RESTResponse ({"error" : {
481
+ "handled" : True ,
482
+ "message" : "remove_data parameter missing"
483
+ }}, status = HTTP_BAD_REQUEST )
469
484
470
485
infohash = unhexlify (request .match_info ["infohash" ])
471
486
download = self .download_manager .get_download (infohash )
@@ -514,8 +529,10 @@ async def update_download(self, request: Request) -> RESTResponse: # noqa: C901
514
529
515
530
parameters = await request .json ()
516
531
if len (parameters ) > 1 and "anon_hops" in parameters :
517
- return RESTResponse ({"error" : "anon_hops must be the only parameter in this request" },
518
- status = HTTP_BAD_REQUEST )
532
+ return RESTResponse ({"error" : {
533
+ "handled" : True ,
534
+ "message" : "anon_hops must be the only parameter in this request"
535
+ }}, status = HTTP_BAD_REQUEST )
519
536
if 'anon_hops' in parameters :
520
537
anon_hops = int (parameters ['anon_hops' ])
521
538
try :
@@ -529,7 +546,10 @@ async def update_download(self, request: Request) -> RESTResponse: # noqa: C901
529
546
selected_files_list = parameters ["selected_files" ]
530
547
num_files = len (download .tdef .get_files ())
531
548
if not all (0 <= index < num_files for index in selected_files_list ):
532
- return RESTResponse ({"error" : "index out of range" }, status = HTTP_BAD_REQUEST )
549
+ return RESTResponse ({"error" : {
550
+ "handled" : True ,
551
+ "message" : "index out of range"
552
+ }}, status = HTTP_BAD_REQUEST )
533
553
download .set_selected_files (selected_files_list )
534
554
535
555
if state := parameters .get ("state" ):
@@ -542,12 +562,17 @@ async def update_download(self, request: Request) -> RESTResponse: # noqa: C901
542
562
elif state == "move_storage" :
543
563
dest_dir = Path (parameters ["dest_dir" ])
544
564
if not dest_dir .exists ():
545
- return RESTResponse ({"error" : f"Target directory ({ dest_dir } ) does not exist" },
546
- status = HTTP_BAD_REQUEST )
565
+ return RESTResponse ({"error" : {
566
+ "handled" : True ,
567
+ "message" : f"Target directory ({ dest_dir } ) does not exist"
568
+ }}, status = HTTP_BAD_REQUEST )
547
569
download .move_storage (dest_dir )
548
570
download .checkpoint ()
549
571
else :
550
- return RESTResponse ({"error" : "unknown state parameter" }, status = HTTP_BAD_REQUEST )
572
+ return RESTResponse ({"error" : {
573
+ "handled" : True ,
574
+ "message" : "unknown state parameter"
575
+ }}, status = HTTP_BAD_REQUEST )
551
576
552
577
return RESTResponse ({"modified" : True , "infohash" : hexlify (download .get_def ().get_infohash ()).decode ()})
553
578
@@ -615,13 +640,19 @@ async def add_tracker(self, request: Request) -> RESTResponse:
615
640
parameters = await request .json ()
616
641
url = parameters .get ("url" )
617
642
if not url :
618
- return RESTResponse ({"error" : "url parameter missing" }, status = HTTP_BAD_REQUEST )
643
+ return RESTResponse ({"error" : {
644
+ "handled" : True ,
645
+ "message" : "url parameter missing"
646
+ }}, status = HTTP_BAD_REQUEST )
619
647
620
648
try :
621
649
download .add_trackers ([url ])
622
650
download .handle .force_reannounce (0 , len (download .handle .trackers ()) - 1 )
623
651
except RuntimeError as e :
624
- return RESTResponse ({"error" : str (e )}, status = HTTP_INTERNAL_SERVER_ERROR )
652
+ return RESTResponse ({"error" : {
653
+ "handled" : True ,
654
+ "message" : str (e )
655
+ }}, status = HTTP_INTERNAL_SERVER_ERROR )
625
656
626
657
return RESTResponse ({"added" : True })
627
658
@@ -657,13 +688,19 @@ async def remove_tracker(self, request: Request) -> RESTResponse:
657
688
parameters = await request .json ()
658
689
url = parameters .get ("url" )
659
690
if not url :
660
- return RESTResponse ({"error" : "url parameter missing" }, status = HTTP_BAD_REQUEST )
691
+ return RESTResponse ({"error" : {
692
+ "handled" : True ,
693
+ "message" : "url parameter missing"
694
+ }}, status = HTTP_BAD_REQUEST )
661
695
662
696
try :
663
697
download .handle .replace_trackers ([tracker for tracker in download .handle .trackers ()
664
698
if tracker ["url" ] != url ])
665
699
except RuntimeError as e :
666
- return RESTResponse ({"error" : str (e )}, status = HTTP_INTERNAL_SERVER_ERROR )
700
+ return RESTResponse ({"error" : {
701
+ "handled" : True ,
702
+ "message" : str (e )
703
+ }}, status = HTTP_INTERNAL_SERVER_ERROR )
667
704
668
705
return RESTResponse ({"removed" : True })
669
706
@@ -699,15 +736,21 @@ async def tracker_force_announce(self, request: Request) -> RESTResponse:
699
736
parameters = await request .json ()
700
737
url = parameters .get ("url" )
701
738
if not url :
702
- return RESTResponse ({"error" : "url parameter missing" }, status = HTTP_BAD_REQUEST )
739
+ return RESTResponse ({"error" : {
740
+ "handled" : True ,
741
+ "message" : "url parameter missing"
742
+ }}, status = HTTP_BAD_REQUEST )
703
743
704
744
try :
705
745
for i , tracker in enumerate (download .handle .trackers ()):
706
746
if tracker ["url" ] == url :
707
747
download .handle .force_reannounce (0 , i )
708
748
break
709
749
except RuntimeError as e :
710
- return RESTResponse ({"error" : str (e )}, status = HTTP_INTERNAL_SERVER_ERROR )
750
+ return RESTResponse ({"error" : {
751
+ "handled" : True ,
752
+ "message" : str (e )
753
+ }}, status = HTTP_INTERNAL_SERVER_ERROR )
711
754
712
755
return RESTResponse ({"forced" : True })
713
756
@@ -804,7 +847,10 @@ async def collapse_tree_directory(self, request: Request) -> RESTResponse:
804
847
params = request .query
805
848
path = params .get ("path" )
806
849
if not path :
807
- return RESTResponse ({"error" : "path parameter missing" }, status = HTTP_BAD_REQUEST )
850
+ return RESTResponse ({"error" : {
851
+ "handled" : True ,
852
+ "message" : "path parameter missing"
853
+ }}, status = HTTP_BAD_REQUEST )
808
854
809
855
download .tdef .torrent_file_tree .collapse (Path (path ))
810
856
@@ -845,7 +891,10 @@ async def expand_tree_directory(self, request: Request) -> RESTResponse:
845
891
params = request .query
846
892
path = params .get ("path" )
847
893
if not path :
848
- return RESTResponse ({"error" : "path parameter missing" }, status = HTTP_BAD_REQUEST )
894
+ return RESTResponse ({"error" : {
895
+ "handled" : True ,
896
+ "message" : "path parameter missing"
897
+ }}, status = HTTP_BAD_REQUEST )
849
898
850
899
download .tdef .torrent_file_tree .expand (Path (path ))
851
900
@@ -884,7 +933,10 @@ async def select_tree_path(self, request: Request) -> RESTResponse:
884
933
params = request .query
885
934
path = params .get ("path" )
886
935
if not path :
887
- return RESTResponse ({"error" : "path parameter missing" }, status = HTTP_BAD_REQUEST )
936
+ return RESTResponse ({"error" : {
937
+ "handled" : True ,
938
+ "message" : "path parameter missing"
939
+ }}, status = HTTP_BAD_REQUEST )
888
940
889
941
download .set_selected_file_or_dir (Path (path ), True )
890
942
@@ -923,7 +975,10 @@ async def deselect_tree_path(self, request: Request) -> RESTResponse:
923
975
params = request .query
924
976
path = params .get ("path" )
925
977
if not path :
926
- return RESTResponse ({"error" : "path parameter missing" }, status = HTTP_BAD_REQUEST )
978
+ return RESTResponse ({"error" : {
979
+ "handled" : True ,
980
+ "message" : "path parameter missing"
981
+ }}, status = HTTP_BAD_REQUEST )
927
982
928
983
download .set_selected_file_or_dir (Path (path ), False )
929
984
0 commit comments