53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
/**
|
|
* AWS download helper
|
|
* @author Nike
|
|
* @version 1.0
|
|
* @category MyEic
|
|
* @subcategory Libraries
|
|
*/
|
|
class AwsFileDownload {
|
|
|
|
options = {
|
|
pdf : { url: 'https://api.dev.eismea.eu/stable/vod/source?file=',
|
|
method: 'GET',
|
|
headers: { 'Accept': 'application/json',
|
|
'Content-Type': 'application/json',
|
|
},
|
|
credentials: 'include',
|
|
},
|
|
}
|
|
|
|
constructor(options) {
|
|
this.mergeOptionsNode(this.options, options);
|
|
}
|
|
|
|
mergeOptionsNode(target, source) {
|
|
for (let option in source) {
|
|
if(typeof source[option] === 'object' && !Array.isArray(source[option]) && (option in target) && !(target[option] instanceof(Element))) {
|
|
this.mergeOptionsNode(target[option], source[option]);
|
|
} else {
|
|
target[option] = source[option];
|
|
}
|
|
}
|
|
}
|
|
|
|
async getDownloadUrl(type, filename) {
|
|
let response
|
|
let uri = this.options[type].url+filename
|
|
try {
|
|
let foptions = {
|
|
method: this.options[type].method,
|
|
headers: this.options[type].headers,
|
|
}
|
|
if(this.options[type].credentials) foptions['credentials'] = this.options[type].credentials
|
|
response = await fetch(uri, foptions)
|
|
response = await response.json()
|
|
if(response && response.payload && response.payload.url) return(response.payload.url)
|
|
return(null)
|
|
} catch(debugMessage) {
|
|
console.warn('Error getting upload signed URL:',debugMessage)
|
|
return('')
|
|
}
|
|
}
|
|
|
|
} |