Compare commits
38 Commits
v0.22.4
...
feature/ru
Author | SHA1 | Date | |
---|---|---|---|
391bb6faeb | |||
c93c83f004 | |||
e82037c23b | |||
ecbc63f522 | |||
315eb514f4 | |||
9139c8f005 | |||
96ded8a0a8 | |||
15692cbb08 | |||
98d80faf3a | |||
a0cb623dc6 | |||
28582e58e0 | |||
e79e1e2634 | |||
097a1affcf | |||
df022f538c | |||
b4327ff28f | |||
38a837bc70 | |||
743fe98d1b | |||
d0e2f21339 | |||
ebe844d305 | |||
c0119ccc97 | |||
6ae96e9b33 | |||
85bd714eb8 | |||
4d63a3cb0b | |||
5d7d06abef | |||
a84885a2ca | |||
ee1de29158 | |||
e48279c6d8 | |||
3df296e542 | |||
a65f8d9d72 | |||
ec04b0a76f | |||
5387265a3e | |||
0379d4bfc0 | |||
7e1b86ace1 | |||
f000dbd27c | |||
3fd245da4a | |||
6f292796a4 | |||
95bc3491ec | |||
9b961032aa |
494
Cargo.lock
generated
494
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
27
Cargo.toml
27
Cargo.toml
@ -16,31 +16,32 @@ name = "hoc"
|
||||
actix-rt = "2.7.0"
|
||||
actix-web = "4.1.0"
|
||||
badge = "0.3.0"
|
||||
bytes = "1.1.0"
|
||||
config = { version = "0.13.1", features = ["toml"] }
|
||||
bytes = "1.2.1"
|
||||
config = { version = "0.13.2", features = ["toml"] }
|
||||
dotenv = "0.15.0"
|
||||
futures = "0.3.21"
|
||||
git2 = "0.14.4"
|
||||
git2 = "0.15.0"
|
||||
lazy_static = "1.4.0"
|
||||
mime = "0.3"
|
||||
number_prefix = "0.4.0"
|
||||
openssl-probe = "0.1.5"
|
||||
reqwest = "0.11.11"
|
||||
serde = "1.0.137"
|
||||
serde_derive = "1.0.136"
|
||||
serde_json = "1.0.81"
|
||||
tracing = "0.1.34"
|
||||
tracing-actix-web = "0.5.1"
|
||||
tracing-bunyan-formatter = "0.3.2"
|
||||
serde = "1.0.143"
|
||||
serde_derive = "1.0.137"
|
||||
serde_json = "1.0.83"
|
||||
tracing = "0.1.36"
|
||||
tracing-actix-web = "0.6.0"
|
||||
tracing-bunyan-formatter = "0.3.3"
|
||||
tracing-futures = "0.2.5"
|
||||
tracing-log = "0.1.3"
|
||||
tracing-subscriber = { version = "0.3.11", features = ["registry", "env-filter"] }
|
||||
tracing-subscriber = { version = "0.3.15", features = ["registry", "env-filter"] }
|
||||
|
||||
[build-dependencies]
|
||||
ructe = "0.14.0"
|
||||
vergen = { version = "7.2.1", default-features = false, features = ["git"] }
|
||||
ructe = { version = "0.14.0", features = ["mime03"] }
|
||||
vergen = { version = "7.3.1", default-features = false, features = ["git"] }
|
||||
|
||||
[dev-dependencies]
|
||||
awc = "3.0.0"
|
||||
ructe = "0.14.0"
|
||||
tempfile = "3.3.0"
|
||||
tokio = "1.19.2"
|
||||
tokio = "1.20.1"
|
||||
|
5
build.rs
5
build.rs
@ -8,5 +8,8 @@ fn main() -> Result<(), RucteError> {
|
||||
let mut config = Config::default();
|
||||
*config.git_mut().sha_kind_mut() = ShaKind::Short;
|
||||
vergen(config).expect("Unable to generate static repo info");
|
||||
Ructe::from_env()?.compile_templates("templates")
|
||||
let mut ructe = Ructe::from_env()?;
|
||||
let mut statics = ructe.statics()?;
|
||||
statics.add_files("static")?;
|
||||
ructe.compile_templates("templates")
|
||||
}
|
||||
|
31
src/lib.rs
31
src/lib.rs
@ -23,7 +23,7 @@ use crate::{
|
||||
config::Settings,
|
||||
error::{Error, Result},
|
||||
service::{Bitbucket, FormService, GitHub, Gitlab, Service, Sourcehut},
|
||||
statics::{CLIENT, CSS, FAVICON, VERSION_INFO},
|
||||
statics::{CLIENT, VERSION_INFO},
|
||||
template::RepoInfo,
|
||||
};
|
||||
use actix_web::{
|
||||
@ -46,6 +46,7 @@ use std::{
|
||||
sync::atomic::Ordering,
|
||||
time::{Duration, SystemTime},
|
||||
};
|
||||
use templates::statics::{self as template_statics, StaticFile};
|
||||
use tracing::Instrument;
|
||||
|
||||
include!(concat!(env!("OUT_DIR"), "/templates.rs"));
|
||||
@ -462,14 +463,32 @@ async fn async_p404(repo_count: web::Data<AtomicUsize>) -> Result<HttpResponse>
|
||||
p404(repo_count)
|
||||
}
|
||||
|
||||
#[get("/tacit-css.min.css")]
|
||||
async fn css() -> HttpResponse {
|
||||
HttpResponse::Ok().content_type("text/css").body(CSS)
|
||||
/// A duration to add to current time for a far expires header.
|
||||
static FAR: Duration = Duration::from_secs(180 * 24 * 60 * 60);
|
||||
|
||||
#[get("/static/{filename}")]
|
||||
async fn static_file(
|
||||
path: web::Path<String>,
|
||||
repo_count: web::Data<AtomicUsize>,
|
||||
) -> Result<HttpResponse> {
|
||||
StaticFile::get(&path)
|
||||
.map(|data| {
|
||||
let far_expires = SystemTime::now() + FAR;
|
||||
HttpResponse::Ok()
|
||||
.insert_header(Expires(far_expires.into()))
|
||||
.content_type(data.mime.clone())
|
||||
.body(data.content)
|
||||
})
|
||||
.map(Result::Ok)
|
||||
.unwrap_or_else(|| p404(repo_count))
|
||||
}
|
||||
|
||||
#[get("/favicon.ico")]
|
||||
async fn favicon32() -> HttpResponse {
|
||||
HttpResponse::Ok().content_type("image/png").body(FAVICON)
|
||||
let data = &template_statics::favicon32_png;
|
||||
HttpResponse::Ok()
|
||||
.content_type(data.mime.clone())
|
||||
.body(data.content)
|
||||
}
|
||||
|
||||
async fn start_server(listener: TcpListener, settings: Settings) -> std::io::Result<Server> {
|
||||
@ -486,7 +505,7 @@ async fn start_server(listener: TcpListener, settings: Settings) -> std::io::Res
|
||||
.wrap(middleware::NormalizePath::new(TrailingSlash::Trim))
|
||||
.service(index)
|
||||
.service(health_check)
|
||||
.service(css)
|
||||
.service(static_file)
|
||||
.service(favicon32)
|
||||
.service(generate)
|
||||
.default_service(web::to(async_p404));
|
||||
|
@ -7,8 +7,6 @@ pub(crate) const VERSION_INFO: VersionInfo = VersionInfo {
|
||||
commit: env!("VERGEN_GIT_SHA_SHORT"),
|
||||
version: env!("CARGO_PKG_VERSION"),
|
||||
};
|
||||
pub(crate) const CSS: &str = include_str!("../static/tacit-css.min.css");
|
||||
pub(crate) const FAVICON: &[u8] = include_bytes!("../static/favicon32.png");
|
||||
|
||||
lazy_static! {
|
||||
pub(crate) static ref CLIENT: reqwest::Client = reqwest::Client::new();
|
||||
|
@ -1,3 +1,4 @@
|
||||
@use super::statics::*;
|
||||
@use crate::statics::VersionInfo;
|
||||
|
||||
@(title: &str, header: &str, content: Content, version_info: VersionInfo, repo_count: usize)
|
||||
@ -9,7 +10,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="keywords" content="Hits-of-Code, GitHub, Badge" />
|
||||
<meta name="description" content="Hits-of-Code Badges for Git repositories" />
|
||||
<link rel="stylesheet" href="/tacit-css.min.css" />
|
||||
<link rel="stylesheet" href="/static/@tacit_css_min_css.name" />
|
||||
<title>@title</title>
|
||||
</head>
|
||||
<body>
|
||||
|
Reference in New Issue
Block a user