Skip to content

Commit 3510aea

Browse files
authored
Merge pull request bryanyang0528#2 from bryanyang0528/master
Sync
2 parents 63b63c5 + 81e0886 commit 3510aea

File tree

4 files changed

+18
-11
lines changed

4 files changed

+18
-11
lines changed

ksql/api.py

+15-8
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@
66
import logging
77
import requests
88
import urllib
9+
from copy import deepcopy
910
from requests import Timeout
1011

1112
from ksql.builder import SQLBuilder
12-
from ksql.errors import CreateError, KSQLError, InvalidQueryError
13+
from ksql.errors import CreateError, InvalidQueryError, KSQLError
1314

1415

1516
class BaseAPI(object):
@@ -20,6 +21,9 @@ def __init__(self, url, **kwargs):
2021
self.timeout = kwargs.get("timeout", 15)
2122
self.api_key = kwargs.get("api_key")
2223
self.secret = kwargs.get("secret")
24+
self.headers = {
25+
'Content-Type': 'application/vnd.ksql.v1+json; charset=utf-8',
26+
}
2327

2428
def get_timout(self):
2529
return self.timeout
@@ -86,7 +90,8 @@ def query(self, query_string, encoding="utf-8", chunk_size=128, stream_propertie
8690
raise ValueError("Return code is {}.".format(streaming_response.status_code))
8791

8892
def get_request(self, endpoint):
89-
return requests.get(endpoint, auth=(self.api_key, self.secret))
93+
auth = (self.api_key, self.secret) if self.api_key or self.secret else None
94+
return requests.get(endpoint, headers=self.headers, auth=auth)
9095

9196
def _request(self, endpoint, method="POST", sql_string="", stream_properties=None, encoding="utf-8"):
9297
url = "{}/{}".format(self.url, endpoint)
@@ -97,22 +102,24 @@ def _request(self, endpoint, method="POST", sql_string="", stream_properties=Non
97102
body = {"ksql": sql_string}
98103
if stream_properties:
99104
body["streamsProperties"] = stream_properties
105+
else:
106+
body["streamsProperties"] = {}
100107
data = json.dumps(body).encode(encoding)
101108

102-
headers = {"Accept": "application/json", "Content-Type": "application/json"}
109+
headers = deepcopy(self.headers)
103110
if self.api_key and self.secret:
104-
base64string = base64.b64encode(bytes("{}:{}".format(self.api_key, self.secret), "utf-8"))
105-
headers["Authorization"] = "Basic {}" % base64string
111+
base64string = base64.b64encode(bytes("{}:{}".format(self.api_key, self.secret), "utf-8")).decode("utf-8")
112+
headers["Authorization"] = "Basic %s" % base64string
106113

107114
req = urllib.request.Request(url=url, data=data, headers=headers, method=method.upper())
108115

109116
try:
110117
r = urllib.request.urlopen(req, timeout=self.timeout)
111-
except urllib.error.HTTPError as e:
118+
except urllib.error.HTTPError as http_error:
112119
try:
113-
content = json.loads(e.read().decode(encoding))
120+
content = json.loads(http_error.read().decode(encoding))
114121
except Exception as e:
115-
raise ValueError(e)
122+
raise http_error
116123
else:
117124
logging.debug("content: {}".format(content))
118125
raise KSQLError(e=content.get("message"), error_code=content.get("error_code"))

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def get_install_requirements(path):
2121
]
2222

2323
# Get version from __init__.py file
24-
VERSION = "0.10.1.0"
24+
VERSION = "0.10.1.1"
2525

2626
here = os.path.dirname(__file__)
2727

tests/test_client.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def test_get_url(self):
3333

3434
def test_with_timeout(self):
3535
api_client = KSQLAPI(url=self.url, timeout=10, check_version=False)
36-
self.assertEquals(api_client.timeout, 10)
36+
self.assertEqual(api_client.timeout, 10)
3737

3838
@vcr.use_cassette("tests/vcr_cassettes/healthcheck.yml")
3939
def test_ksql_server_healthcheck(self):

tests/unit-tests/test_api.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ def test_base_api_query(self):
1111
responses.add(responses.POST, "http://dummy.org/query", body="test", status=200, stream=True)
1212
base = BaseAPI("http://dummy.org")
1313
result = base.query("so")
14-
with self.assertRaises(ValueError):
14+
with self.assertRaises(urllib.error.HTTPError):
1515
for entry in result:
1616
entry

0 commit comments

Comments
 (0)