14
14
15
15
from json import JSONDecodeError
16
16
17
+ from twisted .internet .defer import Deferred
18
+ from twisted .web .http import Request
19
+
17
20
from hathor .api_util import Resource , render_options , set_cors
18
21
from hathor .cli .openapi_files .register import register_resource
22
+ from hathor .manager import HathorManager
19
23
from hathor .p2p .peer_discovery import BootstrapPeerDiscovery
20
24
from hathor .util import json_dumpb , json_loadb
21
25
@@ -28,16 +32,17 @@ class AddPeersResource(Resource):
28
32
"""
29
33
isLeaf = True
30
34
31
- def __init__ (self , manager ) :
35
+ def __init__ (self , manager : HathorManager ) -> None :
32
36
self .manager = manager
33
37
34
- def render_POST (self , request ) :
38
+ def render_POST (self , request : Request ) -> bytes :
35
39
""" Add p2p peers
36
40
It expects a list of peers, in the format protocol://host:port (tcp://172.121.212.12:40403)
37
41
"""
38
42
request .setHeader (b'content-type' , b'application/json; charset=utf-8' )
39
43
set_cors (request , 'POST' )
40
44
45
+ assert request .content is not None
41
46
raw_data = request .content .read ()
42
47
if raw_data is None :
43
48
return json_dumpb ({'success' : False , 'message' : 'No post data' })
@@ -73,12 +78,14 @@ def already_connected(connection_string: str) -> bool:
73
78
filtered_peers = [connection_string for connection_string in peers if not already_connected (connection_string )]
74
79
75
80
pd = BootstrapPeerDiscovery (filtered_peers )
76
- pd .discover_and_connect (self .manager .connections .connect_to )
81
+ # this fires and forget the coroutine, which is compatible with the original behavior
82
+ coro = pd .discover_and_connect (self .manager .connections .connect_to )
83
+ Deferred .fromCoroutine (coro )
77
84
78
85
ret = {'success' : True , 'peers' : filtered_peers }
79
86
return json_dumpb (ret )
80
87
81
- def render_OPTIONS (self , request ) :
88
+ def render_OPTIONS (self , request : Request ) -> int :
82
89
return render_options (request )
83
90
84
91
0 commit comments