mirror of
https://github.com/lxsang/antos-frontend.git
synced 2024-12-27 01:38:21 +01:00
add server side api
This commit is contained in:
parent
9b75bc4ca2
commit
e47a424a9f
@ -18,7 +18,8 @@
|
|||||||
class BaseApplication extends this.OS.GUI.BaseModel
|
class BaseApplication extends this.OS.GUI.BaseModel
|
||||||
constructor: (name, args) ->
|
constructor: (name, args) ->
|
||||||
super name, args
|
super name, args
|
||||||
_OS.setting.applications[@name] = {} if not _OS.setting.applications[@name]
|
if (not _OS.setting.applications[@name]) or (Array.isArray OS.setting.applications[@name])
|
||||||
|
_OS.setting.applications[@name] = {}
|
||||||
@setting = _OS.setting.applications[@name]
|
@setting = _OS.setting.applications[@name]
|
||||||
@keycomb =
|
@keycomb =
|
||||||
ALT: {}
|
ALT: {}
|
||||||
|
@ -44,6 +44,14 @@ class BaseModel
|
|||||||
return mt.path if mt and mt.path
|
return mt.path if mt and mt.path
|
||||||
return null
|
return null
|
||||||
|
|
||||||
|
# call a server side script
|
||||||
|
call: (cmd, func) ->
|
||||||
|
@_api.apigateway cmd, false, func
|
||||||
|
|
||||||
|
# get a stream
|
||||||
|
stream: () ->
|
||||||
|
return @_api.apigateway null, true, null
|
||||||
|
|
||||||
init: ->
|
init: ->
|
||||||
#implement by sub class
|
#implement by sub class
|
||||||
onexit: (e) ->
|
onexit: (e) ->
|
||||||
|
@ -337,6 +337,8 @@ self.OS.API =
|
|||||||
}, f
|
}, f
|
||||||
setting: (f) ->
|
setting: (f) ->
|
||||||
_API.handler.setting f
|
_API.handler.setting f
|
||||||
|
apigateway: (d, ws, c) ->
|
||||||
|
return _API.handler.apigateway d, ws, c
|
||||||
search: (text) ->
|
search: (text) ->
|
||||||
r = []
|
r = []
|
||||||
|
|
||||||
|
@ -18,9 +18,8 @@
|
|||||||
self.OS.API.HOST = self.location.hostname+ (if self.location.port then":#{self.location.port}" else "")
|
self.OS.API.HOST = self.location.hostname+ (if self.location.port then":#{self.location.port}" else "")
|
||||||
self.OS.API.REST = "#{self.location.protocol}//#{self.OS.API.HOST}"
|
self.OS.API.REST = "#{self.location.protocol}//#{self.OS.API.HOST}"
|
||||||
|
|
||||||
self.OS.API.TERMURI = "wss://lxsang.me/wterm"
|
|
||||||
|
|
||||||
_REST = self.OS.API.REST
|
_REST = self.OS.API.REST
|
||||||
|
_HOST = self.OS.API.HOST
|
||||||
self.OS.API.handler =
|
self.OS.API.handler =
|
||||||
# get file, require authentification
|
# get file, require authentification
|
||||||
get: "#{_REST}/VFS/get"
|
get: "#{_REST}/VFS/get"
|
||||||
@ -82,6 +81,19 @@ self.OS.API.handler =
|
|||||||
|
|
||||||
scanapp: (p, c ) ->
|
scanapp: (p, c ) ->
|
||||||
path = "#{_REST}/system/application"
|
path = "#{_REST}/system/application"
|
||||||
|
|
||||||
|
apigateway: (d, ws, c) ->
|
||||||
|
if ws
|
||||||
|
path = "#{_HOST}/system/apigateway?ws=1"
|
||||||
|
proto = if window.location.protocol is "https:" then "wss://" else "ws://"
|
||||||
|
socket = new WebSocket proto + path
|
||||||
|
if c then c(socket)
|
||||||
|
return socket
|
||||||
|
else
|
||||||
|
path = "#{_REST}/system/apigateway?ws=0"
|
||||||
|
_API.post path, d, c, (e, s) ->
|
||||||
|
_courrier.osfail __("Fail to invoke gateway api"), e, s
|
||||||
|
|
||||||
auth: (c) ->
|
auth: (c) ->
|
||||||
p = "#{_REST}/user/auth"
|
p = "#{_REST}/user/auth"
|
||||||
_API.post p, {}, c, (e, s) ->
|
_API.post p, {}, c, (e, s) ->
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
repeat: "repeat"
|
repeat: "repeat"
|
||||||
} unless _OS.setting.appearance.wp
|
} unless _OS.setting.appearance.wp
|
||||||
_OS.setting.appearance.wps = [] unless _OS.setting.appearance.wps
|
_OS.setting.appearance.wps = [] unless _OS.setting.appearance.wps
|
||||||
|
_OS.setting.applications = {} unless _OS.setting.applications
|
||||||
_OS.setting.user = conf.user
|
_OS.setting.user = conf.user
|
||||||
_OS.setting.VFS = conf.VFS if conf.VFS
|
_OS.setting.VFS = conf.VFS if conf.VFS
|
||||||
_OS.setting.desktop.path = "home://.desktop" unless _OS.setting.desktop.path
|
_OS.setting.desktop.path = "home://.desktop" unless _OS.setting.desktop.path
|
||||||
|
@ -75,9 +75,9 @@ class wTerm extends this.OS.GUI.BaseApplication
|
|||||||
me = @
|
me = @
|
||||||
@term.clear()
|
@term.clear()
|
||||||
@term.focus()
|
@term.focus()
|
||||||
proto = if window.location.protocol is "https:" then "wss://" else "ws://"
|
return @configure() unless @setting.uri
|
||||||
#@socket = new WebSocket proto + @_api.HOST + "/wterm"
|
|
||||||
@socket = new WebSocket @_api.TERMURI
|
@socket = new WebSocket @setting.uri
|
||||||
@socket.onopen = () ->
|
@socket.onopen = () ->
|
||||||
#el.style.display = "none"
|
#el.style.display = "none"
|
||||||
me.resizeContent (($ me.mterm).width()) , (($ me.mterm).height())
|
me.resizeContent (($ me.mterm).width()) , (($ me.mterm).height())
|
||||||
@ -86,9 +86,29 @@ class wTerm extends this.OS.GUI.BaseApplication
|
|||||||
@socket.onmessage = (e) -> me.term.write e.data if me.term and e.data
|
@socket.onmessage = (e) -> me.term.write e.data if me.term and e.data
|
||||||
@socket.onclose = () ->
|
@socket.onclose = () ->
|
||||||
me.socket = null
|
me.socket = null
|
||||||
me.quit()
|
#me.quit()
|
||||||
console.log "socket closed"
|
console.log "socket closed"
|
||||||
#el.style.display = "block"
|
#el.style.display = "block"
|
||||||
cleanup: (e) ->
|
cleanup: (e) ->
|
||||||
@socket.close() if @socket
|
@socket.close() if @socket
|
||||||
|
|
||||||
|
menu: () ->
|
||||||
|
me = @
|
||||||
|
{
|
||||||
|
text: "__(Edit)",
|
||||||
|
child: [
|
||||||
|
{ text: "__(Terminal URI)", dataid: "#{@name}-termuri" }
|
||||||
|
],
|
||||||
|
onmenuselect: (e) -> me.configure()
|
||||||
|
}
|
||||||
|
|
||||||
|
configure: () ->
|
||||||
|
@sock.close() if @socket
|
||||||
|
me = @
|
||||||
|
@openDialog "PromptDialog",
|
||||||
|
(d) ->
|
||||||
|
return unless (d and d isnt "")
|
||||||
|
me.setting.uri = d
|
||||||
|
me.openSession()
|
||||||
|
, "__(Please enter terminal URI)", { label: "__(URI)", value: me.setting.uri || "wss://lxsang.me/wterm" }
|
||||||
this.OS.register "wTerm", wTerm
|
this.OS.register "wTerm", wTerm
|
Loading…
Reference in New Issue
Block a user