77import logging
88import os
99import tempfile
10-
10+ import posixpath
1111import requests
1212from requests_toolbelt .multipart .encoder import MultipartEncoder
1313
@@ -43,7 +43,7 @@ def get_download_url(connector, client, fileid, intermediatefileid=None, ext="")
4343 if not intermediatefileid :
4444 intermediatefileid = fileid
4545
46- url = '%s/ api/files/%s?key=%s' % (client . host , intermediatefileid , client .key )
46+ url = posixpath . join ( client . host , ' api/files/%s?key=%s' % (intermediatefileid , client .key ) )
4747 return url
4848
4949
@@ -65,7 +65,7 @@ def download(connector, client, fileid, intermediatefileid=None, ext=""):
6565 if not intermediatefileid :
6666 intermediatefileid = fileid
6767
68- url = '%s/ api/files/%s?key=%s' % (client . host , intermediatefileid , client .key )
68+ url = posixpath . join ( client . host , ' api/files/%s?key=%s' % (intermediatefileid , client .key ) )
6969 result = connector .get (url , stream = True , verify = connector .ssl_verify if connector else True )
7070
7171 (inputfile , inputfilename ) = tempfile .mkstemp (suffix = ext )
@@ -89,7 +89,7 @@ def download_info(connector, client, fileid):
8989 fileid -- the file to fetch metadata of
9090 """
9191
92- url = '%s/ api/files/%s/metadata?key=%s' % (client . host , fileid , client .key )
92+ url = posixpath . join ( client . host , ' api/files/%s/metadata?key=%s' % (fileid , client .key ) )
9393
9494 # fetch data
9595 result = connector .get (url , stream = True , verify = connector .ssl_verify if connector else True )
@@ -121,14 +121,30 @@ def download_metadata(connector, client, fileid, extractor=None):
121121 """
122122
123123 filterstring = "" if extractor is None else "&extractor=%s" % extractor
124- url = '%s/ api/files/%s/metadata.jsonld?key=%s%s' % (client . host , fileid , client .key , filterstring )
124+ url = posixpath . join ( client . host , ' api/files/%s/metadata.jsonld?key=%s%s' % (fileid , client .key , filterstring ) )
125125
126126 # fetch data
127127 result = connector .get (url , stream = True , verify = connector .ssl_verify if connector else True )
128128
129129 return result
130130
131131
132+ def delete (connector , client , fileid ):
133+ """Delete file from Clowder.
134+
135+ Keyword arguments:
136+ connector -- connector information, used to get missing parameters and send status updates
137+ client -- ClowderClient containing authentication credentials
138+ fileid -- the dataset to delete
139+ """
140+ url = posixpath .join (client .host , "api/files/%s?key=%s" % (fileid , client .key ))
141+
142+ result = requests .delete (url , verify = connector .ssl_verify if connector else True )
143+ result .raise_for_status ()
144+
145+ return json .loads (result .text )
146+
147+
132148def submit_extraction (connector , client , fileid , extractorname ):
133149 """Submit file for extraction by given extractor.
134150
@@ -139,7 +155,7 @@ def submit_extraction(connector, client, fileid, extractorname):
139155 extractorname -- registered name of extractor to trigger
140156 """
141157
142- url = "%s/ api/files/%s/extractions?key=%s" % (client . host , fileid , client .key )
158+ url = posixpath . join ( client . host , " api/files/%s/extractions?key=%s" % (fileid , client .key ) )
143159
144160 result = connector .post (url ,
145161 headers = {'Content-Type' : 'application/json' },
@@ -213,7 +229,7 @@ def upload_metadata(connector, client, fileid, metadata):
213229 connector .message_process ({"type" : "file" , "id" : fileid }, "Uploading file metadata." )
214230
215231 headers = {'Content-Type' : 'application/json' }
216- url = '%s/ api/files/%s/metadata.jsonld?key=%s' % (client . host , fileid , client .key )
232+ url = posixpath . join ( client . host , ' api/files/%s/metadata.jsonld?key=%s' % (fileid , client .key ) )
217233 result = connector .post (url , headers = headers , data = json .dumps (metadata ),
218234 verify = connector .ssl_verify if connector else True )
219235
@@ -239,7 +255,7 @@ def upload_preview(connector, client, fileid, previewfile, previewmetadata=None,
239255 headers = {'Content-Type' : 'application/json' }
240256
241257 # upload preview
242- url = '%s/ api/previews?key=%s' % ( client . host , client .key )
258+ url = posixpath . join ( client . host , ' api/previews?key=%s' % client .key )
243259 with open (previewfile , 'rb' ) as filebytes :
244260 # If a custom preview file MIME type is provided, use it to generate the preview file object.
245261 if preview_mimetype is not None :
@@ -253,13 +269,13 @@ def upload_preview(connector, client, fileid, previewfile, previewmetadata=None,
253269
254270 # associate uploaded preview with orginal file
255271 if fileid and not (previewmetadata and 'section_id' in previewmetadata and previewmetadata ['section_id' ]):
256- url = '%s/ api/files/%s/previews/%s?key=%s' % (client . host , fileid , previewid , client .key )
272+ url = posixpath . join ( client . host , ' api/files/%s/previews/%s?key=%s' % (fileid , previewid , client .key ) )
257273 result = connector .post (url , headers = headers , data = json .dumps ({}),
258274 verify = connector .ssl_verify if connector else True )
259275
260276 # associate metadata with preview
261277 if previewmetadata is not None :
262- url = '%s/ api/previews/%s/metadata?key=%s' % (client . host , previewid , client .key )
278+ url = posixpath . join ( client . host , ' api/previews/%s/metadata?key=%s' % (previewid , client .key ) )
263279 result = connector .post (url , headers = headers , data = json .dumps (previewmetadata ),
264280 verify = connector .ssl_verify if connector else True )
265281
@@ -279,7 +295,7 @@ def upload_tags(connector, client, fileid, tags):
279295 connector .message_process ({"type" : "file" , "id" : fileid }, "Uploading file tags." )
280296
281297 headers = {'Content-Type' : 'application/json' }
282- url = '%s/ api/files/%s/tags?key=%s' % (client . host , fileid , client .key )
298+ url = posixpath . join ( client . host , ' api/files/%s/tags?key=%s' % (fileid , client .key ) )
283299 result = connector .post (url , headers = headers , data = json .dumps (tags ),
284300 verify = connector .ssl_verify if connector else True )
285301
@@ -295,18 +311,18 @@ def upload_thumbnail(connector, client, fileid, thumbnail):
295311 """
296312
297313 logger = logging .getLogger (__name__ )
298- url = client .host + 'api/fileThumbnail?key=' + client .key
314+ url = posixpath . join ( client .host , 'api/fileThumbnail?key=%s' % client .key )
299315
300316 # upload preview
301317 with open (thumbnail , 'rb' ) as inputfile :
302318 result = connector .post (url , files = {"File" : inputfile }, verify = connector .ssl_verify if connector else True )
303319 thumbnailid = result .json ()['id' ]
304320 logger .debug ("thumbnail id = [%s]" , thumbnailid )
305321
306- # associate uploaded preview with orginal file/dataset
322+ # associate uploaded preview with original file/dataset
307323 if fileid :
308324 headers = {'Content-Type' : 'application/json' }
309- url = client .host + 'api/files/' + fileid + ' /thumbnails/' + thumbnailid + ' ?key=' + client .key
325+ url = posixpath . join ( client .host , 'api/files/%s /thumbnails/%s ?key=%s' % ( fileid , thumbnailid , client .key ))
310326 connector .post (url , headers = headers , data = json .dumps ({}), verify = connector .ssl_verify if connector else True )
311327
312328 return thumbnailid
@@ -336,7 +352,7 @@ def upload_to_dataset(connector, client, datasetid, filepath, check_duplicate=Fa
336352 if filepath .startswith (connector .mounted_paths [source_path ]):
337353 return _upload_to_dataset_local (connector , client , datasetid , filepath )
338354
339- url = '%s/ api/uploadToDataset/%s?key=%s' % (client . host , datasetid , client .key )
355+ url = posixpath . join ( client . host , ' api/uploadToDataset/%s?key=%s' % (datasetid , client .key ) )
340356
341357 if os .path .exists (filepath ):
342358 filename = os .path .basename (filepath )
@@ -365,7 +381,7 @@ def _upload_to_dataset_local(connector, client, datasetid, filepath):
365381 """
366382
367383 logger = logging .getLogger (__name__ )
368- url = '%s/ api/uploadToDataset/%s?key=%s' % (client . host , datasetid , client .key )
384+ url = posixpath . join ( client . host , ' api/uploadToDataset/%s?key=%s' % (datasetid , client .key ) )
369385
370386 if os .path .exists (filepath ):
371387 # Replace local path with remote path before uploading
0 commit comments