Skip to content

Commit

Permalink
Force the use of TLSv1.2, soon to be required for all MyGeotab servers (
Browse files Browse the repository at this point in the history
  • Loading branch information
aaront committed Feb 9, 2016
1 parent fddd474 commit 3931b79
Showing 1 changed file with 20 additions and 9 deletions.
29 changes: 20 additions & 9 deletions mygeotab/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@
from urllib.parse import urlparse
except ImportError:
from urlparse import urlparse

import json
import re
import ssl

import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager

import mygeotab.serializers

Expand Down Expand Up @@ -121,14 +123,14 @@ def _query(self, method, parameters):
"""
params = dict(id=-1, method=method, params=parameters)
headers = {'Content-type': 'application/json; charset=UTF-8'}
r = requests.post(self._api_url,
data=json.dumps(params,
default=mygeotab.serializers.object_serializer),
headers=headers, allow_redirects=True, verify=(not self._is_local))
try:
return self._process(r.json(object_hook=mygeotab.serializers.object_deserializer))
finally:
r.close()
is_live = not any(s in self._api_url for s in ['127.0.0.1', 'localhost'])
with requests.Session() as s:
s.mount('https://', GeotabHTTPAdapter())
r = s.post(self._api_url,
data=json.dumps(params,
default=mygeotab.serializers.object_serializer),
headers=headers, allow_redirects=True, verify=(not self._is_local))
return self._process(r.json(object_hook=mygeotab.serializers.object_deserializer))

def call(self, method, **parameters):
"""
Expand Down Expand Up @@ -329,4 +331,13 @@ def __str__(self):
self.database)


class GeotabHTTPAdapter(HTTPAdapter):
def init_poolmanager(self, connections, maxsize, block=False, **pool_kwargs):
self.poolmanager = PoolManager(num_pools=connections,
maxsize=maxsize,
block=block,
ssl_version=ssl.PROTOCOL_TLSv1_2,
**pool_kwargs)


__all__ = ['API', 'Credentials', 'MyGeotabException', 'AuthenticationException']

0 comments on commit 3931b79

Please sign in to comment.