Index: cms/translations/xtm/xtm_api.py |
diff --git a/cms/translations/xtm/xtm_api.py b/cms/translations/xtm/xtm_api.py |
index b65ce27054151a31a10dd6a7adf5dc9488cda549..601391fc443e7881317778eb7d3f6c65f0092dee 100644 |
--- a/cms/translations/xtm/xtm_api.py |
+++ b/cms/translations/xtm/xtm_api.py |
@@ -16,6 +16,11 @@ |
from __future__ import unicode_literals |
import json |
+try: |
+ import urlparse |
+except ImportError: |
+ # It's Python 3 |
+ import urllib.parse as urlparse |
import requests |
@@ -76,17 +81,19 @@ class XTMCloudAPI(object): |
ADD_TARGET_LANGS = 200 |
GET_WORKFLOW_IDS = 200 |
- def __init__(self, token): |
+ def __init__(self, token, base_url): |
"""Constructor. |
Parameters |
---------- |
token: str |
Token used to authenticate with the API. |
+ base_url: str |
+ Url used to connect to the API. |
""" |
self._token = token |
- self.base_url = _BASE_URL |
+ self.base_url = base_url |
def _execute(self, url, data=None, files=None, stream=False, |
params=None, headers=None): |
@@ -218,12 +225,13 @@ class XTMCloudAPI(object): |
# Hacky way to go around 415 error code |
files_to_upload = {'a': 'b'} |
- url = self.base_url + self._UrlPaths.CREATE |
+ url = urlparse.urljoin(self.base_url, self._UrlPaths.CREATE) |
response = self._execute(url, data=data, files=files_to_upload) |
if response.status_code != self._SuccessCodes.CREATE: |
# The creation was not successful |
+ print('Raising exception') |
raise XTMCloudException(response.status_code, |
response.text.decode('utf-8'), |
'creating job') |
@@ -275,7 +283,9 @@ class XTMCloudAPI(object): |
data = {'matchType': self._MATCH_TYPE[overwrite]} |
data.update(file_names) |
- url = self.base_url + self._UrlPaths.UPLOAD.format(project_id) |
+ url = urlparse.urljoin( |
+ self.base_url, self._UrlPaths.UPLOAD.format(project_id), |
+ ) |
response = self._execute(url, data=data, files=files_to_upload) |
@@ -307,7 +317,9 @@ class XTMCloudAPI(object): |
If the request is flawed in any way. |
""" |
- url = (self.base_url + self._UrlPaths.DOWNLOAD).format(project_id) |
+ url = urlparse.urljoin( |
+ self.base_url, self._UrlPaths.DOWNLOAD.format(project_id), |
+ ) |
exception_msg = { |
400: 'Invalid request', |
@@ -347,8 +359,8 @@ class XTMCloudAPI(object): |
If the request is unsuccessful. |
""" |
- url = (self.base_url + self._UrlPaths.GET_TARGET_LANG).format( |
- project_id, |
+ url = urlparse.urljoin( |
+ self.base_url, self._UrlPaths.GET_TARGET_LANG.format(project_id), |
) |
response = self._execute(url, stream=True) |
@@ -379,9 +391,11 @@ class XTMCloudAPI(object): |
data = json.dumps({ |
'targetLanguages': target_languages, |
}) |
- url = (self.base_url + self._UrlPaths.ADD_TARGET_LANG).format( |
- project_id, |
+ |
+ url = urlparse.urljoin( |
+ self.base_url, self._UrlPaths.ADD_TARGET_LANG.format(project_id), |
) |
+ |
headers = {'content-type': 'application/json'} |
response = self._execute(url, data=data, headers=headers) |
@@ -404,7 +418,7 @@ class XTMCloudAPI(object): |
Of workflow ids that match the name provided. |
""" |
- url = self.base_url + self._UrlPaths.GET_WORKFLOW_IDS |
+ url = urlparse.urljoin(self.base_url, self._UrlPaths.GET_WORKFLOW_IDS) |
response = self._execute(url, params={'name': name}) |
@@ -420,7 +434,7 @@ class XTMCloudAPI(object): |
return valid_ids |
-def get_token(username, password, user_id): |
+def get_token(username, password, user_id, base_url): |
"""Generate an API token from username and password. |
Parameters |
@@ -431,6 +445,8 @@ def get_token(username, password, user_id): |
The password used to generate the token. |
user_id: int |
The user ID used to generate the token. |
+ base_url: str |
+ The url used to connect to the API |
Returns |
------- |
@@ -449,7 +465,7 @@ def get_token(username, password, user_id): |
'userId': user_id, |
}) |
- url = _BASE_URL + 'auth/token' |
+ url = urlparse.urljoin(base_url, 'auth/token') |
headers = {'content-type': 'application/json'} |