Left: | ||
Right: |
OLD | NEW |
---|---|
1 # This file is part of the Adblock Plus web scripts, | 1 # This file is part of the Adblock Plus web scripts, |
2 # Copyright (C) 2006-present eyeo GmbH | 2 # Copyright (C) 2006-present eyeo GmbH |
3 # | 3 # |
4 # Adblock Plus is free software: you can redistribute it and/or modify | 4 # Adblock Plus is free software: you can redistribute it and/or modify |
5 # it under the terms of the GNU General Public License version 3 as | 5 # it under the terms of the GNU General Public License version 3 as |
6 # published by the Free Software Foundation. | 6 # published by the Free Software Foundation. |
7 # | 7 # |
8 # Adblock Plus is distributed in the hope that it will be useful, | 8 # Adblock Plus is distributed in the hope that it will be useful, |
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
54 class XTMCloudAPI(object): | 54 class XTMCloudAPI(object): |
55 | 55 |
56 _AUTHORIZATION_TMP = 'XTM-Basic {0}' | 56 _AUTHORIZATION_TMP = 'XTM-Basic {0}' |
57 | 57 |
58 class _UrlPaths: | 58 class _UrlPaths: |
59 CREATE = 'projects' | 59 CREATE = 'projects' |
60 DOWNLOAD = 'projects/{0}/files/download' | 60 DOWNLOAD = 'projects/{0}/files/download' |
61 UPLOAD = 'projects/{0}/files/upload' | 61 UPLOAD = 'projects/{0}/files/upload' |
62 GET_TARGET_LANG = 'projects/{0}/metrics' | 62 GET_TARGET_LANG = 'projects/{0}/metrics' |
63 ADD_TARGET_LANG = 'projects/{0}/target-languages' | 63 ADD_TARGET_LANG = 'projects/{0}/target-languages' |
64 GET_WORKFLOW_IDS = 'workflows' | |
64 | 65 |
65 _MATCH_TYPE = { | 66 _MATCH_TYPE = { |
66 False: 'NO_MATCH', | 67 False: 'NO_MATCH', |
67 True: 'MATCH_NAMES', | 68 True: 'MATCH_NAMES', |
68 } | 69 } |
69 | 70 |
70 class _SuccessCodes: | 71 class _SuccessCodes: |
71 CREATE = 201 | 72 CREATE = 201 |
72 UPLOAD = 200 | 73 UPLOAD = 200 |
73 DOWNLOAD = 200 | 74 DOWNLOAD = 200 |
74 GET_TARGET_LANGS = 200 | 75 GET_TARGET_LANGS = 200 |
75 ADD_TARGET_LANGS = 200 | 76 ADD_TARGET_LANGS = 200 |
77 GET_WORKFLOW_IDS = 200 | |
76 | 78 |
77 def __init__(self, token): | 79 def __init__(self, token): |
78 """Constructor. | 80 """Constructor. |
79 | 81 |
80 Parameters | 82 Parameters |
81 ---------- | 83 ---------- |
82 token: str | 84 token: str |
83 Token used to authenticate with the API. | 85 Token used to authenticate with the API. |
84 | 86 |
85 """ | 87 """ |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
381 project_id, | 383 project_id, |
382 ) | 384 ) |
383 headers = {'content-type': 'application/json'} | 385 headers = {'content-type': 'application/json'} |
384 | 386 |
385 response = self._execute(url, data=data, headers=headers) | 387 response = self._execute(url, data=data, headers=headers) |
386 | 388 |
387 if response.status_code != self._SuccessCodes.ADD_TARGET_LANGS: | 389 if response.status_code != self._SuccessCodes.ADD_TARGET_LANGS: |
388 raise XTMCloudException(response.status_code, response.content, | 390 raise XTMCloudException(response.status_code, response.content, |
389 'adding target languages to project') | 391 'adding target languages to project') |
390 | 392 |
393 def get_workflows_by_name(self, name, exact=True): | |
394 """Get workflows with a specific name. | |
395 | |
396 Parameters | |
397 ---------- | |
398 name: str | |
399 The name of the workflow we're looking for. | |
400 exact: bool | |
Vasily Kuznetsov
2018/10/16 14:52:54
Do we actually use this?
Tudor Avram
2018/10/18 16:29:23
No, we don't. We're only interested in exact match
| |
401 Whether we're looking for exact matches only or if partial ones | |
402 are ok, too. Default True. | |
403 | |
404 Returns | |
405 ------- | |
406 iterable | |
407 Of workflow ids that match the name. | |
408 | |
409 """ | |
410 url = self.base_url + self._UrlPaths.GET_WORKFLOW_IDS | |
411 | |
412 response = self._execute(url, params={'name': name}) | |
413 | |
414 if response.status_code != self._SuccessCodes.GET_WORKFLOW_IDS: | |
415 raise XTMCloudException(response.status_code, response.content, | |
416 'extracting workflow ids') | |
417 | |
418 if not exact: | |
419 return [item['id'] | |
420 for item in json.loads(response.content.encode('utf-8'))] | |
421 | |
422 valid_ids = [] | |
423 for item in json.loads(response.content.encode('utf-8')): | |
424 if name.lower().replace(' ', '') == \ | |
425 item['name'].lower().replace(' ', ''): | |
426 valid_ids.append(item['id']) | |
427 return valid_ids | |
428 | |
391 | 429 |
392 def get_token(username, password, user_id): | 430 def get_token(username, password, user_id): |
393 """Generate an API token from username and password. | 431 """Generate an API token from username and password. |
394 | 432 |
395 Parameters | 433 Parameters |
396 ---------- | 434 ---------- |
397 username: str | 435 username: str |
398 The username used to generate the token. | 436 The username used to generate the token. |
399 password: str | 437 password: str |
400 The password used to generate the token. | 438 The password used to generate the token. |
(...skipping 22 matching lines...) Expand all Loading... | |
423 headers = {'content-type': 'application/json'} | 461 headers = {'content-type': 'application/json'} |
424 | 462 |
425 response = requests.post(url, data=request_body, headers=headers) | 463 response = requests.post(url, data=request_body, headers=headers) |
426 | 464 |
427 if response.status_code == 200: | 465 if response.status_code == 200: |
428 return json.loads(response.text)['token'].encode() | 466 return json.loads(response.text)['token'].encode() |
429 | 467 |
430 raise XTMCloudException(response.status_code, | 468 raise XTMCloudException(response.status_code, |
431 response.text.encode('utf-8'), | 469 response.text.encode('utf-8'), |
432 'generating token') | 470 'generating token') |
OLD | NEW |