diff --git a/src/pixscript.nim b/src/pixscript.nim deleted file mode 100644 index 4e4d31d..0000000 --- a/src/pixscript.nim +++ /dev/null @@ -1,4 +0,0 @@ -import pixctrl - -proc doRefresh*() = - refresh() \ No newline at end of file diff --git a/src/randopix.nim b/src/randopix.nim index e5aae7b..a2c9987 100644 --- a/src/randopix.nim +++ b/src/randopix.nim @@ -2,7 +2,7 @@ import os, options, strformat import gintro/[glib, gobject, gtk, gio] import gintro/gdk except Window import argparse except run -import providers, serverNew, common +import providers, server, common const css = slurp("resources/app.css") diff --git a/src/resources/script.js b/src/resources/script.js new file mode 100644 index 0000000..e69de29 diff --git a/src/server.nim b/src/server.nim index ea21fe8..dbecbaa 100644 --- a/src/server.nim +++ b/src/server.nim @@ -1,60 +1,46 @@ -import net, json, strutils +import asyncdispatch, strutils, json +import jester import common +const + index = slurp("resources/index.html") + style = slurp("resources/site.css") + script = slurp("resources/script.js") + type ServerArgs* = object of RootObj - verbose: bool + verbose*: bool + port*: int var chan*: Channel[CommandMessage] verbose: bool -proc newServerArgs*(verbose: bool): ServerArgs = - ServerArgs(verbose: verbose) - proc log(things: varargs[string, `$`]) = if verbose: echo things.join() -proc closeServer*() = - ## Sends a "Close" command to the server - var socket = newSocket() - socket.connect("127.0.0.1", Port(defaultPort)) - let c = newCommand(cClose) - socket.send(c.wrap) - socket.close() +router randopixRouter: + get "/": + log "Access from ", request.ip + resp index + + get "/style": + resp(style, contentType="text/css") + + get "/script": + resp(script, contentType="text/javascript") + + post "/": + let json = request.body.parseJson + let msg = json.to(CommandMessage) + # Pass command from client to main applicaiton + chan.send(msg) + resp Http200 proc runServer*[ServerArgs](arg: ServerArgs) {.thread, nimcall.} = verbose = arg.verbose - var server = net.newSocket() - server.bindAddr(Port(defaultPort)) - server.listen() - log "Control server is listening" - - while true: - # Process client requests - var client = net.newSocket() - server.accept(client) - log "Client connected" - try: - var line = client.recvLine() - if line == "": - log "No data from client" - continue - - var jsonData = parseJson(line) - let msg = jsonData.to(CommandMessage) - case msg.command - of cClose: - log "Server recieved termination command. Exiting." - break - else: - # Pass command from client to main applicaiton - chan.send(msg) - - except OSError: - log "Server error: ", getCurrentExceptionMsg() - except: - log "Invalid command from client: ", getCurrentExceptionMsg() - log repr(getCurrentException()) - server.close() \ No newline at end of file + let port = Port(arg.port) + let settings = newSettings(port=port) + var server = initJester(randopixRouter, settings=settings) + server.serve() \ No newline at end of file diff --git a/src/serverNew.nim b/src/serverNew.nim deleted file mode 100644 index 9dd97b2..0000000 --- a/src/serverNew.nim +++ /dev/null @@ -1,46 +0,0 @@ -import asyncdispatch, strutils, json -import jester -import common - -const - index = slurp("resources/index.html") - style = slurp("resources/site.css") - script = "" - -type - ServerArgs* = object of RootObj - verbose*: bool - port*: int - -var - chan*: Channel[CommandMessage] - verbose: bool - -proc log(things: varargs[string, `$`]) = - if verbose: - echo things.join() - -router randopixRouter: - get "/": - log "Access from ", request.ip - resp index - - get "/style": - resp(style, contentType="text/css") - - get "/script": - resp(script, contentType="text/javascript") - - post "/": - let json = request.body.parseJson - let msg = json.to(CommandMessage) - # Pass command from client to main applicaiton - chan.send(msg) - resp Http200 - -proc runServer*[ServerArgs](arg: ServerArgs) {.thread, nimcall.} = - verbose = arg.verbose - let port = Port(arg.port) - let settings = newSettings(port=port) - var server = initJester(randopixRouter, settings=settings) - server.serve() \ No newline at end of file diff --git a/src/serverNew.nim.cfg b/src/serverNew.nim.cfg deleted file mode 100644 index 6c1ded9..0000000 --- a/src/serverNew.nim.cfg +++ /dev/null @@ -1 +0,0 @@ -threads:on \ No newline at end of file