Compare commits

...

35 Commits

Author SHA1 Message Date
f2436efc85 Bump version (v0.21.0)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-01-30 00:23:41 +01:00
80a6cf0036 Merge pull request #409 from vbrandl/chore/dependencies
All checks were successful
continuous-integration/drone/push Build is passing
Update `serde_derive` and `tokio`
2022-01-30 00:17:56 +01:00
a0ec86e756 Update serde_derive and tokio
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-30 00:12:11 +01:00
d91e6bf580 Merge pull request #408 from vbrandl/feature/service-registration
All checks were successful
continuous-integration/drone/push Build is passing
Unify registration of service routes
2022-01-29 21:29:06 +01:00
f3e1d914c5 Register routes per service
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-29 21:19:38 +01:00
e282316769 Update transitive dependencies 2022-01-29 21:18:50 +01:00
9742900eb6 Update beta dependencies 2022-01-29 21:18:39 +01:00
45a582dcdd Merge pull request #407 from vbrandl/dependabot/cargo/vergen-6.0.2
Some checks failed
continuous-integration/drone/push Build is failing
Bump vergen from 6.0.1 to 6.0.2
2022-01-28 14:34:35 +01:00
b5a8500e0c Merge pull request #406 from vbrandl/dependabot/cargo/tokio-1.16.0
Bump tokio from 1.15.0 to 1.16.0
2022-01-28 14:34:26 +01:00
87f70285c6 Bump vergen from 6.0.1 to 6.0.2
Bumps [vergen](https://github.com/rustyhorde/vergen) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/rustyhorde/vergen/releases)
- [Commits](https://github.com/rustyhorde/vergen/compare/6.0.1...6.0.2)

---
updated-dependencies:
- dependency-name: vergen
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-28 04:17:09 +00:00
b76d50554c Bump tokio from 1.15.0 to 1.16.0
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.15.0 to 1.16.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.15.0...tokio-1.16.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-28 04:16:56 +00:00
d9bd880d51 Merge pull request #401 from vbrandl/dependabot/cargo/serde_json-1.0.78
Some checks failed
continuous-integration/drone/push Build is failing
Bump serde_json from 1.0.74 to 1.0.78
2022-01-26 19:11:49 +01:00
f13b823717 Merge pull request #405 from vbrandl/dependabot/cargo/serde-1.0.136
Bump serde from 1.0.133 to 1.0.136
2022-01-26 19:11:36 +01:00
2b69a6ee8c Merge pull request #403 from vbrandl/dependabot/cargo/vergen-6.0.1
Bump vergen from 6.0.0 to 6.0.1
2022-01-26 19:11:11 +01:00
e083a091c3 Merge pull request #404 from vbrandl/dependabot/cargo/tracing-subscriber-0.3.7
Bump tracing-subscriber from 0.3.5 to 0.3.7
2022-01-26 19:10:52 +01:00
ebd0c7df7d Merge pull request #400 from vbrandl/dependabot/cargo/tracing-bunyan-formatter-0.3.2
Bump tracing-bunyan-formatter from 0.3.1 to 0.3.2
2022-01-26 19:10:19 +01:00
be2825ad1f Bump serde from 1.0.133 to 1.0.136
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.133 to 1.0.136.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.133...v1.0.136)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-26 04:15:49 +00:00
78a640f972 Bump tracing-subscriber from 0.3.5 to 0.3.7
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.5 to 0.3.7.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.5...tracing-subscriber-0.3.7)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-26 04:15:42 +00:00
214e9b6a50 Bump vergen from 6.0.0 to 6.0.1
Bumps [vergen](https://github.com/rustyhorde/vergen) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/rustyhorde/vergen/releases)
- [Commits](https://github.com/rustyhorde/vergen/compare/6.0.0...6.0.1)

---
updated-dependencies:
- dependency-name: vergen
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-25 04:15:17 +00:00
878b5a5565 Bump serde_json from 1.0.74 to 1.0.78
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.74 to 1.0.78.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.74...v1.0.78)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-24 04:15:11 +00:00
ab18c03983 Bump tracing-bunyan-formatter from 0.3.1 to 0.3.2
Bumps [tracing-bunyan-formatter](https://github.com/LukeMathWalker/tracing-bunyan-formatter) from 0.3.1 to 0.3.2.
- [Release notes](https://github.com/LukeMathWalker/tracing-bunyan-formatter/releases)
- [Commits](https://github.com/LukeMathWalker/tracing-bunyan-formatter/compare/v0.3.1...v0.3.2)

---
updated-dependencies:
- dependency-name: tracing-bunyan-formatter
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-17 04:17:42 +00:00
7a7a93ff75 Merge pull request #397 from vbrandl/dependabot/cargo/openssl-probe-0.1.5
All checks were successful
continuous-integration/drone/push Build is passing
Bump openssl-probe from 0.1.4 to 0.1.5
2022-01-13 21:01:26 +01:00
78fb8d9b83 Merge pull request #396 from vbrandl/dependabot/cargo/actix-rt-2.6.0
Bump actix-rt from 2.5.1 to 2.6.0
2022-01-13 21:00:42 +01:00
e8c9e4ca15 Bump openssl-probe from 0.1.4 to 0.1.5
Bumps [openssl-probe](https://github.com/alexcrichton/openssl-probe) from 0.1.4 to 0.1.5.
- [Release notes](https://github.com/alexcrichton/openssl-probe/releases)
- [Commits](https://github.com/alexcrichton/openssl-probe/compare/0.1.4...0.1.5)

---
updated-dependencies:
- dependency-name: openssl-probe
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-13 04:12:15 +00:00
e1bcde073d Bump actix-rt from 2.5.1 to 2.6.0
Bumps [actix-rt](https://github.com/actix/actix-net) from 2.5.1 to 2.6.0.
- [Release notes](https://github.com/actix/actix-net/releases)
- [Commits](https://github.com/actix/actix-net/compare/rt-v2.5.1...rt-v2.6.0)

---
updated-dependencies:
- dependency-name: actix-rt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-13 04:12:06 +00:00
e57d40e766 Merge pull request #395 from vbrandl/dependabot/cargo/reqwest-0.11.9
All checks were successful
continuous-integration/drone/push Build is passing
Bump reqwest from 0.11.8 to 0.11.9
2022-01-11 12:17:03 +01:00
21f3790aee Merge pull request #394 from vbrandl/dependabot/cargo/tempfile-3.3.0
Bump tempfile from 3.2.0 to 3.3.0
2022-01-11 12:16:55 +01:00
95213c3ded Bump tempfile from 3.2.0 to 3.3.0
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/Stebalien/tempfile/releases)
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/NEWS)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.2.0...v3.3.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-11 11:10:18 +00:00
23b14ea01d Bump reqwest from 0.11.8 to 0.11.9
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.8 to 0.11.9.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.8...v0.11.9)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-11 11:10:15 +00:00
515791beba Merge pull request #393 from vbrandl/dependabot/cargo/serde_json-1.0.74
Bump serde_json from 1.0.73 to 1.0.74
2022-01-11 12:09:22 +01:00
ed380fc28a Merge pull request #392 from vbrandl/dependabot/cargo/actix-rt-2.5.1
Bump actix-rt from 2.5.0 to 2.5.1
2022-01-11 12:09:06 +01:00
6504159899 Merge pull request #391 from vbrandl/dependabot/cargo/serde-1.0.133
Bump serde from 1.0.132 to 1.0.133
2022-01-11 12:08:50 +01:00
4269140af5 Bump serde_json from 1.0.73 to 1.0.74
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.73 to 1.0.74.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.73...v1.0.74)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-03 04:18:47 +00:00
204ba89613 Bump actix-rt from 2.5.0 to 2.5.1
Bumps [actix-rt](https://github.com/actix/actix-net) from 2.5.0 to 2.5.1.
- [Release notes](https://github.com/actix/actix-net/releases)
- [Commits](https://github.com/actix/actix-net/compare/rt-v2.5.0...rt-v2.5.1)

---
updated-dependencies:
- dependency-name: actix-rt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-03 04:18:39 +00:00
80861a3682 Bump serde from 1.0.132 to 1.0.133
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.132 to 1.0.133.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.132...v1.0.133)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-03 04:18:21 +00:00
4 changed files with 355 additions and 477 deletions

736
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
[package] [package]
name = "hoc" name = "hoc"
version = "0.20.4" version = "0.21.0"
authors = ["Valentin Brandl <vbrandl@riseup.net>"] authors = ["Valentin Brandl <vbrandl@riseup.net>"]
edition = "2018" edition = "2018"
build = "build.rs" build = "build.rs"
@ -13,8 +13,8 @@ path = "src/main.rs"
name = "hoc" name = "hoc"
[dependencies] [dependencies]
actix-rt = "2.5.0" actix-rt = "2.6.0"
actix-web = "4.0.0-beta.8" actix-web = "4.0.0-beta.21"
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.11.0", features = ["toml"] }
@ -23,24 +23,24 @@ futures = "0.3.19"
git2 = "0.13.25" git2 = "0.13.25"
lazy_static = "1.4.0" lazy_static = "1.4.0"
number_prefix = "0.4.0" number_prefix = "0.4.0"
openssl-probe = "0.1.4" openssl-probe = "0.1.5"
reqwest = "0.11.8" reqwest = "0.11.9"
serde = "1.0.132" serde = "1.0.136"
serde_derive = "1.0.130" serde_derive = "1.0.136"
serde_json = "1.0.73" serde_json = "1.0.78"
tracing = "0.1.29" tracing = "0.1.29"
tracing-actix-web = "0.5.0-beta.1" tracing-actix-web = "0.5.0-beta.11"
tracing-bunyan-formatter = "0.3.1" 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.5", features = ["registry", "env-filter"] } tracing-subscriber = { version = "0.3.7", features = ["registry", "env-filter"] }
[build-dependencies] [build-dependencies]
ructe = "0.13.4" ructe = "0.13.4"
vergen = { version = "6.0.0", default-features = false, features = ["git"] } vergen = { version = "6.0.2", default-features = false, features = ["git"] }
[dev-dependencies] [dev-dependencies]
awc = "3.0.0-beta.10" awc = "3.0.0-beta.19"
ructe = "0.13.4" ructe = "0.13.4"
tempfile = "3.2.0" tempfile = "3.3.0"
tokio = "1.15.0" tokio = "1.16.1"

View File

@ -477,7 +477,7 @@ async fn start_server(listener: TcpListener, settings: Settings) -> std::io::Res
web::Data::new(AtomicUsize::new(count::count_repositories(&settings.repodir).unwrap())); web::Data::new(AtomicUsize::new(count::count_repositories(&settings.repodir).unwrap()));
let state = web::Data::new(State { settings }); let state = web::Data::new(State { settings });
Ok(HttpServer::new(move || { Ok(HttpServer::new(move || {
App::new() let app = App::new()
.app_data(state.clone()) .app_data(state.clone())
.app_data(repo_count.clone()) .app_data(repo_count.clone())
.wrap(tracing_actix_web::TracingLogger::default()) .wrap(tracing_actix_web::TracingLogger::default())
@ -487,38 +487,12 @@ async fn start_server(listener: TcpListener, settings: Settings) -> std::io::Res
.service(web::resource("/tacit-css.min.css").route(web::get().to(css))) .service(web::resource("/tacit-css.min.css").route(web::get().to(css)))
.service(web::resource("/favicon.ico").route(web::get().to(favicon32))) .service(web::resource("/favicon.ico").route(web::get().to(favicon32)))
.service(generate) .service(generate)
.service(web::resource("/github/{user}/{repo}").to(calculate_hoc::<GitHub>)) .default_service(web::to(async_p404));
.service(web::resource("/gitlab/{user}/{repo}").to(calculate_hoc::<Gitlab>)) let app = GitHub::register_service(app);
.service(web::resource("/bitbucket/{user}/{repo}").to(calculate_hoc::<Bitbucket>)) let app = Gitlab::register_service(app);
.service(web::resource("/sourcehut/{user}/{repo}").to(calculate_hoc::<Sourcehut>)) let app = Bitbucket::register_service(app);
.service( let app = Sourcehut::register_service(app);
web::resource("/github/{user}/{repo}/delete") app
.route(web::post().to(delete_repo_and_cache::<GitHub>)),
)
.service(
web::resource("/gitlab/{user}/{repo}/delete")
.route(web::post().to(delete_repo_and_cache::<Gitlab>)),
)
.service(
web::resource("/bitbucket/{user}/{repo}/delete")
.route(web::post().to(delete_repo_and_cache::<Bitbucket>)),
)
.service(
web::resource("/sourcehut/{user}/{repo}/delete")
.route(web::post().to(delete_repo_and_cache::<Sourcehut>)),
)
.service(web::resource("/github/{user}/{repo}/json").to(json_hoc::<GitHub>))
.service(web::resource("/gitlab/{user}/{repo}/json").to(json_hoc::<Gitlab>))
.service(web::resource("/bitbucket/{user}/{repo}/json").to(json_hoc::<Bitbucket>))
.service(web::resource("/sourcehut/{user}/{repo}/json").to(json_hoc::<Sourcehut>))
.service(web::resource("/view/github/{user}/{repo}").to(overview::<GitHub>))
.service(web::resource("/view/gitlab/{user}/{repo}").to(overview::<Gitlab>))
.service(web::resource("/view/bitbucket/{user}/{repo}").to(overview::<Bitbucket>))
.service(web::resource("/github/{user}/{repo}/view").to(overview::<GitHub>))
.service(web::resource("/gitlab/{user}/{repo}/view").to(overview::<Gitlab>))
.service(web::resource("/bitbucket/{user}/{repo}/view").to(overview::<Bitbucket>))
.service(web::resource("/sourcehut/{user}/{repo}/view").to(overview::<Sourcehut>))
.default_service(web::to(async_p404))
}) })
.workers(workers) .workers(workers)
.listen(listener)? .listen(listener)?

View File

@ -1,7 +1,31 @@
pub(crate) trait Service { use crate::{calculate_hoc, delete_repo_and_cache, json_hoc, overview};
use actix_web::{
dev::{ServiceFactory, ServiceRequest},
web, App,
};
pub(crate) trait Service: Sized + 'static {
fn domain() -> &'static str; fn domain() -> &'static str;
fn url_path() -> &'static str; fn url_path() -> &'static str;
fn commit_url(repo: &str, commit_ref: &str) -> String; fn commit_url(repo: &str, commit_ref: &str) -> String;
fn register_service<T>(app: App<T>) -> App<T>
where
T: ServiceFactory<ServiceRequest, Config = (), Error = actix_web::Error, InitError = ()>,
{
let url_path = Self::url_path();
app.service(
web::resource(format!("/{url_path}/{{user}}/{{repo}}")).to(calculate_hoc::<Self>),
)
.service(
web::resource(format!("/{url_path}/{{user}}/{{repo}}/delete"))
.route(web::post().to(delete_repo_and_cache::<Self>)),
)
.service(web::resource(format!("/{url_path}/{{user}}/{{repo}}/json")).to(json_hoc::<Self>))
.service(web::resource(format!("/view/{url_path}/{{user}}/{{repo}}")).to(overview::<Self>))
.service(web::resource(format!("/{url_path}/{{user}}/{{repo}}/view")).to(overview::<Self>))
}
} }
#[derive(Deserialize, Serialize)] #[derive(Deserialize, Serialize)]