Skip to content

Commit d54dbf6

Browse files
Samuel ScullySamuel Scully
authored andcommitted
Allow API key to be set by env var
1 parent 6192aa9 commit d54dbf6

File tree

3 files changed

+31
-10
lines changed

3 files changed

+31
-10
lines changed

opencage/geocoder.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,12 @@ class OpenCageGeocode:
131131

132132
session = None
133133

134-
def __init__(self, key, protocol='https', domain=DEFAULT_DOMAIN, sslcontext=None, user_agent_comment=None):
134+
def __init__(self, key=None, protocol='https', domain=DEFAULT_DOMAIN, sslcontext=None, user_agent_comment=None):
135135
"""Constructor."""
136-
self.key = key
136+
self.key = key if key is not None else os.environ.get('OPENCAGE_API_KEY')
137+
138+
if self.key is None:
139+
raise ValueError("API key not provided. Either pass a 'key' parameter or set the OPENCAGE_API_KEY environment variable.")
137140

138141
if protocol and protocol not in ('http', 'https'):
139142
protocol = 'https'

test/test_geocoder_args.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# encoding: utf-8
2+
3+
from opencage.geocoder import OpenCageGeocode
4+
5+
import os
6+
7+
8+
def test_protocol_http():
9+
"""Test that HTTP protocol can be set correctly"""
10+
geocoder = OpenCageGeocode('abcde', protocol='http')
11+
assert geocoder.url == 'http://api.opencagedata.com/geocode/v1/json'
12+
13+
14+
def test_api_key_env_var():
15+
"""Test that API key can be set by an environment variable"""
16+
17+
os.environ['OPENCAGE_API_KEY'] = 'from-env-var'
18+
geocoder = OpenCageGeocode()
19+
assert geocoder.key == 'from-env-var'
20+
21+
22+
def test_custom_domain():
23+
"""Test that custom domain can be set"""
24+
geocoder = OpenCageGeocode('abcde', domain='example.com')
25+
assert geocoder.url == 'https://example.com/geocode/v1/json'
26+

test/test_setting_protocol.py

Lines changed: 0 additions & 8 deletions
This file was deleted.

0 commit comments

Comments
 (0)