sdp_nom/attributes/
dtls.rs

1//! <https://tools.ietf.org/html/rfc4572>
2
3use nom::{branch::alt, bytes::complete::tag, combinator::map, IResult};
4
5#[cfg(test)]
6use crate::assert_line;
7use crate::parsers::*;
8
9#[derive(Clone, PartialEq, Eq)]
10#[cfg_attr(feature = "debug", derive(Debug))]
11#[cfg_attr(
12    feature = "serde",
13    derive(serde::Serialize, serde::Deserialize),
14    serde(rename_all = "camelCase")
15)]
16#[non_exhaustive]
17pub enum SetupRole {
18    Active,
19    Passive,
20    ActPass,
21}
22
23fn read_setup_role(input: &str) -> IResult<&str, SetupRole> {
24    alt((
25        map(tag("active"), |_| SetupRole::Active),
26        map(tag("passive"), |_| SetupRole::Passive),
27        map(tag("actpass"), |_| SetupRole::ActPass),
28    ))(input)
29}
30
31#[test]
32fn test_setup_role() {
33    assert_line!(read_setup_role, "active", SetupRole::Active);
34    assert_line!(read_setup_role, "passive", SetupRole::Passive);
35}
36
37pub fn setup_role_line(input: &str) -> IResult<&str, SetupRole> {
38    attribute("setup", read_setup_role)(input)
39}
40
41#[test]
42fn test_setup_role_line() {
43    assert_line!(setup_role_line, "a=setup:active", SetupRole::Active, print);
44    assert_line!(
45        setup_role_line,
46        "a=setup:actpass",
47        SetupRole::ActPass,
48        print
49    );
50    assert_line!(
51        setup_role_line,
52        "a=setup:passive",
53        SetupRole::Passive,
54        print
55    );
56}