diff --git a/coinbase/CoinbaseRPC.py b/coinbase/CoinbaseRPC.py index 42b13d8..98a48fe 100644 --- a/coinbase/CoinbaseRPC.py +++ b/coinbase/CoinbaseRPC.py @@ -15,6 +15,8 @@ import time import urllib.parse +from datetime import datetime, timedelta + # ----- Public Classes -------------------------------------------------------- class CoinbaseRPC(object): @@ -26,16 +28,20 @@ class CoinbaseRPC(object): def __init__(self, authentication, nonce=None): self.__authentication = authentication - self.__nonce = None + self.__nonce = nonce def request(self, method, url, params=None): - url = self.COINBASE_API + url + now = datetime.now() + expire = now + timedelta(minutes=15) + expire_int = int(expire.timestamp()) + + url = self.COINBASE_API + url + "?expire=" + str(expire_int) method = method.lower() if method == 'get' or method == 'delete': if params is not None: - url += '?' + urllib.parse.urlencode(params) + url += '&' + urllib.parse.urlencode(params) else: params = json.dumps(params) @@ -51,7 +57,9 @@ def request(self, method, url, params=None): elif isinstance(self.__authentication, CoinbaseAPIKeyAuthentication): if self.__nonce is None: self.__nonce = int(time.time() * 1e6) - message = str(self.__nonce) + url + else: + self.__nonce += 1 + message = url if method == 'post' or method == 'put': if params is not None: @@ -66,7 +74,7 @@ def request(self, method, url, params=None): headers['ACCESS_KEY'] = auth['api_key'] headers['ACCESS_SIGNATURE'] = signature - headers['ACCESS_NONCE'] = self.__nonce +# headers['ACCESS_NONCE'] = self.__nonce headers['Accept'] = 'application/json' else: raise CoinbaseAPIException('Invalid authentication mechanism') diff --git a/coinbase/__init__.py b/coinbase/__init__.py index 17f89e9..f912e45 100644 --- a/coinbase/__init__.py +++ b/coinbase/__init__.py @@ -66,7 +66,7 @@ def create_button(self, name, price, currency, custom=None, options=None): params['custom'] = custom if options is not None: - for key, value in operation.items(): + for key, value in options.items(): params[key] = value return self.create_button_with_options(params) @@ -82,7 +82,7 @@ def create_button_with_options(self, options=None): 'button': response['button'], 'embed_html': '
', 'success': True }