mirror of
https://github.com/yuzu-emu/liftinstall.git
synced 2024-11-25 17:55:46 +01:00
Stub API for starting a installation
This commit is contained in:
parent
9baf44e330
commit
b982383b71
44
Cargo.lock
generated
44
Cargo.lock
generated
@ -165,6 +165,16 @@ dependencies = [
|
|||||||
"tokio-tls 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio-tls 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "idna"
|
||||||
|
version = "0.1.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"unicode-normalization 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "includedir"
|
name = "includedir"
|
||||||
version = "0.2.2"
|
version = "0.2.2"
|
||||||
@ -248,6 +258,11 @@ dependencies = [
|
|||||||
"cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "matches"
|
||||||
|
version = "0.1.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mime"
|
name = "mime"
|
||||||
version = "0.2.6"
|
version = "0.2.6"
|
||||||
@ -688,11 +703,34 @@ dependencies = [
|
|||||||
"version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-bidi"
|
||||||
|
version = "0.3.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-normalization"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-xid"
|
name = "unicode-xid"
|
||||||
version = "0.0.4"
|
version = "0.0.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "url"
|
||||||
|
version = "1.6.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "vcpkg"
|
name = "vcpkg"
|
||||||
version = "0.2.2"
|
version = "0.2.2"
|
||||||
@ -778,6 +816,7 @@ dependencies = [
|
|||||||
"serde_json 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio-core 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio-core 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"web-view 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"web-view 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -804,6 +843,7 @@ dependencies = [
|
|||||||
"checksum httparse 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2f407128745b78abc95c0ffbe4e5d37427fdc0d45470710cfef8c44522a2e37"
|
"checksum httparse 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2f407128745b78abc95c0ffbe4e5d37427fdc0d45470710cfef8c44522a2e37"
|
||||||
"checksum hyper 0.11.15 (registry+https://github.com/rust-lang/crates.io-index)" = "4d6105c5eeb03068b10ff34475a0d166964f98e7b9777cc34b342a225af9b87c"
|
"checksum hyper 0.11.15 (registry+https://github.com/rust-lang/crates.io-index)" = "4d6105c5eeb03068b10ff34475a0d166964f98e7b9777cc34b342a225af9b87c"
|
||||||
"checksum hyper-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c81fa95203e2a6087242c38691a0210f23e9f3f8f944350bd676522132e2985"
|
"checksum hyper-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c81fa95203e2a6087242c38691a0210f23e9f3f8f944350bd676522132e2985"
|
||||||
|
"checksum idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d"
|
||||||
"checksum includedir 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ed470a2a5c0afe4587796a886aa185fcef159feaefd8c4f40d85423aeeec4a3a"
|
"checksum includedir 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ed470a2a5c0afe4587796a886aa185fcef159feaefd8c4f40d85423aeeec4a3a"
|
||||||
"checksum includedir_codegen 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4cb2bb86e79496ab481fc7865ce8c2960cf1eb40cc1411524ce67fce54f3c95e"
|
"checksum includedir_codegen 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4cb2bb86e79496ab481fc7865ce8c2960cf1eb40cc1411524ce67fce54f3c95e"
|
||||||
"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08"
|
"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08"
|
||||||
@ -816,6 +856,7 @@ dependencies = [
|
|||||||
"checksum libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "1e5d97d6708edaa407429faa671b942dc0f2727222fb6b6539bf1db936e4b121"
|
"checksum libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "1e5d97d6708edaa407429faa671b942dc0f2727222fb6b6539bf1db936e4b121"
|
||||||
"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
|
"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
|
||||||
"checksum log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "89f010e843f2b1a31dbd316b3b8d443758bc634bed37aabade59c686d644e0a2"
|
"checksum log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "89f010e843f2b1a31dbd316b3b8d443758bc634bed37aabade59c686d644e0a2"
|
||||||
|
"checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376"
|
||||||
"checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0"
|
"checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0"
|
||||||
"checksum mime 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e2e00e17be181010a91dbfefb01660b17311059dc8c7f48b9017677721e732bd"
|
"checksum mime 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e2e00e17be181010a91dbfefb01660b17311059dc8c7f48b9017677721e732bd"
|
||||||
"checksum mime_guess 1.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "dc7e82a15629bb4ecd9e72365bf33d1382be91e030f820edb8e2a21c02430da8"
|
"checksum mime_guess 1.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "dc7e82a15629bb4ecd9e72365bf33d1382be91e030f820edb8e2a21c02430da8"
|
||||||
@ -867,7 +908,10 @@ dependencies = [
|
|||||||
"checksum toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a7540f4ffc193e0d3c94121edb19b055670d369f77d5804db11ae053a45b6e7e"
|
"checksum toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a7540f4ffc193e0d3c94121edb19b055670d369f77d5804db11ae053a45b6e7e"
|
||||||
"checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33"
|
"checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33"
|
||||||
"checksum unicase 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "284b6d3db520d67fbe88fd778c21510d1b0ba4a551e5d0fbb023d33405f6de8a"
|
"checksum unicase 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "284b6d3db520d67fbe88fd778c21510d1b0ba4a551e5d0fbb023d33405f6de8a"
|
||||||
|
"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
|
||||||
|
"checksum unicode-normalization 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f"
|
||||||
"checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"
|
"checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"
|
||||||
|
"checksum url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa35e768d4daf1d85733418a49fb42e10d7f633e394fccab4ab7aba897053fe2"
|
||||||
"checksum vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b"
|
"checksum vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b"
|
||||||
"checksum version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6b772017e347561807c1aa192438c5fd74242a670a6cffacc40f2defd1dc069d"
|
"checksum version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6b772017e347561807c1aa192438c5fd74242a670a6cffacc40f2defd1dc069d"
|
||||||
"checksum walkdir 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c66c0b9792f0a765345452775f3adbd28dde9d33f30d13e5dcc5ae17cf6f3780"
|
"checksum walkdir 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c66c0b9792f0a765345452775f3adbd28dde9d33f30d13e5dcc5ae17cf6f3780"
|
||||||
|
@ -11,6 +11,7 @@ hyper-tls = "0.1.2"
|
|||||||
tokio-core = "*"
|
tokio-core = "*"
|
||||||
futures = "*"
|
futures = "*"
|
||||||
mime_guess = "1.8.3"
|
mime_guess = "1.8.3"
|
||||||
|
url = "*"
|
||||||
|
|
||||||
includedir = "0.2.2"
|
includedir = "0.2.2"
|
||||||
phf = "0.7.21"
|
phf = "0.7.21"
|
||||||
|
@ -32,16 +32,15 @@ use installer::InstallerFramework;
|
|||||||
|
|
||||||
use rest::WebServer;
|
use rest::WebServer;
|
||||||
|
|
||||||
use sources::types::ReleaseSource;
|
|
||||||
|
|
||||||
// TODO: Fetch this over a HTTP request?
|
// TODO: Fetch this over a HTTP request?
|
||||||
static RAW_CONFIG: &'static str = include_str!("../config.toml");
|
static RAW_CONFIG: &'static str = include_str!("../config.toml");
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let config = Config::from_toml_str(RAW_CONFIG).unwrap();
|
let config = Config::from_toml_str(RAW_CONFIG).unwrap();
|
||||||
|
|
||||||
let github_releases = sources::github::GithubReleases{};
|
/*let github_releases = sources::github::GithubReleases{};
|
||||||
println!("{:?}", github_releases.get_current_releases(&config.packages[0].source.config));
|
println!("{:?}", github_releases.get_current_releases(&config.packages[0].source.config));*/
|
||||||
|
|
||||||
let app_name = config.general.name.clone();
|
let app_name = config.general.name.clone();
|
||||||
|
|
||||||
let framework = InstallerFramework::new(config);
|
let framework = InstallerFramework::new(config);
|
||||||
|
32
src/rest.rs
32
src/rest.rs
@ -4,23 +4,29 @@
|
|||||||
/// as talking to external applications.
|
/// as talking to external applications.
|
||||||
|
|
||||||
extern crate nfd;
|
extern crate nfd;
|
||||||
|
extern crate url;
|
||||||
|
|
||||||
use rest::nfd::Response as NfdResponse;
|
use self::nfd::Response as NfdResponse;
|
||||||
|
|
||||||
use serde_json;
|
use serde_json;
|
||||||
|
|
||||||
|
use futures::Stream;
|
||||||
|
use futures::Future;
|
||||||
use futures::future;
|
use futures::future;
|
||||||
use futures::future::FutureResult;
|
use futures::future::FutureResult;
|
||||||
|
|
||||||
use hyper::{self, Error as HyperError, Get, StatusCode};
|
use hyper::{self, Error as HyperError, Get, Post, StatusCode};
|
||||||
use hyper::header::{ContentLength, ContentType};
|
use hyper::header::{ContentLength, ContentType};
|
||||||
use hyper::server::{Http, Request, Response, Service};
|
use hyper::server::{Http, Request, Response, Service};
|
||||||
|
|
||||||
|
use self::url::form_urlencoded;
|
||||||
|
|
||||||
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
|
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
|
||||||
use std::thread::{self, JoinHandle};
|
use std::thread::{self, JoinHandle};
|
||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::sync::mpsc::channel;
|
use std::sync::mpsc::channel;
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use assets;
|
use assets;
|
||||||
|
|
||||||
@ -90,11 +96,11 @@ impl Service for WebService {
|
|||||||
type Request = Request;
|
type Request = Request;
|
||||||
type Response = Response;
|
type Response = Response;
|
||||||
type Error = hyper::Error;
|
type Error = hyper::Error;
|
||||||
type Future = FutureResult<Self::Response, Self::Error>;
|
type Future = Box<Future<Item = Self::Response, Error = Self::Error>>;
|
||||||
|
|
||||||
/// HTTP request handler
|
/// HTTP request handler
|
||||||
fn call(&self, req: Self::Request) -> Self::Future {
|
fn call(&self, req: Self::Request) -> Self::Future {
|
||||||
future::ok(match (req.method(), req.path()) {
|
Box::new(future::ok(match (req.method(), req.path()) {
|
||||||
// This endpoint should be usable directly from a <script> tag during loading.
|
// This endpoint should be usable directly from a <script> tag during loading.
|
||||||
// TODO: Handle errors
|
// TODO: Handle errors
|
||||||
(&Get, "/api/config") => {
|
(&Get, "/api/config") => {
|
||||||
@ -139,6 +145,22 @@ impl Service for WebService {
|
|||||||
(&Get, "/api/exit") => {
|
(&Get, "/api/exit") => {
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
(&Post, "/api/start-install") => {
|
||||||
|
// We need to bit of pipelining to get this to work
|
||||||
|
return Box::new(req.body().concat2().map(|b| {
|
||||||
|
let results = form_urlencoded::parse(b.as_ref())
|
||||||
|
.into_owned().collect::<HashMap<String, String>>();
|
||||||
|
|
||||||
|
println!("{:?}", results);
|
||||||
|
|
||||||
|
let file = serde_json::to_string(&{}).unwrap();
|
||||||
|
|
||||||
|
Response::<hyper::Body>::new()
|
||||||
|
.with_header(ContentLength(file.len() as u64))
|
||||||
|
.with_header(ContentType::json())
|
||||||
|
.with_body(file)
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
// Static file handler
|
// Static file handler
|
||||||
(&Get, _) => {
|
(&Get, _) => {
|
||||||
@ -164,7 +186,7 @@ impl Service for WebService {
|
|||||||
}
|
}
|
||||||
// Fallthrough for POST/PUT/CONNECT/...
|
// Fallthrough for POST/PUT/CONNECT/...
|
||||||
_ => Response::new().with_status(StatusCode::NotFound),
|
_ => Response::new().with_status(StatusCode::NotFound),
|
||||||
})
|
}))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
<div class="tile is-child">
|
<div class="tile is-child">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<label class="checkbox">
|
<label class="checkbox">
|
||||||
<input type="checkbox" v-bind:checked="package.default" />
|
<input type="checkbox" v-model="package.default" />
|
||||||
{{ package.name }}
|
{{ package.name }}
|
||||||
</label>
|
</label>
|
||||||
<p>
|
<p>
|
||||||
@ -120,13 +120,28 @@
|
|||||||
this.select_packages = false;
|
this.select_packages = false;
|
||||||
this.is_installing = true;
|
this.is_installing = true;
|
||||||
|
|
||||||
setInterval(function() {
|
var results = {};
|
||||||
app.progress += 5;
|
|
||||||
if (app.progress >= 100) {
|
console.log(this.config.packages);
|
||||||
app.is_installing = false;
|
|
||||||
app.is_finished = true;
|
for (var package_index = 0; package_index < this.config.packages.length; package_index++) {
|
||||||
|
var current_package = this.config.packages[package_index];
|
||||||
|
if (current_package.default != null) {
|
||||||
|
results[current_package.name] = current_package.default;
|
||||||
}
|
}
|
||||||
}, 100);
|
}
|
||||||
|
console.log(results);
|
||||||
|
|
||||||
|
ajax("/api/start-install", function(e) {
|
||||||
|
// TODO: Remove fake loading
|
||||||
|
setInterval(function() {
|
||||||
|
app.progress += 5;
|
||||||
|
if (app.progress >= 100) {
|
||||||
|
app.is_installing = false;
|
||||||
|
app.is_finished = true;
|
||||||
|
}
|
||||||
|
}, 100);
|
||||||
|
}, undefined, results);
|
||||||
},
|
},
|
||||||
"exit": function() {
|
"exit": function() {
|
||||||
ajax("/api/exit", function() {});
|
ajax("/api/exit", function() {});
|
||||||
|
Loading…
Reference in New Issue
Block a user