Skip to content

Commit e18333e

Browse files
committed
Small code reorganization
1 parent 5f196fd commit e18333e

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

influxdb/client.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
from __future__ import print_function
77
from __future__ import unicode_literals
88

9-
import time
10-
import random
11-
12-
import json
13-
import struct
149
import datetime
10+
import json
11+
import random
1512
import socket
13+
import struct
14+
import time
15+
1616
import msgpack
1717
import requests
1818
import requests.exceptions
@@ -281,10 +281,16 @@ def request(self, url, method='GET', params=None, data=None,
281281
if not retry:
282282
raise
283283

284+
content_type = response.headers and response.headers.get("Content-Type")
285+
if content_type == "application/x-msgpack" and response.content:
286+
response._msgpack = msgpack.unpackb(
287+
packed=response.content,
288+
ext_hook=_msgpack_parse_hook,
289+
raw=False)
290+
284291
def reformat_error(response):
285-
err = self._parse_msgpack(response)
286-
if err:
287-
return json.dumps(err, separators=(',', ':'))
292+
if response._msgpack:
293+
return json.dumps(response._msgpack, separators=(',', ':'))
288294
else:
289295
return response.content
290296

@@ -354,21 +360,6 @@ def _read_chunked_response(response, raise_errors=True):
354360
_key, []).extend(result[_key])
355361
return ResultSet(result_set, raise_errors=raise_errors)
356362

357-
@staticmethod
358-
def _parse_msgpack(response):
359-
"""Return the decoded response if it is encoded as msgpack."""
360-
def hook(code, data):
361-
if code == 5:
362-
(epoch_s, epoch_ns) = struct.unpack(">QI", data)
363-
time = datetime.datetime.utcfromtimestamp(epoch_s)
364-
time += datetime.timedelta(microseconds=(epoch_ns / 1000))
365-
return time.isoformat() + 'Z'
366-
return msgpack.ExtType(code, data)
367-
368-
headers = response.headers
369-
if headers and headers["Content-Type"] == "application/x-msgpack":
370-
return msgpack.unpackb(response.content, ext_hook=hook, raw=False)
371-
372363
def query(self,
373364
query,
374365
params=None,
@@ -461,7 +452,7 @@ def query(self,
461452
expected_response_code=expected_response_code
462453
)
463454

464-
data = self._parse_msgpack(response)
455+
data = getattr(response, '_msgpack', None)
465456
if not data:
466457
if chunked:
467458
return self._read_chunked_response(response)
@@ -1131,3 +1122,12 @@ def _parse_netloc(netloc):
11311122
'password': info.password or None,
11321123
'host': info.hostname or 'localhost',
11331124
'port': info.port or 8086}
1125+
1126+
1127+
def _msgpack_parse_hook(code, data):
1128+
if code == 5:
1129+
(epoch_s, epoch_ns) = struct.unpack(">QI", data)
1130+
timestamp = datetime.datetime.utcfromtimestamp(epoch_s)
1131+
timestamp += datetime.timedelta(microseconds=(epoch_ns / 1000))
1132+
return timestamp.isoformat() + 'Z'
1133+
return msgpack.ExtType(code, data)

0 commit comments

Comments
 (0)