Skip to content

Instantly share code, notes, and snippets.

@HunterLarco
Created February 8, 2021 23:32
Show Gist options
  • Save HunterLarco/2f336917f104fba14c8d797745807524 to your computer and use it in GitHub Desktop.
Save HunterLarco/2f336917f104fba14c8d797745807524 to your computer and use it in GitHub Desktop.
import aws
import uuidv4
s3client = aws.s3()
@app.post('/preupload')
def preupload(request, response):
metadata = {
'dateCreated': datetime.now(),
'path': 's3://soot-user-data/uploads/%s' % uuidv4.create(),
'user': request.userid,
}
uploadId = mongoclient.write(metadata)
response.write({
'uploadId': uploadId,
'url': s3client.createSignedUrl(metadata['path'], {
'expiration': 60 * 30,
})
})
@app.post('postupload')
def postupload(request, reponse):
metadata = mongoclient.get(request.uploadId)
if not s3client.stat(metadata.path):
# some error
metadata['dateCompleted'] = datetime.now()
mongoclient.write(request.uploadId, metadata)
# trigger sqs unzip
@app.post('uploadcleanup')
def uploadcleanup(request, response):
for uploadid in mongoclient.query('if now - dateCreated > 64hrs && dateCompleted == null'):
mongoclient.delete(uploadid)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment