Skip to content
This repository was archived by the owner on Apr 15, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions consul/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -231,13 +231,14 @@ def cb(response):

class HTTPClient(six.with_metaclass(abc.ABCMeta, object)):
def __init__(self, host='127.0.0.1', port=8500, scheme='http',
verify=True, cert=None):
verify=True, cert=None, headers=None):
self.host = host
self.port = port
self.scheme = scheme
self.verify = verify
self.base_uri = '%s://%s:%s' % (self.scheme, self.host, self.port)
self.cert = cert
self.headers = headers or dict()

def uri(self, path, params=None):
uri = self.base_uri + urllib.parse.quote(path, safe='/:')
Expand Down Expand Up @@ -307,8 +308,8 @@ def __init__(
if os.getenv('CONSUL_HTTP_SSL_VERIFY') is not None:
verify = os.getenv('CONSUL_HTTP_SSL_VERIFY') == 'true'

self.http = self.connect(host, port, scheme, verify, cert)
self.token = os.getenv('CONSUL_HTTP_TOKEN', token)
self.http = self.connect(host, port, scheme, verify, cert, self.token)
self.scheme = scheme
self.dc = dc
assert consistency in ('default', 'consistent', 'stale'), \
Expand Down
15 changes: 9 additions & 6 deletions consul/std.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,26 +19,29 @@ def response(self, response):
def get(self, callback, path, params=None):
uri = self.uri(path, params)
return callback(self.response(
self.session.get(uri, verify=self.verify, cert=self.cert)))
self.session.get(uri, verify=self.verify, cert=self.cert, headers=self.headers)))

def put(self, callback, path, params=None, data=''):
uri = self.uri(path, params)
return callback(self.response(
self.session.put(uri, data=data, verify=self.verify,
cert=self.cert)))
cert=self.cert, headers=self.headers)))

def delete(self, callback, path, params=None):
uri = self.uri(path, params)
return callback(self.response(
self.session.delete(uri, verify=self.verify, cert=self.cert)))
self.session.delete(uri, verify=self.verify, cert=self.cert, headers=self.headers)))

def post(self, callback, path, params=None, data=''):
uri = self.uri(path, params)
return callback(self.response(
self.session.post(uri, data=data, verify=self.verify,
cert=self.cert)))
cert=self.cert, headers=self.headers)))


class Consul(base.Consul):
def connect(self, host, port, scheme, verify=True, cert=None):
return HTTPClient(host, port, scheme, verify, cert)
def connect(self, host, port, scheme, verify=True, cert=None, token=None):
headers = dict()
if token is not None:
headers['X-Consul-Token'] = token
return HTTPClient(host, port, scheme, verify, cert, headers)
9 changes: 6 additions & 3 deletions tests/test_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

class HTTPClient(object):
def __init__(self, host=None, port=None, scheme=None,
verify=True, cert=None):
verify=True, cert=None, headers=None):
pass

def get(self, callback, path, params=None):
Expand All @@ -25,8 +25,11 @@ def delete(self, callback, path, params=None):


class Consul(consul.base.Consul):
def connect(self, host, port, scheme, verify=True, cert=None):
return HTTPClient(host, port, scheme, verify=verify, cert=None)
def connect(self, host, port, scheme, verify=True, cert=None, token=None):
headers = dict()
if token is not None:
headers['X-Consul-Token'] = token
return HTTPClient(host, port, scheme, verify=verify, cert=None, headers=headers)


def _should_support(c):
Expand Down