Use helper struct to reduce template parameters
This commit is contained in:
parent
dbbbdad3fa
commit
d4248df45a
22
src/lib.rs
22
src/lib.rs
@ -24,7 +24,7 @@ use crate::{
|
||||
error::{Error, Result},
|
||||
service::{Bitbucket, FormService, GitHub, Gitlab, Service, Sourcehut},
|
||||
statics::{CLIENT, CSS, FAVICON, VERSION_INFO},
|
||||
template::RepoInfo,
|
||||
template::{RepoGeneratorInfo, RepoInfo},
|
||||
};
|
||||
use actix_web::{
|
||||
dev::Server,
|
||||
@ -438,21 +438,23 @@ async fn generate(
|
||||
state: web::Data<State>,
|
||||
repo_count: web::Data<AtomicUsize>,
|
||||
) -> Result<HttpResponse> {
|
||||
let repo = format!("{}/{}", params.user, params.repo);
|
||||
let mut buf = Vec::new();
|
||||
let repo_info = RepoGeneratorInfo {
|
||||
service: params.service,
|
||||
user: ¶ms.user,
|
||||
repo: ¶ms.repo,
|
||||
branch: params
|
||||
.branch
|
||||
.as_deref()
|
||||
.filter(|s| !s.is_empty())
|
||||
.unwrap_or("master"),
|
||||
};
|
||||
templates::generate(
|
||||
&mut buf,
|
||||
VERSION_INFO,
|
||||
repo_count.load(Ordering::Relaxed),
|
||||
&state.settings.base_url,
|
||||
params.service.url(),
|
||||
params.service.service(),
|
||||
&repo,
|
||||
params
|
||||
.branch
|
||||
.as_deref()
|
||||
.filter(|s| !s.is_empty())
|
||||
.unwrap_or("master"),
|
||||
&repo_info,
|
||||
)?;
|
||||
|
||||
Ok(HttpResponse::Ok().content_type("text/html").body(buf))
|
||||
|
@ -28,8 +28,8 @@ pub(crate) trait Service: Sized + 'static {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Serialize)]
|
||||
pub(crate) enum FormService {
|
||||
#[derive(Deserialize, Serialize, Clone, Copy)]
|
||||
pub enum FormService {
|
||||
#[serde(rename = "github")]
|
||||
GitHub,
|
||||
#[serde(rename = "gitlab")]
|
||||
|
@ -1,3 +1,5 @@
|
||||
use crate::service::FormService;
|
||||
|
||||
pub struct RepoInfo<'a> {
|
||||
pub commit_url: &'a str,
|
||||
pub commits: u64,
|
||||
@ -9,3 +11,10 @@ pub struct RepoInfo<'a> {
|
||||
pub url: &'a str,
|
||||
pub branch: &'a str,
|
||||
}
|
||||
|
||||
pub struct RepoGeneratorInfo<'a> {
|
||||
pub service: FormService,
|
||||
pub user: &'a str,
|
||||
pub repo: &'a str,
|
||||
pub branch: &'a str,
|
||||
}
|
||||
|
@ -1,16 +1,16 @@
|
||||
@use super::base;
|
||||
@use crate::statics::VersionInfo;
|
||||
@use crate::{statics::VersionInfo, template::RepoGeneratorInfo};
|
||||
|
||||
@(version_info: VersionInfo, repo_count: usize, base_url: &str, url: &str, service: &str, path: &str, branch: &str)
|
||||
@(version_info: VersionInfo, repo_count: usize, base_url: &str, repo_info: &RepoGeneratorInfo)
|
||||
|
||||
@:base("Hits-of-Code Badges", "Badge Generator", {
|
||||
|
||||
<p>
|
||||
Here is the markdown for the badge for <a href="https://@url/@path">@url/@path</a>
|
||||
Here is the markdown for the badge for <a href="https://@repo_info.service.url()/@repo_info.user/@repo_info.repo">@repo_info.user/@repo_info.repo</a>
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
[![Hits-of-Code](@base_url/@service/@path?branch=@branch)](@base_url/@service/@path/view?branch=@branch)
|
||||
[![Hits-of-Code](@base_url/@repo_info.service.service()/@repo_info.user/@repo_info.repo?branch=@repo_info.branch)](@base_url/@repo_info.service.service()/@repo_info.user/@repo_info.repo/view?branch=@repo_info.branch)
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
@ -18,6 +18,6 @@ It will be rendered like this
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
<a href="@base_url/@service/@path/view?branch=@branch"><img src="@base_url/@service/@path?branch=@branch" alt="example badge" /></a>
|
||||
<a href="@base_url/@repo_info.service.service()/@repo_info.user/@repo_info.repo/view?branch=@repo_info.branch"><img src="@base_url/@repo_info.service.service()/@repo_info.user/@repo_info.repo?branch=@repo_info.branch" alt="example badge" /></a>
|
||||
</pre>
|
||||
}, version_info, repo_count)
|
||||
|
Loading…
Reference in New Issue
Block a user