|
@ -58,9 +58,9 @@ class Interface: |
|
|
class NativeInterface(Interface): |
|
|
class NativeInterface(Interface): |
|
|
"""This is the original Electrum protocol. It uses polling, and a non-persistent tcp connection""" |
|
|
"""This is the original Electrum protocol. It uses polling, and a non-persistent tcp connection""" |
|
|
|
|
|
|
|
|
def __init__(self, host=None, port=50000): |
|
|
def __init__(self, host, port): |
|
|
Interface.__init__(self) |
|
|
Interface.__init__(self) |
|
|
if host: self.host = host |
|
|
self.host = host |
|
|
self.port = port |
|
|
self.port = port |
|
|
|
|
|
|
|
|
def start_session(self, wallet): |
|
|
def start_session(self, wallet): |
|
@ -177,6 +177,33 @@ class NativeInterface(Interface): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HttpInterface(NativeInterface): |
|
|
|
|
|
|
|
|
|
|
|
def __init__(self, host, port): |
|
|
|
|
|
Interface.__init__(self) |
|
|
|
|
|
self.host = host |
|
|
|
|
|
self.port = port |
|
|
|
|
|
|
|
|
|
|
|
def handler(self, method, params = []): |
|
|
|
|
|
import urllib2, json, time |
|
|
|
|
|
if type(params) != type([]): params = [ params ] |
|
|
|
|
|
t1 = time.time() |
|
|
|
|
|
data = { 'method':method, 'id':'jsonrpc', 'params':params } |
|
|
|
|
|
data_json = json.dumps(data) |
|
|
|
|
|
host = 'http://%s:%d'%( self.host if method!='peers' else self.peers_server, self.port ) |
|
|
|
|
|
req = urllib2.Request(host, data_json, {'content-type': 'application/json'}) |
|
|
|
|
|
response_stream = urllib2.urlopen(req) |
|
|
|
|
|
response = json.loads( response_stream.read() ) |
|
|
|
|
|
out = response.get('result') |
|
|
|
|
|
if not out: |
|
|
|
|
|
print response |
|
|
|
|
|
self.rtime = time.time() - t1 |
|
|
|
|
|
self.is_connected = True |
|
|
|
|
|
return out |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import threading |
|
|
import threading |
|
|
|
|
|
|
|
|
class TCPInterface(Interface): |
|
|
class TCPInterface(Interface): |
|
@ -300,28 +327,6 @@ class TCPInterface(Interface): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HttpInterface(Interface): |
|
|
|
|
|
|
|
|
|
|
|
def __init__(self): |
|
|
|
|
|
self.port = 8081 |
|
|
|
|
|
|
|
|
|
|
|
def handler(self, method, params = []): |
|
|
|
|
|
import urllib2, json, time |
|
|
|
|
|
if type(params) != type([]): params = [ params ] |
|
|
|
|
|
t1 = time.time() |
|
|
|
|
|
data = { 'method':method, 'id':'jsonrpc', 'params':params } |
|
|
|
|
|
data_json = json.dumps(data) |
|
|
|
|
|
host = 'http://%s:%d'%( self.host if cmd!='peers' else self.peers_server, self.port ) |
|
|
|
|
|
req = urllib2.Request(host, data_json, {'content-type': 'application/json'}) |
|
|
|
|
|
response_stream = urllib2.urlopen(req) |
|
|
|
|
|
response = json.loads( response_stream.read() ) |
|
|
|
|
|
out = response.get('result') |
|
|
|
|
|
if not out: |
|
|
|
|
|
print response |
|
|
|
|
|
self.rtime = time.time() - t1 |
|
|
|
|
|
self.is_connected = True |
|
|
|
|
|
return out |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def new_interface(wallet): |
|
|
def new_interface(wallet): |
|
@ -331,7 +336,7 @@ def new_interface(wallet): |
|
|
interface = NativeInterface(host,port) |
|
|
interface = NativeInterface(host,port) |
|
|
elif port == 50001: |
|
|
elif port == 50001: |
|
|
interface = TCPInterface(host,port) |
|
|
interface = TCPInterface(host,port) |
|
|
elif port in [80,8080,81,8181]: |
|
|
elif port in [80, 81, 8080, 8081]: |
|
|
interface = HttpInterface(host,port) |
|
|
interface = HttpInterface(host,port) |
|
|
else: |
|
|
else: |
|
|
print "unknown port number: %d. using native protocol."%port |
|
|
print "unknown port number: %d. using native protocol."%port |
|
|