summaryrefslogtreecommitdiff
path: root/matweb/rest_api.py
diff options
context:
space:
mode:
authorjfriedli2020-04-26 09:50:14 -0700
committerjfriedli2020-04-26 09:50:14 -0700
commitc301e472bd7fd79d675c5df089db0b16fd1e2cfe (patch)
treec3332e0f974edc09881b5534c35becc5b9fffa3b /matweb/rest_api.py
parente1bac8b6a7fd857f38b7bcb678398c82baaa8fd5 (diff)
Resolve "Use a HMAC instead of a hash"
Diffstat (limited to 'matweb/rest_api.py')
-rw-r--r--matweb/rest_api.py19
1 files changed, 13 insertions, 6 deletions
diff --git a/matweb/rest_api.py b/matweb/rest_api.py
index 60d834f..4098050 100644
--- a/matweb/rest_api.py
+++ b/matweb/rest_api.py
@@ -42,14 +42,15 @@ class APIUpload(Resource):
42 if not parser.remove_all(): 42 if not parser.remove_all():
43 abort(500, message='Unable to clean %s' % mime) 43 abort(500, message='Unable to clean %s' % mime)
44 44
45 key, meta_after, output_filename = utils.cleanup(parser, filepath, self.upload_folder) 45 key, secret, meta_after, output_filename = utils.cleanup(parser, filepath, self.upload_folder)
46 return utils.return_file_created_response( 46 return utils.return_file_created_response(
47 output_filename, 47 output_filename,
48 mime, 48 mime,
49 key, 49 key,
50 secret,
50 meta, 51 meta,
51 meta_after, 52 meta_after,
52 urljoin(request.host_url, '%s/%s/%s/%s' % ('api', 'download', key, output_filename)) 53 urljoin(request.host_url, '%s/%s/%s/%s/%s' % ('api', 'download', key, secret, output_filename))
53 ) 54 )
54 55
55 56
@@ -58,8 +59,8 @@ class APIDownload(Resource):
58 def __init__(self, **kwargs): 59 def __init__(self, **kwargs):
59 self.upload_folder = kwargs['upload_folder'] 60 self.upload_folder = kwargs['upload_folder']
60 61
61 def get(self, key: str, filename: str): 62 def get(self, key: str, secret: str, filename: str):
62 complete_path, filepath = utils.is_valid_api_download_file(filename, key, self.upload_folder) 63 complete_path, filepath = utils.is_valid_api_download_file(filename, key, secret, self.upload_folder)
63 # Make sure the file is NOT deleted on HEAD requests 64 # Make sure the file is NOT deleted on HEAD requests
64 if request.method == 'GET': 65 if request.method == 'GET':
65 file_removal_scheduler.run_file_removal_job(self.upload_folder) 66 file_removal_scheduler.run_file_removal_job(self.upload_folder)
@@ -87,6 +88,7 @@ class APIBulkDownloadCreator(Resource):
87 'type': 'dict', 88 'type': 'dict',
88 'schema': { 89 'schema': {
89 'key': {'type': 'string', 'required': True}, 90 'key': {'type': 'string', 'required': True},
91 'secret': {'type': 'string', 'required': True},
90 'file_name': {'type': 'string', 'required': True} 92 'file_name': {'type': 'string', 'required': True}
91 } 93 }
92 } 94 }
@@ -108,6 +110,7 @@ class APIBulkDownloadCreator(Resource):
108 complete_path, file_path = utils.is_valid_api_download_file( 110 complete_path, file_path = utils.is_valid_api_download_file(
109 file_candidate['file_name'], 111 file_candidate['file_name'],
110 file_candidate['key'], 112 file_candidate['key'],
113 file_candidate['secret'],
111 self.upload_folder 114 self.upload_folder
112 ) 115 )
113 try: 116 try:
@@ -124,13 +127,17 @@ class APIBulkDownloadCreator(Resource):
124 parser, mime = utils.get_file_parser(zip_path) 127 parser, mime = utils.get_file_parser(zip_path)
125 if not parser.remove_all(): 128 if not parser.remove_all():
126 abort(500, message='Unable to clean %s' % mime) 129 abort(500, message='Unable to clean %s' % mime)
127 key, meta_after, output_filename = utils.cleanup(parser, zip_path, self.upload_folder) 130 key, secret, meta_after, output_filename = utils.cleanup(parser, zip_path, self.upload_folder)
128 return { 131 return {
129 'output_filename': output_filename, 132 'output_filename': output_filename,
130 'mime': mime, 133 'mime': mime,
131 'key': key, 134 'key': key,
135 'secret': secret,
132 'meta_after': meta_after, 136 'meta_after': meta_after,
133 'download_link': urljoin(request.host_url, '%s/%s/%s/%s' % ('api', 'download', key, output_filename)) 137 'download_link': urljoin(
138 request.host_url,
139 '%s/%s/%s/%s/%s' % ('api', 'download', key, secret, output_filename)
140 )
134 }, 201 141 }, 201
135 142
136 143