diff --git a/.gitignore b/.gitignore index f48931f..ba64415 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,8 @@ # isotope __isotope__ +# argon +argon_modules + movie.mp4 examples/canvas/canvas.json \ No newline at end of file diff --git a/iso-package.json b/argon-package.json similarity index 100% rename from iso-package.json rename to argon-package.json diff --git a/examples/isotope-server/init.ar b/examples/isotope-server/init.ar index ea49705..0852a7a 100644 --- a/examples/isotope-server/init.ar +++ b/examples/isotope-server/init.ar @@ -1,13 +1,21 @@ import "../../src" as http +import "../../src/url" as url let app = http.server() +let files = {'http.ar': path.join([path.parent(program.file.path), "modules", "http.tar.gz"])} + app.use(http.logger) -let zipfile = path.join([path.parent(program.file.path), "test.zip"]) let download(req, res) = do + + let zipfile = files[req.query.name] res.sendFile(zipfile) -app.route("/download", null, download) +app.route("/isotope-download", null, download) + +let search(req, res) = do + res.json({Name: "http.ar", Version: "1.0.0", URL: "http://localhost:3000/isotope-download?"+url.queryStr({name: "http.ar", version: "1.0.0"})}) +app.route("/isotope-search", null, search) app.run() \ No newline at end of file diff --git a/examples/isotope-server/modules/http.tar.gz b/examples/isotope-server/modules/http.tar.gz new file mode 100644 index 0000000..4975b22 Binary files /dev/null and b/examples/isotope-server/modules/http.tar.gz differ diff --git a/examples/isotope-server/test.zip b/examples/isotope-server/test.zip deleted file mode 100644 index 6dbe678..0000000 Binary files a/examples/isotope-server/test.zip and /dev/null differ diff --git a/iso-package-lock.json b/iso-lock.json similarity index 100% rename from iso-package-lock.json rename to iso-lock.json diff --git a/src/init.ar b/src/init.ar index e8ca98a..7f7024f 100644 --- a/src/init.ar +++ b/src/init.ar @@ -4,7 +4,7 @@ import "static" as * import "cookie" as * let server() = do - let class = {port: 3000, numThreads: 10, callback: ()=term.log("Server running on port "+class.port)} + let class = {port: 3000, numThreads: 1, callback: ()=term.log("Server running on port "+class.port)} let threads = [] let routes = [] let Socket = null @@ -13,6 +13,8 @@ let server() = do term.error(e.code) term.error(e.path+" on line "+e.line) class.run() = do + if (Socket != null) do + throwError("Server already running") Socket = socket.server("tcp", class.port) for (i from 0 to class.numThreads) do t = thread(()=listener.listener(Socket, routes, class.onErr)) diff --git a/src/url.ar b/src/url.ar index d31e57c..86878cd 100644 --- a/src/url.ar +++ b/src/url.ar @@ -40,6 +40,13 @@ let split(url) = do query[decode(queryItem[0])] = decode(queryItem[1]) return {path: split[0], query: query} +let queryStr(query) = do + let queryStr = [] + let keys = query.keys() + for (i from 0 to keys.length) do + queryStr.append(encode(keys[i])+"="+encode(query[keys[i]])) + return queryStr.join("&") + let URL(url) = do let protocol = null