| 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): |
| 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 |
| 401 Returns |
| 402 ------- |
| 403 iterable |
| 404 Of workflow ids that match the name provided. |
| 405 |
| 406 """ |
| 407 url = self.base_url + self._UrlPaths.GET_WORKFLOW_IDS |
| 408 |
| 409 response = self._execute(url, params={'name': name}) |
| 410 |
| 411 if response.status_code != self._SuccessCodes.GET_WORKFLOW_IDS: |
| 412 raise XTMCloudException(response.status_code, response.content, |
| 413 'extracting workflow ids') |
| 414 |
| 415 valid_ids = [] |
| 416 for item in json.loads(response.content.encode('utf-8')): |
| 417 if name.lower().replace(' ', '') == \ |
| 418 item['name'].lower().replace(' ', ''): |
| 419 valid_ids.append(item['id']) |
| 420 return valid_ids |
| 421 |
| 391 | 422 |
| 392 def get_token(username, password, user_id): | 423 def get_token(username, password, user_id): |
| 393 """Generate an API token from username and password. | 424 """Generate an API token from username and password. |
| 394 | 425 |
| 395 Parameters | 426 Parameters |
| 396 ---------- | 427 ---------- |
| 397 username: str | 428 username: str |
| 398 The username used to generate the token. | 429 The username used to generate the token. |
| 399 password: str | 430 password: str |
| 400 The password used to generate the token. | 431 The password used to generate the token. |
| (...skipping 22 matching lines...) Expand all Loading... |
| 423 headers = {'content-type': 'application/json'} | 454 headers = {'content-type': 'application/json'} |
| 424 | 455 |
| 425 response = requests.post(url, data=request_body, headers=headers) | 456 response = requests.post(url, data=request_body, headers=headers) |
| 426 | 457 |
| 427 if response.status_code == 200: | 458 if response.status_code == 200: |
| 428 return json.loads(response.text)['token'].encode() | 459 return json.loads(response.text)['token'].encode() |
| 429 | 460 |
| 430 raise XTMCloudException(response.status_code, | 461 raise XTMCloudException(response.status_code, |
| 431 response.text.encode('utf-8'), | 462 response.text.encode('utf-8'), |
| 432 'generating token') | 463 'generating token') |
| OLD | NEW |