|
class S3Uploader { |
|
constructor(accessKey, secretKey) { |
|
this.accessKey = accessKey; |
|
this.secretKey = secretKey; |
|
} |
|
|
|
uploadFile(file) { |
|
var s3 = getS3Service(this.accessKey, this.secretKey); |
|
var fileBlob = file.getBlob(); |
|
var fileContent = fileBlob.getBytes(); |
|
var fileMetadata = { |
|
'Content-Type': file.getMimeType(), |
|
'Content-Length': fileBlob.getBytes().length |
|
}; |
|
s3.putObject('my-bucket', file.getName(), fileContent, fileMetadata); |
|
} |
|
|
|
getS3Service(accessKey, secretKey) { |
|
var service = OAuth2.createService('s3') |
|
.setAuthorizationBaseUrl('https://s3.amazonaws.com/') |
|
.setTokenUrl('https://s3.amazonaws.com/') |
|
.setClientId(accessKey) |
|
.setClientSecret(secretKey) |
|
.setCallbackFunction('authCallback') |
|
.setPropertyStore(PropertiesService.getUserProperties()); |
|
return service; |
|
} |
|
|
|
authCallback(request) { |
|
var service = getService(); |
|
var authorized = service.handleCallback(request); |
|
if (authorized) { |
|
return HtmlService.createHtmlOutput('Authorized'); |
|
} else { |
|
return HtmlService.createHtmlOutput('Access denied'); |
|
} |
|
} |
|
} |