refactoring
This commit is contained in:
parent
edb012e14a
commit
f9f26d4450
|
@ -87,6 +87,9 @@ class Interface:
|
||||||
def handle_response(self, method, params, result):
|
def handle_response(self, method, params, result):
|
||||||
|
|
||||||
if method == 'session.new':
|
if method == 'session.new':
|
||||||
|
# print result, "do nothing"
|
||||||
|
# session id is in the cookie
|
||||||
|
|
||||||
self.session_id, self.message = ast.literal_eval( result )
|
self.session_id, self.message = ast.literal_eval( result )
|
||||||
self.was_updated = True
|
self.was_updated = True
|
||||||
|
|
||||||
|
@ -95,7 +98,7 @@ class Interface:
|
||||||
self.was_updated = True
|
self.was_updated = True
|
||||||
|
|
||||||
elif method == 'session.poll':
|
elif method == 'session.poll':
|
||||||
blocks, changed_addresses = ast.literal_eval( result )
|
blocks, changed_addresses = result
|
||||||
if blocks == -1: raise BaseException("session not found")
|
if blocks == -1: raise BaseException("session not found")
|
||||||
self.blocks = int(blocks)
|
self.blocks = int(blocks)
|
||||||
if changed_addresses:
|
if changed_addresses:
|
||||||
|
@ -129,8 +132,9 @@ class Interface:
|
||||||
elif method == 'numblocks.subscribe':
|
elif method == 'numblocks.subscribe':
|
||||||
self.blocks = result
|
self.blocks = result
|
||||||
if self.newblock_callback: apply(self.newblock_callback,(result,))
|
if self.newblock_callback: apply(self.newblock_callback,(result,))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print "received message:", c, method, params
|
print "received message:", method, params, result
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -153,7 +157,7 @@ class PollingInterface(Interface):
|
||||||
|
|
||||||
def update_wallet(self):
|
def update_wallet(self):
|
||||||
while True:
|
while True:
|
||||||
self.send([('session.poll', self.session_id )])
|
self.send([('session.poll', [])])
|
||||||
if self.is_up_to_date: break
|
if self.is_up_to_date: break
|
||||||
|
|
||||||
#if is_new or wallet.remote_url:
|
#if is_new or wallet.remote_url:
|
||||||
|
@ -183,7 +187,8 @@ class PollingInterface(Interface):
|
||||||
|
|
||||||
|
|
||||||
def get_servers(self):
|
def get_servers(self):
|
||||||
thread.start_new_thread(self.update_servers_thread, ())
|
#thread.start_new_thread(self.update_servers_thread, ())
|
||||||
|
pass
|
||||||
|
|
||||||
def update_servers_thread(self):
|
def update_servers_thread(self):
|
||||||
# if my server is not reachable, I should get the list from one of the default servers
|
# if my server is not reachable, I should get the list from one of the default servers
|
||||||
|
@ -192,7 +197,9 @@ class PollingInterface(Interface):
|
||||||
for server in DEFAULT_SERVERS:
|
for server in DEFAULT_SERVERS:
|
||||||
try:
|
try:
|
||||||
self.peers_server = server
|
self.peers_server = server
|
||||||
|
|
||||||
self.send([('server.peers',[])])
|
self.send([('server.peers',[])])
|
||||||
|
|
||||||
# print "Received server list from %s" % self.peers_server, out
|
# print "Received server list from %s" % self.peers_server, out
|
||||||
break
|
break
|
||||||
except socket.timeout:
|
except socket.timeout:
|
||||||
|
@ -224,6 +231,9 @@ class NativeInterface(PollingInterface):
|
||||||
method, params = m
|
method, params = m
|
||||||
cmd = cmds[method]
|
cmd = cmds[method]
|
||||||
|
|
||||||
|
if cmd == 'poll':
|
||||||
|
params = self.session_id
|
||||||
|
|
||||||
if cmd in ['h', 'tx']:
|
if cmd in ['h', 'tx']:
|
||||||
str_params = params[0]
|
str_params = params[0]
|
||||||
elif type(params) != type(''):
|
elif type(params) != type(''):
|
||||||
|
@ -244,7 +254,8 @@ class NativeInterface(PollingInterface):
|
||||||
s.close()
|
s.close()
|
||||||
self.rtime = time.time() - t1
|
self.rtime = time.time() - t1
|
||||||
self.is_connected = True
|
self.is_connected = True
|
||||||
if cmd in[ 'peers','h']:
|
|
||||||
|
if cmd in[ 'peers','h','poll']:
|
||||||
out = ast.literal_eval( out )
|
out = ast.literal_eval( out )
|
||||||
|
|
||||||
if out=='': out=None #fixme
|
if out=='': out=None #fixme
|
||||||
|
@ -257,9 +268,21 @@ class NativeInterface(PollingInterface):
|
||||||
|
|
||||||
class HttpInterface(PollingInterface):
|
class HttpInterface(PollingInterface):
|
||||||
|
|
||||||
|
def start_session(self, addresses, version):
|
||||||
|
self.session_id = None
|
||||||
|
self.send([('client.version', [version]), ('server.banner',[]), ('numblocks.subscribe',[])])
|
||||||
|
|
||||||
|
#self.subscribe(addresses)
|
||||||
|
|
||||||
|
thread.start_new_thread(self.poll_thread, ())
|
||||||
|
|
||||||
|
|
||||||
def send(self, messages):
|
def send(self, messages):
|
||||||
import urllib2, json, time
|
import urllib2, json, time, cookielib
|
||||||
|
|
||||||
|
cj = cookielib.CookieJar()
|
||||||
|
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
|
||||||
|
urllib2.install_opener(opener)
|
||||||
|
|
||||||
data = []
|
data = []
|
||||||
for m in messages:
|
for m in messages:
|
||||||
|
@ -271,9 +294,23 @@ class HttpInterface(PollingInterface):
|
||||||
self.message_id += 1
|
self.message_id += 1
|
||||||
|
|
||||||
data_json = json.dumps(data)
|
data_json = json.dumps(data)
|
||||||
host = 'http://%s:%d'%( self.host if method!='server.peers' else self.peers_server, self.port )
|
print data_json
|
||||||
req = urllib2.Request(host, data_json, {'content-type': 'application/json'})
|
#host = 'http://%s:%d'%( self.host if method!='server.peers' else self.peers_server, self.port )
|
||||||
|
host = 'http://%s:%d'%( self.host, self.port )
|
||||||
|
|
||||||
|
headers = {'content-type': 'application/json'}
|
||||||
|
if self.session_id:
|
||||||
|
print "adding cookie in header"
|
||||||
|
headers['cookie'] = 'SESSION=%s'%self.session_id
|
||||||
|
|
||||||
|
req = urllib2.Request(host, data_json, headers)
|
||||||
response_stream = urllib2.urlopen(req)
|
response_stream = urllib2.urlopen(req)
|
||||||
|
|
||||||
|
for index, cookie in enumerate(cj):
|
||||||
|
if cookie.name=='SESSION':
|
||||||
|
self.session_id = cookie.value
|
||||||
|
print "got session id from cookie", self.session_id
|
||||||
|
|
||||||
response = json.loads( response_stream.read() )
|
response = json.loads( response_stream.read() )
|
||||||
|
|
||||||
self.rtime = time.time() - t1
|
self.rtime = time.time() - t1
|
||||||
|
|
Loading…
Reference in New Issue