feat(server): allow configuring the content type for landing page (#48)

* Allow user configuration of content type

* style(format): apply formatting

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
This commit is contained in:
Chris Jones 2023-05-27 18:16:46 -04:00 committed by GitHub
parent 8e22d4b71a
commit 9d153ad907
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 11 additions and 1 deletions

View File

@ -31,6 +31,7 @@ changed this.
Check out the GitHub repository at https://github.com/orhun/rustypaste
Command line tool is available at https://github.com/orhun/rustypaste-cli
"""
landing_page_content_type = "text/plain; charset=utf-8"
[paste]
random_url = { enabled = true, type = "petname", words = 2, separator = "-" }

View File

@ -3,6 +3,7 @@ address="127.0.0.1:8000"
max_content_length="10MB"
upload_path="./upload"
landing_page="awesome_landing"
landing_page_content_type = "text/plain; charset=utf-8"
[paste]
random_url = { enabled = false, type = "petname", words = 2, separator = "-" }

View File

@ -29,6 +29,7 @@ If you liked this, consider supporting me: https://donate.orhun.dev <3
🦀
"""
landing_page_content_type = "text/plain; charset=utf-8"
[paste]
# random_url = { enabled = true, type = "petname", words = 2, separator = "-" }

View File

@ -45,6 +45,8 @@ pub struct ServerConfig {
pub auth_token: Option<String>,
/// Landing page text.
pub landing_page: Option<String>,
/// Landing page content-type
pub landing_page_content_type: Option<String>,
/// Expose version.
pub expose_version: Option<bool>,
}

View File

@ -24,9 +24,14 @@ async fn index(config: web::Data<RwLock<Config>>) -> Result<HttpResponse, Error>
let config = config
.read()
.map_err(|_| error::ErrorInternalServerError("cannot acquire config"))?;
let content_type = config
.server
.landing_page_content_type
.clone()
.unwrap_or("text/plain; charset=utf-8".to_string());
match &config.server.landing_page {
Some(page) => Ok(HttpResponse::Ok()
.content_type("text/plain; charset=\"UTF-8\"")
.content_type(content_type)
.body(page.clone())),
None => Ok(HttpResponse::Found()
.append_header(("Location", env!("CARGO_PKG_HOMEPAGE")))