mirror of
https://github.com/yuukiwww/taiko-web.git
synced 2024-10-22 17:05:49 +02:00
88 lines
1.8 KiB
JavaScript
88 lines
1.8 KiB
JavaScript
|
class RemoteFile{
|
||
|
constructor(url){
|
||
|
this.url = url
|
||
|
try{
|
||
|
this.path = new URL(url).pathname
|
||
|
}catch(e){
|
||
|
this.path = url
|
||
|
}
|
||
|
if(this.path.startsWith("/")){
|
||
|
this.path = this.path.slice(1)
|
||
|
}
|
||
|
this.name = this.path
|
||
|
var index = this.name.lastIndexOf("/")
|
||
|
if(index !== -1){
|
||
|
this.name = this.name.slice(index + 1)
|
||
|
}
|
||
|
}
|
||
|
arrayBuffer(){
|
||
|
return loader.ajax(this.url, request => {
|
||
|
request.responseType = "arraybuffer"
|
||
|
})
|
||
|
}
|
||
|
read(encoding){
|
||
|
if(encoding){
|
||
|
return this.arrayBuffer().then(response =>
|
||
|
new TextDecoder(encoding).decode(response)
|
||
|
)
|
||
|
}else{
|
||
|
return loader.ajax(this.url)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
class LocalFile{
|
||
|
constructor(file){
|
||
|
this.file = file
|
||
|
this.path = file.webkitRelativePath
|
||
|
this.url = this.path
|
||
|
this.name = file.name
|
||
|
}
|
||
|
arrayBuffer(){
|
||
|
var reader = new FileReader()
|
||
|
var promise = pageEvents.load(reader).then(event => event.target.result)
|
||
|
reader.readAsArrayBuffer(this.file)
|
||
|
return promise
|
||
|
}
|
||
|
read(encoding){
|
||
|
var reader = new FileReader()
|
||
|
var promise = pageEvents.load(reader).then(event => event.target.result)
|
||
|
reader.readAsText(this.file, encoding)
|
||
|
return promise
|
||
|
}
|
||
|
}
|
||
|
class GdriveFile{
|
||
|
constructor(fileObj){
|
||
|
this.path = fileObj.path
|
||
|
this.name = fileObj.name
|
||
|
this.id = fileObj.id
|
||
|
this.url = gpicker.filesUrl + this.id + "?alt=media"
|
||
|
}
|
||
|
arrayBuffer(){
|
||
|
return gpicker.downloadFile(this.id, true)
|
||
|
}
|
||
|
read(encoding){
|
||
|
if(encoding){
|
||
|
return this.arrayBuffer().then(response =>
|
||
|
new TextDecoder(encoding).decode(response)
|
||
|
)
|
||
|
}else{
|
||
|
return gpicker.downloadFile(this.id)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
class CachedFile{
|
||
|
constructor(contents, oldFile){
|
||
|
this.contents = contents
|
||
|
this.oldFile = oldFile
|
||
|
this.path = oldFile.path
|
||
|
this.name = oldFile.name
|
||
|
this.url = oldFile.url
|
||
|
}
|
||
|
arrayBuffer(){
|
||
|
return Promise.resolve(this.contents)
|
||
|
}
|
||
|
read(encoding){
|
||
|
return this.arrayBuffer()
|
||
|
}
|
||
|
}
|