1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use super::*;

pub type CibouletteBodyDataBuilder<'request> =
    CibouletteOptionalData<CibouletteResourceSelectorBuilder<'request>>;

pub type CibouletteBodyData<'request, I, B> =
    CibouletteOptionalData<CibouletteResourceSelector<'request, B, I>>;

pub type CibouletteBodyDataPermissive<'request> = CibouletteResourceSelector<
    'request,
    CibouletteResourceIdentifierPermissive<'request>,
    MessyJsonObjectValue<'request>,
>;

// CibouletteResourceSelector<'request, CibouletteResourceIdentifierPermissive<'request>>

impl<'request> CibouletteBodyDataBuilder<'request> {
    pub fn build(
        self,
        bag: &CibouletteStore,
        intention: &CibouletteIntention,
    ) -> Result<
        CibouletteBodyData<
            'request,
            CibouletteResourceIdentifierPermissive<'request>,
            MessyJsonObjectValue<'request>,
        >,
        CibouletteError,
    > {
        match self {
            CibouletteBodyDataBuilder::Object(x) => {
                Ok(CibouletteBodyData::Object(x.build(bag, intention)?))
            }
            CibouletteBodyDataBuilder::Null(x) => Ok(CibouletteBodyData::Null(x)),
        }
    }
}