Skip to content

Commit f4264d0

Browse files
authored
Merge pull request #71 from AbnerErnaniADSFatec/master
Add 'x-api-key' to pass access token and remove params in request #69 #70
2 parents b92de73 + 5a82178 commit f4264d0

File tree

2 files changed

+53
-35
lines changed

2 files changed

+53
-35
lines changed

lccs/lccs.py

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -42,20 +42,20 @@ def __init__(self, url, validate=False, access_token=None, language=None):
4242
self._url = url.rstrip('/')
4343
self._validate = validate
4444
self._classification_systems = {}
45-
self._access_token = f'?access_token={access_token}' if access_token else ''
45+
self._access_token = access_token if access_token else ''
4646
self._support_l = self._support_language()
4747
self._language = self._validate_language(language) if language else ''
4848

4949
def _support_language(self):
5050
"""Get the support language from service."""
5151
import enum
52-
data = Utils._get(f'{self._url}/')
52+
data = Utils._get(f'{self._url}/', access_token=self._access_token)
5353
return enum.Enum('Language', {i['language']: i['language'] for i in data['supported_language']}, type=str)
5454

5555
def _validate_language(self, language):
5656
"""Get the support language from service."""
5757
if language in [e.value for e in self._support_l]:
58-
return f'&language={language}'
58+
return f'?language={language}'
5959
else:
6060
s = ', '.join([e for e in self.allowed_language])
6161
raise KeyError(f'Language not supported! Use: {s}')
@@ -67,8 +67,8 @@ def _get_format_identifier(self, name):
6767

6868
def _get_classification_systems(self):
6969
"""Return the Classification Systems available in service."""
70-
url = f'{self._url}/classification_systems{self._access_token}{self._language}'
71-
data = Utils._get(url)
70+
url = f'{self._url}/classification_systems{self._language}'
71+
data = Utils._get(url, access_token=self._access_token)
7272
result = list()
7373

7474
[result.append(i['identifier']) for i in data]
@@ -110,8 +110,8 @@ def classification_system(self, system: str) -> ClassificationSystem:
110110
:rtype: dict
111111
"""
112112
try:
113-
url = f'{self._url}/classification_systems/{system}{self._access_token}{self._language}'
114-
data = Utils._get(url)
113+
url = f'{self._url}/classification_systems/{system}{self._language}'
114+
data = Utils._get(url, access_token=self._access_token)
115115
return ClassificationSystem(data, self._validate)
116116
except Exception:
117117
raise KeyError(f'Could not retrieve information for classification_system: {system}')
@@ -129,7 +129,7 @@ def available_mappings(self, system_source: str) -> list:
129129
result = list()
130130

131131
try:
132-
data = Utils._get(f'{self._url}/mappings/{system_source}{self._access_token}{self._language}')
132+
data = Utils._get(f'{self._url}/mappings/{system_source}{self._language}', access_token=self._access_token)
133133
except Exception:
134134
raise KeyError(f'Could not retrieve any available mapping for {system_source}')
135135

@@ -153,7 +153,7 @@ def mappings(self, system_source: str, system_target: str) -> MappingGroup:
153153
:rtype: list
154154
"""
155155
try:
156-
data = Utils._get(f'{self._url}/mappings/{system_source}/{system_target}{self._access_token}')
156+
data = Utils._get(f'{self._url}/mappings/{system_source}/{system_target}', access_token=self._access_token)
157157
except Exception:
158158
raise KeyError(f'Could not retrieve mappings for {system_source} and {system_target}')
159159

@@ -171,14 +171,14 @@ def available_style_formats(self) -> list:
171171
result = list()
172172

173173
try:
174-
data = Utils._get(f'{self._url}/style_formats{self._access_token}')
174+
data = Utils._get(f'{self._url}/style_formats', access_token=self._access_token)
175175
except Exception:
176176
raise KeyError('Could not retrieve any style format')
177177

178178
for i in data:
179179
for links in i['links']:
180180
if links['rel'] == 'items':
181-
data = Utils._get(f"{links['href']}")
181+
data = Utils._get(f"{links['href']}", access_token=self._access_token)
182182
result.append(StyleFormats(data))
183183

184184
return result
@@ -195,12 +195,12 @@ def style_formats(self, system) -> List[StyleFormats]:
195195
"""
196196
result = list()
197197
try:
198-
data = Utils._get(f'{self._url}/classification_systems/{system}/style_formats{self._access_token}')
198+
data = Utils._get(f'{self._url}/classification_systems/{system}/style_formats', access_token=self._access_token)
199199
except Exception:
200200
raise KeyError(f'Could not retrieve any style format for {system}')
201201
for i in data:
202202
if i['rel'] == 'style':
203-
data = Utils._get(f'{self._url}/style_formats/{i["href"].split("/")[-1]}')
203+
data = Utils._get(f'{self._url}/style_formats/{i["href"].split("/")[-1]}', access_token=self._access_token)
204204
result.append(StyleFormats(data))
205205

206206
return result
@@ -222,7 +222,7 @@ def get_style(self, system, style_format, path=None):
222222
:rtype: File
223223
"""
224224
try:
225-
file_name, data = Utils._get(f'{self._url}/classification_systems/{system}/styles/{style_format}{self._access_token}')
225+
file_name, data = Utils._get(f'{self._url}/classification_systems/{system}/styles/{style_format}', access_token=self._access_token)
226226
except Exception:
227227
raise KeyError(f'Could not retrieve any style for {system}')
228228

@@ -234,7 +234,7 @@ def get_style(self, system, style_format, path=None):
234234
def add_classification_system(self, name: str, authority_name: str, description: dict, title: dict,
235235
version: str) -> dict:
236236
"""Add a new classification system."""
237-
url = f'{self._url}/classification_systems{self._access_token}'
237+
url = f'{self._url}/classification_systems'
238238

239239
data = dict()
240240
data["name"] = name
@@ -244,22 +244,22 @@ def add_classification_system(self, name: str, authority_name: str, description:
244244
data["title"] = title
245245

246246
try:
247-
retval = Utils._post(url, json=data)
247+
retval = Utils._post(url, access_token=self._access_token, json=data)
248248
except RuntimeError as e:
249249
raise ValueError(f'Could not insert classification system {name}!')
250250

251251
return retval
252252

253253
def add_classes(self, system: str, classes: str) -> List[dict]:
254254
"""Add new classes to an classification system."""
255-
url = f'{self._url}/classification_systems/{system}/classes{self._access_token}'
255+
url = f'{self._url}/classification_systems/{system}/classes'
256256

257257
if type(classes) == str:
258258
with open(classes) as file:
259259
classes = json.load(file)
260260

261261
try:
262-
retval = Utils._post(url, json=classes)
262+
retval = Utils._post(url, access_token=self._access_token, json=classes)
263263
except RuntimeError:
264264
raise ValueError('Could not insert classes!')
265265

@@ -268,7 +268,7 @@ def add_classes(self, system: str, classes: str) -> List[dict]:
268268
def add_style(self, system: str, style_format: str, style_path: str = None, style_tex: str = None,
269269
style_name: str = None, style_extension: str = None) -> List[dict]:
270270
"""Add a new style to a system."""
271-
url = f'{self._url}/classification_systems/{system}/styles{self._access_token}'
271+
url = f'{self._url}/classification_systems/{system}/styles'
272272

273273
if style_path:
274274
try:
@@ -283,34 +283,34 @@ def add_style(self, system: str, style_format: str, style_path: str = None, styl
283283
data = dict(style_format=style_format)
284284

285285
try:
286-
retval = Utils._post(url, data=data, files=style)
286+
retval = Utils._post(url, access_token=self._access_token, data=data, files=style)
287287
except RuntimeError:
288288
raise ValueError('Could not insert style!')
289289

290290
return retval
291291

292292
def add_mapping(self, system_source: str, system_target: str, mappings) -> list:
293293
"""Add new classification system mapping."""
294-
url = f'{self._url}/mappings/{system_source}/{system_target}{self._access_token}'
294+
url = f'{self._url}/mappings/{system_source}/{system_target}'
295295

296296
if type(mappings) == str:
297297
with open(mappings) as file:
298298
mappings = json.load(file)
299299
try:
300-
retval = Utils._post(url, json=mappings)
300+
retval = Utils._post(url, access_token=self._access_token, json=mappings)
301301
except RuntimeError:
302302
raise ValueError('Could not insert mappings!')
303303

304304
return retval
305305

306306
def add_style_format(self, name: str) -> dict:
307307
"""Add a new style format."""
308-
url = f'{self._url}/style_formats{self._access_token}'
308+
url = f'{self._url}/style_formats'
309309

310310
data = {"name": name}
311311

312312
try:
313-
retval = Utils._post(url, json=data)
313+
retval = Utils._post(url, access_token=self._access_token, json=data)
314314
except RuntimeError:
315315
raise ValueError(f'Could not insert style format {name}!')
316316

@@ -319,7 +319,7 @@ def add_style_format(self, name: str) -> dict:
319319
def delete_classification_system(self, system: str) -> int:
320320
"""Delete a specific classification system."""
321321
try:
322-
retval = Utils._delete(f'{self._url}/classification_systems/{system}{self._access_token}')
322+
retval = Utils._delete(f'{self._url}/classification_systems/{system}', access_token=self._access_token)
323323
except RuntimeError:
324324
raise ValueError(f'Could not remove classification system {system}!')
325325

@@ -328,7 +328,7 @@ def delete_classification_system(self, system: str) -> int:
328328
def delete_class(self, system: str, class_name_or_id: str) -> int:
329329
"""Delete a specific class."""
330330
try:
331-
retval = Utils._delete(f'{self._url}/classification_systems/{system}/classes/{class_name_or_id}{self._access_token}')
331+
retval = Utils._delete(f'{self._url}/classification_systems/{system}/classes/{class_name_or_id}', access_token=self._access_token)
332332
except RuntimeError:
333333
raise ValueError(f'Could not remove class {class_name_or_id} of classification system {system}!')
334334

@@ -337,7 +337,7 @@ def delete_class(self, system: str, class_name_or_id: str) -> int:
337337
def delete_style_format(self, style_format: str) -> int:
338338
"""Delete a specific style format."""
339339
try:
340-
retval = Utils._delete(f'{self._url}/style_formats/{style_format}{self._access_token}')
340+
retval = Utils._delete(f'{self._url}/style_formats/{style_format}', access_token=self._access_token)
341341
except RuntimeError:
342342
raise ValueError(f'Could not remove style format {style_format} !')
343343

@@ -346,7 +346,7 @@ def delete_style_format(self, style_format: str) -> int:
346346
def delete_style(self, system: str, style_format: str) -> int:
347347
"""Delete the style of a classification system."""
348348
try:
349-
retval = Utils._delete(f'{self._url}/classification_systems/{system}/styles/{style_format}{self._access_token}')
349+
retval = Utils._delete(f'{self._url}/classification_systems/{system}/styles/{style_format}', access_token=self._access_token)
350350
except RuntimeError:
351351
raise ValueError(f'Could not remove style {style_format} of classification system {system}!')
352352

@@ -355,7 +355,7 @@ def delete_style(self, system: str, style_format: str) -> int:
355355
def delete_mapping(self, system_source: str, system_target: str) -> int:
356356
"""Delete the mapping."""
357357
try:
358-
retval = Utils._delete(f'{self._url}/mappings/{system_source}/{system_target}{self._access_token}')
358+
retval = Utils._delete(f'{self._url}/mappings/{system_source}/{system_target}', access_token=self._access_token)
359359
except RuntimeError:
360360
raise ValueError(f'Could not remove mapping of {system_source} and {system_target}!')
361361

lccs/utils.py

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class Utils:
3232
"""Utils class."""
3333

3434
@staticmethod
35-
def _get(url, params=None):
35+
def _get(url, access_token=None, params=None):
3636
"""Query the LCCS-WS using HTTP GET verb and return the result as a JSON document.
3737
3838
:param url: The URL to query must be a valid LCCS-WS endpoint.
@@ -45,7 +45,13 @@ def _get(url, params=None):
4545
:rtype: dict
4646
:raises ValueError: If the response body does not contain a valid json.
4747
"""
48-
response = requests.get(url, params=params)
48+
_headers = {}
49+
if access_token != None:
50+
_headers = {
51+
"x-api-key": access_token
52+
}
53+
54+
response = requests.get(url, params=params, headers=_headers)
4955

5056
response.raise_for_status()
5157

@@ -68,18 +74,30 @@ def _get(url, params=None):
6874
return response.json()
6975

7076
@staticmethod
71-
def _post(url, data=None, json=None, files=None):
77+
def _post(url, access_token, data=None, json=None, files=None):
7278
"""Request post method."""
73-
response = requests.post(url, data=data, files=files, json=json)
79+
_headers = {}
80+
if access_token != None:
81+
_headers = {
82+
"x-api-key": access_token
83+
}
84+
85+
response = requests.post(url, headers=_headers, data=data, files=files, json=json)
7486

7587
response.raise_for_status()
7688

7789
return response.json()
7890

7991
@staticmethod
80-
def _delete(url, params=None):
92+
def _delete(url, access_token, params=None):
8193
"""Request delete method."""
82-
response = requests.delete(url, params=params)
94+
_headers = {}
95+
if access_token != None:
96+
_headers = {
97+
"x-api-key": access_token
98+
}
99+
100+
response = requests.delete(url, params=params, headers=_headers)
83101

84102
response.raise_for_status()
85103

0 commit comments

Comments
 (0)