mirror of
https://github.com/lxsang/antos-frontend.git
synced 2024-11-08 14:08:22 +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
|
||||
constructor: (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]
|
||||
@keycomb =
|
||||
ALT: {}
|
||||
|
@ -43,7 +43,15 @@ class BaseModel
|
||||
mt = @meta()
|
||||
return mt.path if mt and mt.path
|
||||
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: ->
|
||||
#implement by sub class
|
||||
onexit: (e) ->
|
||||
|
@ -337,6 +337,8 @@ self.OS.API =
|
||||
}, f
|
||||
setting: (f) ->
|
||||
_API.handler.setting f
|
||||
apigateway: (d, ws, c) ->
|
||||
return _API.handler.apigateway d, ws, c
|
||||
search: (text) ->
|
||||
r = []
|
||||
|
||||
|
@ -18,9 +18,8 @@
|
||||
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.TERMURI = "wss://lxsang.me/wterm"
|
||||
|
||||
_REST = self.OS.API.REST
|
||||
_HOST = self.OS.API.HOST
|
||||
self.OS.API.handler =
|
||||
# get file, require authentification
|
||||
get: "#{_REST}/VFS/get"
|
||||
@ -82,6 +81,19 @@ self.OS.API.handler =
|
||||
|
||||
scanapp: (p, c ) ->
|
||||
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) ->
|
||||
p = "#{_REST}/user/auth"
|
||||
_API.post p, {}, c, (e, s) ->
|
||||
|
@ -25,6 +25,7 @@
|
||||
repeat: "repeat"
|
||||
} unless _OS.setting.appearance.wp
|
||||
_OS.setting.appearance.wps = [] unless _OS.setting.appearance.wps
|
||||
_OS.setting.applications = {} unless _OS.setting.applications
|
||||
_OS.setting.user = conf.user
|
||||
_OS.setting.VFS = conf.VFS if conf.VFS
|
||||
_OS.setting.desktop.path = "home://.desktop" unless _OS.setting.desktop.path
|
||||
|
@ -75,9 +75,9 @@ class wTerm extends this.OS.GUI.BaseApplication
|
||||
me = @
|
||||
@term.clear()
|
||||
@term.focus()
|
||||
proto = if window.location.protocol is "https:" then "wss://" else "ws://"
|
||||
#@socket = new WebSocket proto + @_api.HOST + "/wterm"
|
||||
@socket = new WebSocket @_api.TERMURI
|
||||
return @configure() unless @setting.uri
|
||||
|
||||
@socket = new WebSocket @setting.uri
|
||||
@socket.onopen = () ->
|
||||
#el.style.display = "none"
|
||||
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.onclose = () ->
|
||||
me.socket = null
|
||||
me.quit()
|
||||
#me.quit()
|
||||
console.log "socket closed"
|
||||
#el.style.display = "block"
|
||||
cleanup: (e)->
|
||||
cleanup: (e) ->
|
||||
@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
|
Loading…
Reference in New Issue
Block a user