Skip to main content

SipHeaderAddr

Struct SipHeaderAddr 

Source
#[non_exhaustive]
pub struct SipHeaderAddr { /* private fields */ }
Expand description

A SIP header field value containing a name-addr or addr-spec with header-level parameters (RFC 3261 S20).

Handles the full grammar: (name-addr / addr-spec) *(SEMI generic-param)

Used for SIP headers like From, To, Contact, P-Asserted-Identity, and Refer-To where parameters like ;tag=, ;expires=, and ;serviceurn= follow the URI.

use freeswitch_types::variables::SipHeaderAddr;

let addr: SipHeaderAddr = r#""Alice" <sip:alice@example.com>;tag=abc123"#.parse().unwrap();
assert_eq!(addr.display_name(), Some("Alice"));
assert_eq!(addr.tag(), Some("abc123"));

Display always emits angle brackets around the URI, even for bare addr-spec input. This is the canonical form required by RFC 3261 when header-level parameters are present.

Implementations§

Source§

impl SipHeaderAddr

Source

pub fn new(uri: Uri) -> Self

Create a new SipHeaderAddr with the given URI and no display name or params.

Source

pub fn with_display_name(self, name: impl Into<String>) -> Self

Set the display name.

Source

pub fn with_param( self, key: impl Into<String>, value: Option<impl Into<String>>, ) -> Self

Add a header-level parameter. The key is lowercased on insertion.

Source

pub fn display_name(&self) -> Option<&str>

The display name, if present.

Source

pub fn uri(&self) -> &Uri

The URI.

Source

pub fn sip_uri(&self) -> Option<&SipUri>

If the URI is a SIP/SIPS URI, return a reference to it.

Source

pub fn tel_uri(&self) -> Option<&TelUri>

If the URI is a tel: URI, return a reference to it.

Source

pub fn urn_uri(&self) -> Option<&UrnUri>

If the URI is a URN, return a reference to it.

Source

pub fn params(&self) -> impl Iterator<Item = (&str, Option<&str>)>

Iterator over header-level parameters as (key, value) pairs. Keys are lowercased; values are preserved as-is.

Source

pub fn param(&self, name: &str) -> Option<Option<&str>>

Look up a header-level parameter by name (case-insensitive).

Returns Some(Some(value)) if the param has a value, Some(None) if it is a flag param (no value), None if the param is not present.

Source

pub fn tag(&self) -> Option<&str>

The tag parameter value, if present.

Trait Implementations§

Source§

impl Clone for SipHeaderAddr

Source§

fn clone(&self) -> SipHeaderAddr

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SipHeaderAddr

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for SipHeaderAddr

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl FromStr for SipHeaderAddr

Source§

type Err = ParseSipHeaderAddrError

The associated error which can be returned from parsing.
Source§

fn from_str(input: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl PartialEq for SipHeaderAddr

Source§

fn eq(&self, other: &SipHeaderAddr) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for SipHeaderAddr

Source§

impl StructuralPartialEq for SipHeaderAddr

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.