Johann Woelper 7 年之前
父节点
当前提交
69c5ae4cc2
共有 3 个文件被更改,包括 92 次插入58 次删除
  1. 35 23
      src/main.rs
  2. 15 0
      static/err.html
  3. 42 35
      index.html

+ 35 - 23
src/main.rs

@@ -6,54 +6,66 @@
 extern crate rocket_cors;
 
 use std::fs::File;
+use std::path::{Path, PathBuf};
 use std::io::prelude::*;
 use std::sync::Mutex;
 use rocket::http::Method;
 use rocket_cors::{AllowedOrigins, AllowedHeaders};
+use rocket::response::NamedFile;
 
 lazy_static! {
-    static ref OBJECT: Mutex<String> = Mutex::new(String::from("{default}"));
+    static ref OBJECT: Mutex<String> = Mutex::new(String::from("{}"));
 }
 
 
 #[get("/")]
 fn get() -> String {
-    format!("{:?}", *OBJECT.lock().unwrap())
+    let result: &String = &*OBJECT.lock().unwrap();
+    result.clone()
 }
 
-#[get("/")]
-fn test() -> File {
-    let f = std::fs::File::open("index.html").unwrap();
-    f
-}
+
 
 #[get("/<obj>")]
-fn set(obj: String) {
-    println!("{:?}", obj);
+fn set(obj: String) -> String {
+    let parsed = obj;
+    println!("GOT {:?}", parsed);
     let mut data = OBJECT.lock().unwrap();
-    *data = obj;
+    *data = parsed;
+    String::from("ok")
+}
+
+
+#[get("/<file..>")]
+fn static_content(file: PathBuf) -> NamedFile {
+    let f = NamedFile::open(Path::new("static/").join(file));
+    match f {
+        Ok(result) => result,
+        Err(_e) => NamedFile::open("static/err.html").unwrap()
+    }
 }
 
 fn main() {
 
-    let (allowed_origins, failed_origins) = AllowedOrigins::some(&["https://www.acme.com"]);
-    assert!(failed_origins.is_empty());
+    // let (allowed_origins, failed_origins) = AllowedOrigins::some(&["https://www.acme.com"]);
+    // assert!(failed_origins.is_empty());
 
-    // You can also deserialize this
-    let options = rocket_cors::Cors {
-        allowed_origins: allowed_origins,
-        allowed_methods: vec![Method::Get].into_iter().map(From::from).collect(),
-        allowed_headers: AllowedHeaders::some(&["Authorization", "Accept"]),
-        allow_credentials: true,
-        ..Default::default()
-    };
+    // // You can also deserialize this
+    // let options = rocket_cors::Cors {
+    //     allowed_origins: allowed_origins,
+    //     allowed_methods: vec![Method::Get].into_iter().map(From::from).collect(),
+    //     allowed_headers: AllowedHeaders::some(&["Authorization", "Accept"]),
+    //     allow_credentials: true,
+    //     ..Default::default()
+    // };
 
-    let default = rocket_cors::Cors::default();
+    // let default = rocket_cors::Cors::default();
 
     rocket::ignite()
     .mount("/set", routes![set])
     .mount("/get", routes![get])
-    .mount("/test", routes![test])
-    .attach(default)
+    // .mount("/test", routes![test])
+    .mount("/static", routes![static_content])
+    // .attach(default)
     .launch();
 }

+ 15 - 0
static/err.html

@@ -0,0 +1,15 @@
+<!doctype html>
+<head>
+    <meta charset="utf-8" />
+</head>
+
+
+This file has not been found.
+
+
+
+
+
+
+
+

+ 42 - 35
index.html

@@ -3,12 +3,9 @@
 <head>
     <meta charset="utf-8" />
 </head>
-
-<title>Level tool</title>
 <link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.red-blue.min.css" />
 <script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script>
 
-
 <style>
     .entry {
         width: 100%;
@@ -38,63 +35,73 @@
             yo yo yo
             <br> hi {{config}}
             <br>
-            <a onclick="getData()">get</a>
+            <div>
+                <input v-model="config.num_lives"></input>
+            </div>
+            <a onclick="store.getter()">get</a>
             <br>
-            <a onclick="setData()">set</a>
+            <a onclick="store.setter(app.config)">set</a>
+
+
         </div>
     </main>
 </div>
 
 
 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
-<!-- <link href="https://unpkg.com/vue-json-tree@0.3.3/dist/json-tree.css" rel="stylesheet"> -->
-<!-- <script src="https://unpkg.com/vue-json-tree@0.3.3/dist/json-tree.js"></script> -->
 <script>
-    var app = new Vue({
+
+
+
+
+var app = new Vue({
         el: '#app',
         data: {
             config: {
-                released_episode: 80,
-                last_diorama: 50,
-                available_dioramas: 0,
-                first_diorama: 6,
-                github_levels: [],
-                github_episodes: [],
-                github_success: false,
-                github_access_token: "ac4311edd3cc5acf4ccc321525a96a",
+                num_lives: 42,
+                levels: ["Fluff"],
             },
         },
-        mounted: function () {},
+        mounted: function () {
+            // store.object = this.config;
+            // getData();
+        },
         watch: {},
         computed: {
             test: function () {},
         }
     })
 
-
-    function getData() {
-        var xhr = new XMLHttpRequest();
-        var url = "http://localhost:8000/get";
-        xhr.onreadystatechange = function () {
-            if (this.readyState == 4 && this.status == 200) {
-                var response = JSON.parse(JSON.parse(this.responseText));
+var store = {
+    server_url: "http://localhost:8000",
+    target: app.config,
+    setter: function (o) {
+        xhr = new XMLHttpRequest();
+        xhr.open('GET', this.server_url + '/set/' + encodeURIComponent(JSON.stringify(o)));
+        xhr.onload = function () {console.log(xhr.responseText);};
+        xhr.send();
+    },
+    getter: function () {
+        xhr = new XMLHttpRequest();
+        xhr.open('GET', this.server_url + '/get');
+        xhr.onload = function () {
+            var decodedResponse = this.responseText;
+            console.log(decodedResponse);
+            try {
+                var response = JSON.parse(decodedResponse);
                 app.config = response;
             }
+            catch(err) {
+                console.warn("json could not be parsed:", this.responseText);
+            }
+            // return response;
         };
-        xhr.open("GET", url, true);
         xhr.send();
-    }
+    },
+};
+
 
 
-    function setData() {
-        xhr = new XMLHttpRequest();
-        xhr.open('GET', 'http://localhost:8000/set/' + encodeURI(JSON.stringify(app.config)));
-        // xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
-        xhr.onload = function () {
-            console.log(xhr.responseText);
-        };
-        xhr.send();
-    }
 </script>
 <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">