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}