Compare commits
38 Commits
v0.21.0
...
dependabot
Author | SHA1 | Date | |
---|---|---|---|
84f4aa9be3 | |||
0a518ab331 | |||
5caed6729a | |||
7846872aaa | |||
54e05d5d78 | |||
7c84ae8c0e | |||
256823ff11 | |||
00db6b1718 | |||
f914537eb2 | |||
5f29a3edfa | |||
c4b14164c0 | |||
8f129d9175 | |||
3830d488b8 | |||
7b5ed9ebae | |||
1b504c4557 | |||
7d2a9047c3 | |||
1e5db2ca2a | |||
35e8eac61a | |||
e7553c37d4 | |||
cc6233cb63 | |||
16743bbc26 | |||
ac479aa53d | |||
2ca188a473 | |||
2cf454e559 | |||
690ab9ea07 | |||
8f656f5252 | |||
7a61acf5e2 | |||
171d6f590b | |||
d63aaee2d3 | |||
e453c7aa25 | |||
99d386900e | |||
c2fb288a07 | |||
7a9def97cb | |||
815b213a2a | |||
1e44bc1a8f | |||
2507c24de7 | |||
d78b349ca1 | |||
4b37c8073f |
3
.cargo/audit.toml
Normal file
3
.cargo/audit.toml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[advisories]
|
||||||
|
# TODO: check if chrono fixed this
|
||||||
|
ignore = [ "RUSTSEC-2020-0159", "RUSTSEC-2020-0071" ]
|
698
Cargo.lock
generated
698
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
26
Cargo.toml
26
Cargo.toml
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "hoc"
|
name = "hoc"
|
||||||
version = "0.21.0"
|
version = "0.21.2"
|
||||||
authors = ["Valentin Brandl <vbrandl@riseup.net>"]
|
authors = ["Valentin Brandl <vbrandl@riseup.net>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
@ -14,33 +14,33 @@ name = "hoc"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
actix-rt = "2.6.0"
|
actix-rt = "2.6.0"
|
||||||
actix-web = "4.0.0-beta.21"
|
actix-web = "4.0.0-rc.3"
|
||||||
badge = "0.3.0"
|
badge = "0.3.0"
|
||||||
bytes = "1.1.0"
|
bytes = "1.1.0"
|
||||||
config = { version = "0.11.0", features = ["toml"] }
|
config = { version = "0.12.0", features = ["toml"] }
|
||||||
dotenv = "0.15.0"
|
dotenv = "0.15.0"
|
||||||
futures = "0.3.19"
|
futures = "0.3.21"
|
||||||
git2 = "0.13.25"
|
git2 = "0.14.0"
|
||||||
lazy_static = "1.4.0"
|
lazy_static = "1.4.0"
|
||||||
number_prefix = "0.4.0"
|
number_prefix = "0.4.0"
|
||||||
openssl-probe = "0.1.5"
|
openssl-probe = "0.1.5"
|
||||||
reqwest = "0.11.9"
|
reqwest = "0.11.9"
|
||||||
serde = "1.0.136"
|
serde = "1.0.136"
|
||||||
serde_derive = "1.0.136"
|
serde_derive = "1.0.136"
|
||||||
serde_json = "1.0.78"
|
serde_json = "1.0.79"
|
||||||
tracing = "0.1.29"
|
tracing = "0.1.31"
|
||||||
tracing-actix-web = "0.5.0-beta.11"
|
tracing-actix-web = "0.5.0-rc.3"
|
||||||
tracing-bunyan-formatter = "0.3.2"
|
tracing-bunyan-formatter = "0.3.2"
|
||||||
tracing-futures = "0.2.5"
|
tracing-futures = "0.2.5"
|
||||||
tracing-log = "0.1.2"
|
tracing-log = "0.1.2"
|
||||||
tracing-subscriber = { version = "0.3.7", features = ["registry", "env-filter"] }
|
tracing-subscriber = { version = "0.3.9", features = ["registry", "env-filter"] }
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
ructe = "0.13.4"
|
ructe = "0.14.0"
|
||||||
vergen = { version = "6.0.2", default-features = false, features = ["git"] }
|
vergen = { version = "6.0.2", default-features = false, features = ["git"] }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
awc = "3.0.0-beta.19"
|
awc = "3.0.0-beta.21"
|
||||||
ructe = "0.13.4"
|
ructe = "0.14.0"
|
||||||
tempfile = "3.3.0"
|
tempfile = "3.3.0"
|
||||||
tokio = "1.16.1"
|
tokio = "1.17.0"
|
||||||
|
9
build.rs
9
build.rs
@ -1,15 +1,12 @@
|
|||||||
extern crate ructe;
|
extern crate ructe;
|
||||||
extern crate vergen;
|
extern crate vergen;
|
||||||
|
|
||||||
use ructe::Ructe;
|
use ructe::{Ructe, RucteError};
|
||||||
use vergen::{vergen, Config, ShaKind};
|
use vergen::{vergen, Config, ShaKind};
|
||||||
|
|
||||||
fn main() {
|
fn main() -> Result<(), RucteError> {
|
||||||
let mut config = Config::default();
|
let mut config = Config::default();
|
||||||
*config.git_mut().sha_kind_mut() = ShaKind::Short;
|
*config.git_mut().sha_kind_mut() = ShaKind::Short;
|
||||||
vergen(config).expect("Unable to generate static repo info");
|
vergen(config).expect("Unable to generate static repo info");
|
||||||
Ructe::from_env()
|
Ructe::from_env()?.compile_templates("templates")
|
||||||
.expect("ructe")
|
|
||||||
.compile_templates("templates")
|
|
||||||
.unwrap();
|
|
||||||
}
|
}
|
||||||
|
@ -18,21 +18,16 @@ pub struct Settings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Settings {
|
impl Settings {
|
||||||
#[deprecated]
|
|
||||||
pub fn new() -> Result<Self, ConfigError> {
|
|
||||||
Self::load()
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn load() -> Result<Self, ConfigError> {
|
pub fn load() -> Result<Self, ConfigError> {
|
||||||
let mut config = Config::new();
|
Config::builder()
|
||||||
config
|
.add_source(File::with_name("hoc.toml").required(false))
|
||||||
.merge(File::with_name("hoc.toml").required(false))?
|
.add_source(Environment::with_prefix("hoc"))
|
||||||
.merge(Environment::with_prefix("hoc"))?
|
|
||||||
.set_default("repodir", "./repos")?
|
.set_default("repodir", "./repos")?
|
||||||
.set_default("cachedir", "./cache")?
|
.set_default("cachedir", "./cache")?
|
||||||
.set_default("workers", 4)?
|
.set_default("workers", 4)?
|
||||||
.set_default("port", 8080)?
|
.set_default("port", 8080)?
|
||||||
.set_default("host", "0.0.0.0")?;
|
.set_default("host", "0.0.0.0")?
|
||||||
config.try_into()
|
.build()?
|
||||||
|
.try_deserialize()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
13
src/lib.rs
13
src/lib.rs
@ -462,11 +462,13 @@ async fn async_p404(repo_count: web::Data<AtomicUsize>) -> Result<HttpResponse>
|
|||||||
p404(repo_count)
|
p404(repo_count)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn css() -> HttpResponse {
|
#[get("/tacit-css.min.css")]
|
||||||
|
async fn css() -> HttpResponse {
|
||||||
HttpResponse::Ok().content_type("text/css").body(CSS)
|
HttpResponse::Ok().content_type("text/css").body(CSS)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn favicon32() -> HttpResponse {
|
#[get("/favicon.ico")]
|
||||||
|
async fn favicon32() -> HttpResponse {
|
||||||
HttpResponse::Ok().content_type("image/png").body(FAVICON)
|
HttpResponse::Ok().content_type("image/png").body(FAVICON)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -484,15 +486,14 @@ async fn start_server(listener: TcpListener, settings: Settings) -> std::io::Res
|
|||||||
.wrap(middleware::NormalizePath::new(TrailingSlash::Trim))
|
.wrap(middleware::NormalizePath::new(TrailingSlash::Trim))
|
||||||
.service(index)
|
.service(index)
|
||||||
.service(health_check)
|
.service(health_check)
|
||||||
.service(web::resource("/tacit-css.min.css").route(web::get().to(css)))
|
.service(css)
|
||||||
.service(web::resource("/favicon.ico").route(web::get().to(favicon32)))
|
.service(favicon32)
|
||||||
.service(generate)
|
.service(generate)
|
||||||
.default_service(web::to(async_p404));
|
.default_service(web::to(async_p404));
|
||||||
let app = GitHub::register_service(app);
|
let app = GitHub::register_service(app);
|
||||||
let app = Gitlab::register_service(app);
|
let app = Gitlab::register_service(app);
|
||||||
let app = Bitbucket::register_service(app);
|
let app = Bitbucket::register_service(app);
|
||||||
let app = Sourcehut::register_service(app);
|
Sourcehut::register_service(app)
|
||||||
app
|
|
||||||
})
|
})
|
||||||
.workers(workers)
|
.workers(workers)
|
||||||
.listen(listener)?
|
.listen(listener)?
|
||||||
|
31
tests/resources.rs
Normal file
31
tests/resources.rs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
mod util;
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn favicon() {
|
||||||
|
let test_app = util::spawn_app().await;
|
||||||
|
|
||||||
|
let client = awc::Client::default();
|
||||||
|
|
||||||
|
let response = client
|
||||||
|
.get(&format!("{}/favicon.ico", test_app.address))
|
||||||
|
.send()
|
||||||
|
.await
|
||||||
|
.expect("Failed to execute request");
|
||||||
|
|
||||||
|
assert!(response.status().is_success());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn tacit_css() {
|
||||||
|
let test_app = util::spawn_app().await;
|
||||||
|
|
||||||
|
let client = awc::Client::default();
|
||||||
|
|
||||||
|
let response = client
|
||||||
|
.get(&format!("{}/tacit-css.min.css", test_app.address))
|
||||||
|
.send()
|
||||||
|
.await
|
||||||
|
.expect("Failed to execute request");
|
||||||
|
|
||||||
|
assert!(response.status().is_success());
|
||||||
|
}
|
Reference in New Issue
Block a user