libsip/
macros.rs

1/// Generate a URI domain from an domain name.
2/// ```rust
3/// # #[macro_use]
4/// # extern crate libsip;
5/// # fn main() {
6/// let domain = domain!("example.com");
7/// let domain = domain!("example.com", 5060);
8/// # }
9/// ```
10#[macro_export]
11macro_rules! domain {
12    ($domain:tt) => {
13        libsip::Domain::Domain($domain.into(), None)
14    };
15    ($domain:tt, $port:tt) => {
16        libsip::Domain::Domain($domain.into(), Some($port))
17    };
18}
19
20/// Generate a URI domain from an ip address.
21/// ```rust
22/// # #[macro_use]
23/// # extern crate libsip;
24/// # fn main() {
25/// let domain = ip_domain!(192, 168, 0, 1);
26/// let domain = ip_domain!(192, 168, 0, 1, 5060);
27/// # }
28/// ```
29#[macro_export]
30macro_rules! ip_domain {
31    ($a:tt, $b:tt, $c:tt, $d:tt) => {
32        libsip::Domain::Ipv4(::std::net::Ipv4Addr::new($a, $b, $c, $d), None)
33    };
34
35    ($a:tt, $b:tt, $c:tt, $d:tt, $port:tt) => {
36        libsip::Domain::Ipv4(::std::net::Ipv4Addr::new($a, $b, $c, $d), Some($port))
37    };
38}
39
40/// Generate a URI authentication from credentials.
41/// ```rust
42/// # #[macro_use]
43/// # extern crate libsip;
44/// # fn main() {
45/// let auth = uri_auth!("user");
46/// let auth = uri_auth!("user", "pass");
47/// # }
48/// ```
49#[macro_export]
50macro_rules! uri_auth {
51    ($u:tt) => {
52        libsip::UriAuth::new($u)
53    };
54    ($u:tt, $p:tt) => {
55        libsip::UriAuth::new($u).password($p)
56    };
57}
58
59/// Generate `NamedHeader` from a uri;
60/// ```rust
61/// # #[macro_use]
62/// # extern crate libsip;
63/// # fn main() {
64/// let uri = libsip::Uri::sip(domain!("example.com"));
65/// let domain = named_header!(uri);
66/// # }
67/// ```
68#[macro_export]
69macro_rules! named_header {
70    ($u:tt) => {
71        libsip::NamedHeader {
72            display_name: None,
73            uri: $u,
74            parameters: ::std::collections::HashMap::new(),
75        }
76    };
77    ($u:tt, $name:tt) => {
78        libsip::NamedHeader {
79            display_name: Some($name.into()),
80            uri: $u,
81            parameters: ::std::collections::HashMap::new(),
82        }
83    };
84}
85
86/// Same as `named_header` except for internal use.
87macro_rules! __named_header {
88    ($u:tt) => {
89        crate::NamedHeader {
90            display_name: None,
91            uri: $u,
92            parameters: ::std::collections::HashMap::new(),
93        }
94    };
95}