Files
galaxy/scripts/api/upload_to_history.py
T
Nicola Soranzo 21b44bf348 Fix all E201 and E202 style errors
using the following command:
```
autopep8 -i -r --exclude $(sed -e 's|^|./|' -e 's|/$||' .ci/flake8_blacklist.txt | paste -sd,) --select E201,E202 .
```
2017-08-17 11:35:39 +01:00

55 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python
"""
Upload a file to the desired history.
"""
from __future__ import print_function
import json
import os
import sys
try:
import requests
except ImportError:
print("Could not import the requests module. See http://docs.python-requests.org/en/latest/" +
" or install with 'pip install requests'")
raise
def upload_file(base_url, api_key, history_id, filepath, **kwargs):
full_url = base_url + '/api/tools'
payload = {
'key' : api_key,
'tool_id' : 'upload1',
'history_id' : history_id,
}
inputs = {
'files_0|NAME' : kwargs.get('filename', os.path.basename(filepath)),
'files_0|type' : 'upload_dataset',
# TODO: the following doesn't work with tools.py
'dbkey' : '?',
'file_type' : kwargs.get('file_type', 'auto'),
'ajax_upload' : 'true',
}
payload['inputs'] = json.dumps(inputs)
response = None
with open(filepath, 'rb') as file_to_upload:
files = {'files_0|file_data': file_to_upload}
response = requests.post(full_url, data=payload, files=files)
return response.json()
if __name__ == '__main__':
if len(sys.argv) < 5:
print("history_upload.py <api key> <galaxy base url> <history id> <filepath to upload>\n" +
" (where galaxy base url is just the root url where your Galaxy is served; e.g. 'localhost:8080')")
sys.exit(1)
api_key, base_url, history_id, filepath = sys.argv[1:5]
kwargs = dict([kwarg.split('=', 1) for kwarg in sys.argv[5:]])
response = upload_file(base_url, api_key, history_id, filepath, **kwargs)
print(response, file=sys.stderr)