Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 0046e0cf authored by CAMPION Sebastien's avatar CAMPION Sebastien
Browse files

Enable token by local file

parent 8ca4c2d9
No related branches found
No related tags found
No related merge requests found
import os, logging import logging
import os
import time import time
try: try:
...@@ -13,8 +13,16 @@ except ImportError: ...@@ -13,8 +13,16 @@ except ImportError:
import requests import requests
log = logging.getLogger('allgo') log = logging.getLogger('allgo')
__version__ = '0.1.4' __version__ = '0.1.7'
def local_token():
from os.path import expanduser
home = expanduser("~")
filetoken = os.path.join(home, '.allgo_token')
if os.path.exists(filetoken):
with open(filetoken) as f:
return f.read()
class App: class App:
""" """
...@@ -28,7 +36,14 @@ class App: ...@@ -28,7 +36,14 @@ class App:
:param token: if not provided, we check ALLGO_TOKEN env variable and notebook parameters :param token: if not provided, we check ALLGO_TOKEN env variable and notebook parameters
""" """
self.name = name self.name = name
self.token = token if token else os.environ.get('ALLGO_TOKEN', None) if token:
self.token = token
elif 'ALLGO_TOKEN' in os.environ.keys():
self.token = os.environ.get('ALLGO_TOKEN')
elif local_token():
self.token = local_token()
else:
raise Exception("You must provide a token in parameter or define an environment variable 'ALLGO_TOKEN'")
def run(self, files, outputdir='.', params=''): def run(self, files, outputdir='.', params=''):
""" """
...@@ -38,12 +53,14 @@ class App: ...@@ -38,12 +53,14 @@ class App:
:param params: a string parameters see the application documentation :param params: a string parameters see the application documentation
:return: :return:
""" """
headers = {'Authorization': 'Token token={}'.format(_token)} headers = {'Authorization': 'Token token={}'.format(self.token)}
data = {"job[webapp_name]": self.name, data = {"job[webapp_name]": self.name,
"job[webapp_id]": self.name,
"job[param]": params} "job[param]": params}
ALLGO_URL = os.environ.get('ALLGO_URL', "https://allgo.inria.fr") ALLGO_URL = os.environ.get('ALLGO_URL', "https://allgo.inria.fr")
r = requests.post('%s/api/v1/jobs' % ALLGO_URL, headers=headers, files=files, data=data) r = requests.post('%s/api/v1/jobs/' % ALLGO_URL, headers=headers, files=files, data=data)
r.raise_for_status() r.raise_for_status()
r = r.json()
jobid = r['id'] jobid = r['id']
results = None results = None
while True: while True:
...@@ -60,7 +77,7 @@ class App: ...@@ -60,7 +77,7 @@ class App:
raise Exception('Job %s failed with status %s', (jobid, status)) raise Exception('Job %s failed with status %s', (jobid, status))
elif status == 'done' and results: elif status == 'done' and results:
for filename, url in results[jobid].items: for filename, url in results[str(jobid)].items():
filepath = os.path.join(outputdir, filename) filepath = os.path.join(outputdir, filename)
with open(filepath, 'wb') as fb: with open(filepath, 'wb') as fb:
fb.write(requests.get(url, stream=True).content) fb.write(requests.get(url, stream=True).content)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment