#DONATION 16RdQZ86NUWQbE6rM86JbxnnaCDcAKqa9
####HASHNET API HELPER####
#ver:1.2
# delete_all_orders funtion is wrong
#reply bad request!
#still missing error checking
from urllib import urlencode
import urllib2
import time
import hashlib
import hmac
import base64
import json
import os
class hashnest_connector:
BASEURL='https://www.hashnest.com/api/'
APIVERSION='v1'
URL=BASEURL+APIVERSION+'/'
CONNECTION_RETRY=3
SELL='sale'
BUY='purchase'
logfile='/storage/emulated/0/logs/hashnestapilog.txt'
def __init__(self,username,key,secret):
self.username=username
self.key=key
self.secret=secret
def printlog(self, nonce,url,r,data):
try:
f = open(self.logfile, 'a')
f.write('['+str(nonce)+',"'+str(url)+'",'+str(r)+',"'+data+'"]'+"\n")
f.close()
except Exception,e:
print "ERROR: can't write log file :" + str(Exception) + '---' + str(e)
def get_nonce(self):
return int(time.time()*100000);
def check_result(self,result):
pass
def perform_private(self,url,req={}):
nonce= self.get_nonce()
message = str(nonce) + self.username + self.key
req['access_key']=self.key
req['nonce']=nonce
req['signature']= hmac.new( self.secret, msg=message, digestmod=hashlib.sha256).hexdigest()
data = urlencode(req)
headers = {'User-Agent':'ApeGoxApi'}
url=self.URL+url
for i in range(0,self.CONNECTION_RETRY):
try:
req = urllib2.Request(url, data, headers)
res = urllib2.urlopen(req,data)
r=res.read()
self.printlog(nonce,url,r,data)
return json.loads(r)
except Exception,e:
self.printlog(nonce,url,str(e),data)
print 'ERROR:' +str(i+1)+'/'+str(self.CONNECTION_RETRY)+':' + str(Exception) + '---' + str(e)+"\n"+url+"\n"+data
time.sleep(1)
def get_account_info(self):
return self.perform_private('account');
def get_account_balance(self):
return self.perform_private('currency_accounts')
def get_account_hashrate(self):
return self.perform_private('hash_accounts')
def get_orders(self,cmi):
param={'currency_market_id':cmi}
return self.perform_private('orders/active',param)
def get_history(self,cmi,page=None,page_amount=None):
param={'currency_market_id':cmi}
if page is not None:param['page']=page
if page_amount is not None:param['page_per_amount']=page_amount
return self.perform_private('orders/history',param)
def create_order(self,cmi,amount,ppc,category):
param={'currency_market_id':cmi}
param['amount']=amount
param['ppc']=ppc
param['category']=category
return self.perform_private('orders',param)
def delete_order(self,order_id):
param={'order_id':order_id}
return self.perform_private('orders/revoke',param)
def delete_all_orders(self,cmi):
param={'currency_market_id':cmi}
return self.perform_private('orders/quick_revoke',param)
def get_opened_markets(self):
return self.perform_private('currency_markets')
def get_currency_orders(self,cmi,category='sale'):
param={'currency_market_id':cmi}
param['category']=category
return self.perform_private('currency_markets/orders',param)
def get_currency_trades(self,cmi):
param={'currency_market_id':cmi}
return self.perform_private('currency_markets/order_history',param)