1
0
mirror of https://github.com/actix/actix-extras.git synced 2024-11-27 09:12:57 +01:00

chore(actix-settings): prepare release 0.8.0

This commit is contained in:
Rob Ede 2024-08-07 01:32:49 +01:00
parent 0c0d13be12
commit 50d2fee4e2
No known key found for this signature in database
GPG Key ID: 97C636207D3EF933
5 changed files with 39 additions and 28 deletions

View File

@ -2,14 +2,14 @@
## Unreleased ## Unreleased
- Add new feature named `openssl` for TLS settings using `OpenSSL` dependency. [#380] ## 0.8.0
- Add new function `settings::tls::Tls::get_ssl_acceptor_builder()` to build `openssl::ssl::SslAcceptorBuilder`. [#380]
- Implement TLS logic for `ApplySettings<S>::try_apply_settings()`. [#380]
- Add `openssl` dependency;
- Minimum supported Rust version (MSRV) is now 1.75.
- `ApplySettings<S>::apply_settings()` is deprecated; `ApplySettings<S>::try_apply_settings()` should be preferred. [#380]
[#380]: https://github.com/actix/actix-extras/pull/380 - Add `openssl` crate feature for TLS settings using OpenSSL.
- Add `ApplySettings::try_apply_settings()`.
- Implement TLS logic for `ApplySettings::try_apply_settings()`.
- Add `Tls::get_ssl_acceptor_builder()` function to build `openssl::ssl::SslAcceptorBuilder`.
- Deprecate `ApplySettings::apply_settings()`.
- Minimum supported Rust version (MSRV) is now 1.75.
## 0.7.1 ## 0.7.1

View File

@ -1,6 +1,6 @@
[package] [package]
name = "actix-settings" name = "actix-settings"
version = "0.7.1" version = "0.8.0"
authors = [ authors = [
"Joey Ezechiels <joey.ezechiels@gmail.com>", "Joey Ezechiels <joey.ezechiels@gmail.com>",
"Rob Ede <robjtede@icloud.com>", "Rob Ede <robjtede@icloud.com>",

View File

@ -5,9 +5,9 @@
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
[![crates.io](https://img.shields.io/crates/v/actix-settings?label=latest)](https://crates.io/crates/actix-settings) [![crates.io](https://img.shields.io/crates/v/actix-settings?label=latest)](https://crates.io/crates/actix-settings)
[![Documentation](https://docs.rs/actix-settings/badge.svg?version=0.7.1)](https://docs.rs/actix-settings/0.7.1) [![Documentation](https://docs.rs/actix-settings/badge.svg?version=0.8.0)](https://docs.rs/actix-settings/0.8.0)
![Apache 2.0 or MIT licensed](https://img.shields.io/crates/l/actix-settings) ![Apache 2.0 or MIT licensed](https://img.shields.io/crates/l/actix-settings)
[![Dependency Status](https://deps.rs/crate/actix-settings/0.7.1/status.svg)](https://deps.rs/crate/actix-settings/0.7.1) [![Dependency Status](https://deps.rs/crate/actix-settings/0.8.0/status.svg)](https://deps.rs/crate/actix-settings/0.8.0)
<!-- prettier-ignore-end --> <!-- prettier-ignore-end -->

View File

@ -242,11 +242,26 @@ where
/// Extension trait for applying parsed settings to the server object. /// Extension trait for applying parsed settings to the server object.
pub trait ApplySettings<S>: Sized { pub trait ApplySettings<S>: Sized {
/// Apply some settings object value to `self`. /// Applies some settings object value to `self`.
#[deprecated = "Prefer `try_apply_settings`."] ///
fn apply_settings(self, settings: &S) -> Self; /// The default implementation calls [`try_apply_settings()`].
///
/// # Panics
///
/// May panic if settings are invalid or cannot be applied.
///
/// [`try_apply_settings()`]: ApplySettings::try_apply_settings().
#[deprecated = "Prefer `try_apply_settings()`."]
fn apply_settings(self, settings: &S) -> Self {
self.try_apply_settings(settings)
.expect("Could not apply settings")
}
/// Apply some settings object value to `self`. /// Applies some settings object value to `self`.
///
/// # Errors
///
/// May return error if settings are invalid or cannot be applied.
fn try_apply_settings(self, settings: &S) -> AsResult<Self>; fn try_apply_settings(self, settings: &S) -> AsResult<Self>;
} }

View File

@ -21,35 +21,31 @@ pub struct Tls {
} }
impl Tls { impl Tls {
/// Generates an [`SslAcceptorBuilder`] with its settings. It is often used for the following method /// Returns an [`SslAcceptorBuilder`] with the configured settings.
/// [`actix_web::server::HttpServer::bind_openssl`]. ///
/// The result is often used with [`actix_web::HttpServer::bind_openssl()`].
/// ///
/// # Example /// # Example
/// ```no_run
/// use actix_settings::{ApplySettings, Settings};
/// use actix_web::{get, App, HttpServer, Responder};
/// ///
/// #[get("/")] /// ```no_run
/// async fn index() -> impl Responder { /// use std::io;
/// "Hello." /// use actix_settings::{ApplySettings as _, Settings};
/// } /// use actix_web::{get, web, App, HttpServer, Responder};
/// ///
/// #[actix_web::main] /// #[actix_web::main]
/// async fn main() -> std::io::Result<()> { /// async fn main() -> io::Result<()> {
/// let settings = Settings::from_default_template(); /// let settings = Settings::from_default_template();
/// ///
/// HttpServer::new(|| { /// HttpServer::new(|| {
/// App::new() /// App::new().service(web::to(|| { "Hello, World!" }))
/// .service(index)
/// }) /// })
/// .try_apply_settings(&settings)? /// .try_apply_settings(&settings)?
/// .bind(("127.0.0.1", 8080))? /// .bind(("127.0.0.1", 8080))?
/// .bind_openssl(("127.0.0.1", 8081), settings.actix.tls.get_ssl_acceptor_builder()?)? /// .bind_openssl(("127.0.0.1", 8443), settings.actix.tls.get_ssl_acceptor_builder()?)?
/// .run() /// .run()
/// .await /// .await
/// } /// }
/// ``` /// ```
#[allow(rustdoc::broken_intra_doc_links)]
pub fn get_ssl_acceptor_builder(&self) -> AsResult<SslAcceptorBuilder> { pub fn get_ssl_acceptor_builder(&self) -> AsResult<SslAcceptorBuilder> {
let mut builder = SslAcceptor::mozilla_intermediate(SslMethod::tls())?; let mut builder = SslAcceptor::mozilla_intermediate(SslMethod::tls())?;
builder.set_certificate_chain_file(&self.certificate)?; builder.set_certificate_chain_file(&self.certificate)?;