diff --git a/WooCommerceClient.py b/WooCommerceClient.py old mode 100644 new mode 100755 index 5fc45a2..2eda883 --- a/WooCommerceClient.py +++ b/WooCommerceClient.py @@ -29,9 +29,10 @@ class WooAuthError(Exception): pass class WooCommerceClient(object): - def __init__(self, consumer_key, consumer_secret, store_url): + def __init__(self, consumer_key, consumer_secret, store_url, oauth_enabled=True): self.ConsumerKey = consumer_key self.ConsumerSecret = consumer_secret + self.oauth_enabled = oauth_enabled # Make sure there is a trailing slash if store_url[-1] != '/': @@ -70,7 +71,7 @@ def get_orders(self, params = {}): return self._do_request('orders', params) def get_order(self, id): - return self._do_request('order/' + str(id)) + return self._do_request('orders/' + str(id)) def get_orders_count(self): return self._do_request('orders/count') @@ -194,25 +195,24 @@ def _do_request(self, endpoint, params = {}, method = 'GET'): parameters = params parameter_string = '' - # TODO: If wanting to support HTTP Auth, do it here, skip OAuth stuff + if self.oauth_enabled: + parameters['oauth_consumer_key'] = self.ConsumerKey + parameters['oauth_timestamp'] = int(time.time()) + parameters['oauth_nonce'] = ''.join([str(random.randint(0, 9)) for i in range(8)]) + parameters['oauth_signature_method'] = 'HMAC-SHA256' + parameters['oauth_signature'] = self.generate_oauth_sig(parameters, method, endpoint) - parameters['oauth_consumer_key'] = self.ConsumerKey - parameters['oauth_timestamp'] = int(time.time()) - parameters['oauth_nonce'] = ''.join([str(random.randint(0, 9)) for i in range(8)]) - parameters['oauth_signature_method'] = 'HMAC-SHA256' - parameters['oauth_signature'] = self.generate_oauth_sig(parameters, method, endpoint) - - if len(parameters) > 0: - parameter_string = '?' + urllib.urlencode(parameters) + if len(parameters) > 0: + parameter_string = '?' + urllib.urlencode(parameters) + else: + parameter_string = '?consumer_key={0}&consumer_secret={1}'.format(self.ConsumerKey, self.ConsumerSecret) - if method == "POST": - print('POST METHOD NOT IMPLEMENTED YET') - elif method == "DELETE": + if method == "DELETE": print('DELETE METHOD NOT IMPLEMENTED YET') else: # GET try: request = Request(self.StoreURL + endpoint + parameter_string) - response_body = urlopen(request).read() + response_body = urlopen(request, parameters).read() if method == "POST" else urlopen(request).read() return json.loads(response_body) except HTTPError as e: diff --git a/test/test.py b/test/test.py index ea3a019..5611a9c 100644 --- a/test/test.py +++ b/test/test.py @@ -3,5 +3,5 @@ from WooCommerceClient import WooCommerceClient import pprint -wc_client = WooCommerceClient('ck_5e5692af317c09ca4581be6bc5596714', 'cs_3115cf0868e4ae29117257e13cec6248', 'http://wpdev/') +wc_client = WooCommerceClient('ck_5e5692af317c09ca4581be6bc5596714', 'cs_3115cf0868e4ae29117257e13cec6248', 'http://wpdev/', oauth_enabled=False) pprint.pprint(wc_client.get_products()) \ No newline at end of file