diff --git a/cexapi.py b/cexapi.py index 076e9e2..2ea73a6 100644 --- a/cexapi.py +++ b/cexapi.py @@ -1,9 +1,3 @@ -# -*- coding: utf-8 -*- -## Author: t0pep0 -## e-mail: t0pep0.gentoo@gmail.com -## Jabber: t0pep0@jabber.ru -## BTC : 1ipEA2fcVyjiUnBqUx7PVy5efktz2hucb -## donate free =) import hmac import hashlib import time @@ -11,64 +5,76 @@ import urllib2 import json + class api: - __username = ''; - __api_key = ''; - __api_secret = ''; - __nonce_v = ''; - - ##Init class## - def __init__(self,username,api_key,api_secret): - self.__username = username - self.__api_key = api_key - self.__api_secret = api_secret - - ##get timestamp as nonce - def __nonce(self): - self.__nonce_v = '{:.10f}'.format(time.time()*1000).split('.')[0] - - ##generate segnature - def __signature(self): - string = self.__nonce_v + self.__username + self.__api_key ##create string - signature = hmac.new(self.__api_secret, string, digestmod=hashlib.sha256).hexdigest().upper() ##create signature - return signature - - def __post(self, url, param): ##Post Request (Low Level API call) - params = urllib.urlencode(param) - req = urllib2.Request(url, params, {'User-agent': 'bot-cex.io-'+self.__username}) - page = urllib2.urlopen(req).read() - return page; - - def api_call(self, method, param = {}, private = 0, couple = ''): ## api call (Middle level) - url = 'https://cex.io/api/'+method+'/' ##generate url - if couple != '': - url = url + couple + '/' ##set couple if needed - if private == 1: ##add auth-data if needed - self.__nonce() - param.update({ - 'key' : self.__api_key, - 'signature' : self.__signature(), - 'nonce' : self.__nonce_v}) - answer = self.__post(url, param); ##Post Request - return json.loads(answer) ## generate dict and return - - def ticker(self, couple = 'GHS/BTC'): - return self.api_call('ticker', {}, 0, couple) - - def order_book(self, couple = 'GHS/BTC'): - return self.api_call('order_book', {}, 0, couple) - - def trade_history(self, since = 1, couple = 'GHS/BTC'): - return self.api_call('trade_history',{"since" : str(since)}, 0, couple) - - def balance(self): - return self.api_call('balance', {}, 1) - - def current_orders(self, couple = 'GHS/BTC'): - return self.api_call('open_orders',{},1,couple) - - def cancel_order(self, order_id): - return self.api_call('cancel_order', {"id" : order_id},1) - - def place_order(self, ptype = 'buy', amount = 1, price = 1, couple = 'GHS/BTC'): - return self.api_call('place_order', {"type" : ptype, "amount" : str(amount), "price" : str(price)},1,couple) + + __username = '' + __api_key = '' + __api_secret = '' + __nonce_v = '' + + # Init class + def __init__(self, username, api_key, api_secret): + self.__username = username + self.__api_key = api_key + self.__api_secret = api_secret + + # get timestamp as nonce + def __nonce(self): + self.__nonce_v = '{:.10f}'.format(time.time()*1000).split('.')[0] + + # generate segnature + def __signature(self): + string = self.__nonce_v + self.__username + self.__api_key ##create string + signature = hmac.new(self.__api_secret, string, digestmod=hashlib.sha256).hexdigest().upper() ##create signature + return signature + + def __post(self, url, param): ##Post Request (Low Level API call) + params = urllib.urlencode(param) + req = urllib2.Request(url, params, {'User-agent': 'bot-cex.io-'+self.__username}) + page = urllib2.urlopen(req).read() + return page; + + def api_call(self, method, param = {}, private = 0, couple = '', trailing_slash = 1): ## api call (Middle level) + if trailing_slash == 1: + url = 'https://cex.io/api/'+method+'/' ##generate url + else: + url = 'https://cex.io/api/'+method ##generate url + + if couple != '': + url = url + couple + '/' ##set couple if needed + if private == 1: ##add auth-data if needed + self.__nonce() + param.update({ + 'key' : self.__api_key, + 'signature' : self.__signature(), + 'nonce' : self.__nonce_v}) + answer = self.__post(url, param); ##Post Request + return json.loads(answer) ## generate dict and return + + def ticker(self, couple = 'GHS/BTC'): + return self.api_call('ticker', {}, 0, couple) + + def order_book(self, couple = 'GHS/BTC'): + return self.api_call('order_book', {}, 0, couple) + + def trade_history(self, since = 1, couple = 'GHS/BTC'): + return self.api_call('trade_history',{"since" : str(since)}, 0, couple) + + def balance(self): + return self.api_call('balance', {}, 1) + + def current_orders(self, couple = 'GHS/BTC'): + return self.api_call('open_orders',{},1,couple) + + def cancel_order(self, order_id): + return self.api_call('cancel_order', {"id" : order_id},1) + + def place_order(self, ptype = 'buy', amount = 1, price = 1, couple = 'GHS/BTC'): + return self.api_call('place_order', {"type" : ptype, "amount" : str(amount), "price" : str(price)},1,couple) + + def hashrate(self): + return self.api_call('ghash.io/hashrate', {}, 1, '', 0) + + def workers(self): + return self.api_call('ghash.io/workers', {}, 1, '', 0) diff --git a/test.py b/test.py index 60886a7..a204b1d 100644 --- a/test.py +++ b/test.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- import cexapi demo = cexapi.api(username, api_key, api_secret) @@ -26,3 +25,7 @@ print demo.place_order('buy',1,0.1) ## or ('buy',1,0.1,'GHS/BTC') print "Open orders sell 1BF1/1.5BTC" print demo.place_order('sell',1,1.5,'BF1/BTC') +print "Hashrate" +print demo.hashrate() +print "Workers" +print demo.workers()