Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make API key header configurable #216

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
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
11 changes: 9 additions & 2 deletions ckanapi/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,16 @@ def prepare_action(action, data_dict=None, apikey=None, files=None,
else:
data_dict = json.dumps(data_dict).encode('ascii')
headers['Content-Type'] = 'application/json'
if apikey:
if apikey is not None:
apikey_header = 'X-CKAN-API-Key'
if isinstance(apikey, dict):
error_msg = "Provided apikey dict must have 'apikey' key."
assert 'apikey' in apikey, error_msg
apikey_header = apikey.get('header', apikey_header)
apikey = apikey.get('apikey')

apikey = str(apikey)
headers['X-CKAN-API-Key'] = apikey
headers[apikey_header] = apikey
headers['Authorization'] = apikey
url = base_url + action
return url, data_dict, headers
Expand Down
4 changes: 3 additions & 1 deletion ckanapi/remoteckan.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@ class RemoteCKAN(object):
:param address: the web address of the CKAN instance, e.g.
'http://demo.ckan.org', stored as self.address
:param apikey: the API key to pass as an 'X-CKAN-API-Key' header
when actions are called, stored as self.apikey
when actions are called, stored as self.apikey.
If a dictionary is passed, you may provide an 'apikey'
and 'header' key to specify the key and header name
:param user_agent: the User-agent to report when making requests
:param get_only: only use GET requests (default: False)
:param session: session to use (default: None)
Expand Down
4 changes: 3 additions & 1 deletion ckanapi/testappckan.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ class TestAppCKAN(object):
:param test_app: the paste.fixture.TestApp instance, stored as
self.test_app
:param apikey: the API key to pass as an 'X-CKAN-API-Key' header
when actions are called, stored as self.apikey
when actions are called, stored as self.apikey.
If a dictionary is passed, you may provide an 'apikey'
and 'header' key to specify the key and header name
"""
def __init__(self, test_app, apikey=None):
self.test_app = test_app
Expand Down
Loading