11import logging
2+ import six
23
34from twisted .web import server , resource
45
1718class JsonResource (JsonResource_ ):
1819
1920 def __init__ (self , crawler , target = None ):
20- JsonResource_ .__init__ (self )
21+ super (JsonResource , self ).__init__ ()
22+
2123 self .crawler = crawler
2224 self .json_encoder = ScrapyJSONEncoder (crawler = crawler )
2325
26+ def getChildWithDefault (self , path , request ):
27+ path = path .decode ('UTF-8' )
28+ return super (JsonResource , self ).getChildWithDefault (path , request )
29+
30+
2431class JsonRpcResource (JsonResource ):
2532
2633 def __init__ (self , crawler , target = None ):
27- JsonResource .__init__ (self , crawler , target )
34+ super (JsonRpcResource , self ).__init__ (crawler , target )
35+
2836 self .json_decoder = ScrapyJSONDecoder (crawler = crawler )
2937 self .crawler = crawler
3038 self ._target = target
3139
32- def render_GET (self , txrequest ):
40+ def render_GET (self , request ):
3341 return self .get_target ()
3442
35- def render_POST (self , txrequest ):
36- reqstr = txrequest .content .getvalue ()
43+ def render_POST (self , request ):
44+ reqstr = request .content .getvalue ()
3745 target = self .get_target ()
3846 return jsonrpc_server_call (target , reqstr , self .json_decoder )
3947
40- def getChild (self , name , txrequest ):
48+ def getChild (self , name , request ):
4149 target = self .get_target ()
4250 try :
4351 newtarget = getattr (target , name )
@@ -54,33 +62,37 @@ class CrawlerResource(JsonRpcResource):
5462 ws_name = 'crawler'
5563
5664 def __init__ (self , crawler ):
57- JsonRpcResource . __init__ ( self , crawler , crawler )
65+ super ( CrawlerResource , self ). __init__ ( crawler , target = crawler )
5866
5967
6068class RootResource (JsonResource ):
6169
62- def render_GET (self , txrequest ):
63- return {'resources' : self .children .keys ()}
70+ def render_GET (self , request ):
71+ return {'resources' : list ( self .children .keys () )}
6472
65- def getChild (self , name , txrequest ):
73+ def getChild (self , name , request ):
6674 if name == '' :
6775 return self
68- return JsonResource .getChild (self , name , txrequest )
76+ return JsonResource .getChild (self , name , request )
6977
7078
71- class WebService (server .Site ):
79+ class WebService (server .Site , object ):
7280
7381 def __init__ (self , crawler ):
7482 if not crawler .settings .getbool ('JSONRPC_ENABLED' ):
7583 raise NotConfigured
76- self . crawler = crawler
84+
7785 logfile = crawler .settings ['JSONRPC_LOGFILE' ]
86+ self .crawler = crawler
7887 self .portrange = [int (x ) for x in crawler .settings .getlist ('JSONRPC_PORT' , [6023 , 6073 ])]
7988 self .host = crawler .settings .get ('JSONRPC_HOST' , '127.0.0.1' )
89+ self .noisy = False
90+
8091 root = RootResource (crawler )
8192 root .putChild ('crawler' , CrawlerResource (self .crawler ))
82- server .Site .__init__ (self , root , logPath = logfile )
83- self .noisy = False
93+
94+ super (WebService , self ).__init__ (root , logPath = logfile )
95+
8496 crawler .signals .connect (self .start_listening , signals .engine_started )
8597 crawler .signals .connect (self .stop_listening , signals .engine_stopped )
8698
@@ -90,10 +102,10 @@ def from_crawler(cls, crawler):
90102
91103 def start_listening (self ):
92104 self .port = listen_tcp (self .portrange , self .host , self )
105+
93106 logger .debug (
94107 'Web service listening on {host.host:s}:{host.port:d}' .format (
95108 host = self .port .getHost ()))
96109
97110 def stop_listening (self ):
98111 self .port .stopListening ()
99-
0 commit comments