antos-frontend/src/core/vfs/GoogleDriveHandler.coffee

68 lines
2.1 KiB
CoffeeScript
Raw Normal View History

2018-02-27 16:40:36 +01:00
2018-02-13 20:27:41 +01:00
# GoogleDrive File Handler
class GoogleDriveHandler extends this.OS.API.VFS.BaseFileHandler
constructor: (path) ->
super path
2018-02-27 16:40:36 +01:00
me = @
@setting = _OS.setting.VFS.gdrive
return _courrier.oserror "Unknown API setting for google drive VFS", (_API.throwe "OS.VFS"), null unless @setting
@gid = 'root' if @isRoot()
oninit: (f) ->
me = @
return unless @setting
if _API.libready @setting.apilink
f()
else
_API.require @setting.apilink, () ->
gapi.load "client:auth2", () ->
gapi.client.init {
apiKey: me.setting.API_KEY,
clientId: me.setting.CLIENT_ID,
discoveryDocs: me.setting.DISCOVERY_DOCS,
scope: me.setting.SCOPES
}
.then () ->
fn = (r) ->
return f() if r
# perform the login
gapi.auth2.getAuthInstance().signIn()
gapi.auth2.getAuthInstance().isSignedIn.listen (r) ->
fn(r)
fn(gapi.auth2.getAuthInstance().isSignedIn.get())
meta: (f) ->
@oninit () ->
gapi.client.drive.files.list {
q: 'parents = "root" and trashed = false ',
fields: "nextPageToken, files(id, name)"
}
.then (r) ->
console.log(r)
f()
action: (n, p, f) ->
me = @
switch n
when "read"
return
when "mk"
return
when "write"
return
when "upload"
return
when "remove"
return
when "publish"
return
when "download"
return
when "move"
return
else
return _courrier.osfail "VFS unknown action: #{n}", (_API.throwe "OS.VFS"), n
2018-02-13 20:27:41 +01:00
self.OS.API.VFS.register "^gdv$", GoogleDriveHandler