pub struct ClientConfig {
pub dialog: DialogConfig,
pub from_uri: Option<String>,
pub auto_auth: bool,
pub credentials: Option<Credentials>,
}
Expand description
Client-specific configuration
Extends DialogConfig with client-specific settings including default URI configuration, authentication settings, and client behavior options. Used by DialogClient to configure client-side SIP operations.
§Examples
§Basic Client Setup
use rvoip_dialog_core::api::ClientConfig;
let config = ClientConfig::new("127.0.0.1:0".parse().unwrap())
.with_from_uri("sip:alice@example.com");
assert_eq!(config.from_uri.unwrap(), "sip:alice@example.com");
assert!(!config.auto_auth); // Default disabled
§Client with Authentication
use rvoip_dialog_core::api::ClientConfig;
let config = ClientConfig::new("192.168.1.100:5060".parse().unwrap())
.with_from_uri("sip:user@domain.com")
.with_auth("username", "password");
assert!(config.auto_auth);
assert!(config.credentials.is_some());
assert!(config.validate().is_ok());
Fields§
§dialog: DialogConfig
Base dialog configuration
from_uri: Option<String>
Default from URI for outgoing requests
The URI that will be used in the From header of outgoing requests when not explicitly specified. Should represent the client’s SIP identity (e.g., “sip:alice@example.com”).
auto_auth: bool
Enable automatic authentication
When true, the client automatically handles 401/407 authentication challenges using the configured credentials. When false, authentication challenges are forwarded to the application.
credentials: Option<Credentials>
Default credentials for authentication
Username and password used for automatic authentication when auto_auth is enabled. Should be set when enabling auto_auth.
Implementations§
Source§impl ClientConfig
impl ClientConfig
Sourcepub fn new(local_address: SocketAddr) -> Self
pub fn new(local_address: SocketAddr) -> Self
Create a new client configuration with a local address
Creates a ClientConfig with the specified local address and sensible defaults for client operation.
§Arguments
local_address
- Local address for the client to bind to
§Returns
New ClientConfig with defaults
§Examples
use rvoip_dialog_core::api::ClientConfig;
let config = ClientConfig::new("127.0.0.1:0".parse().unwrap());
assert_eq!(config.dialog.local_address.ip().to_string(), "127.0.0.1");
assert!(!config.auto_auth); // Default disabled
Sourcepub fn with_from_uri(self, from_uri: impl Into<String>) -> Self
pub fn with_from_uri(self, from_uri: impl Into<String>) -> Self
Set the default from URI
Configures the default From header URI for outgoing requests. This should represent the client’s SIP identity.
§Arguments
from_uri
- SIP URI (e.g., “sip:alice@example.com”)
§Returns
Self for method chaining
§Examples
use rvoip_dialog_core::api::ClientConfig;
let config = ClientConfig::new("127.0.0.1:0".parse().unwrap())
.with_from_uri("sip:test@localhost");
assert_eq!(config.from_uri.unwrap(), "sip:test@localhost");
Sourcepub fn with_auth(
self,
username: impl Into<String>,
password: impl Into<String>,
) -> Self
pub fn with_auth( self, username: impl Into<String>, password: impl Into<String>, ) -> Self
Enable automatic authentication with credentials
Configures the client to automatically handle SIP authentication challenges using the provided username and password.
§Arguments
username
- Authentication usernamepassword
- Authentication password
§Returns
Self for method chaining
§Examples
use rvoip_dialog_core::api::ClientConfig;
let config = ClientConfig::new("127.0.0.1:0".parse().unwrap())
.with_auth("user123", "secret456");
assert!(config.auto_auth);
assert!(config.credentials.is_some());
assert_eq!(config.credentials.unwrap().username, "user123");
Sourcepub fn validate(&self) -> Result<(), String>
pub fn validate(&self) -> Result<(), String>
Validate the client configuration
Validates both the client-specific settings and the underlying dialog configuration to ensure everything is properly configured.
§Returns
Ok(()) if valid, Err(message) if invalid
§Examples
use rvoip_dialog_core::api::ClientConfig;
let valid_config = ClientConfig::new("127.0.0.1:0".parse().unwrap())
.with_from_uri("sip:test@example.com");
assert!(valid_config.validate().is_ok());
let mut invalid_config = ClientConfig::new("127.0.0.1:0".parse().unwrap())
.with_auth("user", "pass");
// Note: with_auth() actually sets up credentials properly,
// so this example shows a working auth configuration
assert!(invalid_config.validate().is_ok());
Trait Implementations§
Source§impl Clone for ClientConfig
impl Clone for ClientConfig
Source§fn clone(&self) -> ClientConfig
fn clone(&self) -> ClientConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for ClientConfig
impl Debug for ClientConfig
Source§impl Default for ClientConfig
impl Default for ClientConfig
Source§impl<'de> Deserialize<'de> for ClientConfig
impl<'de> Deserialize<'de> for ClientConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl From<ClientConfig> for DialogManagerConfig
impl From<ClientConfig> for DialogManagerConfig
Source§fn from(client_config: ClientConfig) -> Self
fn from(client_config: ClientConfig) -> Self
Auto Trait Implementations§
impl Freeze for ClientConfig
impl RefUnwindSafe for ClientConfig
impl Send for ClientConfig
impl Sync for ClientConfig
impl Unpin for ClientConfig
impl UnwindSafe for ClientConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> SipJson for Twhere
T: Serialize + DeserializeOwned,
impl<T> SipJson for Twhere
T: Serialize + DeserializeOwned,
Source§fn to_sip_value(&self) -> Result<SipValue, SipJsonError>
fn to_sip_value(&self) -> Result<SipValue, SipJsonError>
Source§fn from_sip_value(value: &SipValue) -> Result<T, SipJsonError>
fn from_sip_value(value: &SipValue) -> Result<T, SipJsonError>
Source§impl<T> SipJsonExt for T
impl<T> SipJsonExt for T
Source§fn path(&self, path: impl AsRef<str>) -> Option<SipValue>
fn path(&self, path: impl AsRef<str>) -> Option<SipValue>
Simple path accessor that returns an Option directly
Source§fn path_str(&self, path: impl AsRef<str>) -> Option<String>
fn path_str(&self, path: impl AsRef<str>) -> Option<String>
Get a string value at the given path
Source§fn path_str_or(&self, path: impl AsRef<str>, default: &str) -> String
fn path_str_or(&self, path: impl AsRef<str>, default: &str) -> String
Get a string value at the given path, or return the default value if not found