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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
use http;

/// Context passed to `Serializer::serialize`
///
/// `SerializerContext` contains context obtained when deriving `Response`.
#[derive(Debug)]
pub struct SerializerContext<'a> {
    request: &'a http::Request<()>,
    resource_mod: Option<&'a str>,
    resource_name: Option<&'a str>,
    handler_name: Option<&'a str>,
    template: Option<&'a str>,
}

impl<'a> SerializerContext<'a> {
    pub(crate) fn new(request: &'a http::Request<()>) -> SerializerContext<'a> {
        SerializerContext {
            request,
            resource_mod: None,
            resource_name: None,
            handler_name: None,
            template: None,
        }
    }

    /// Returns a reference to the original request
    pub fn request(&self) -> &http::Request<()> {
        self.request
    }

    /// Returns the module in which the `impl_web!` was used to implement the resource.
    pub fn resource_mod(&self) -> Option<&str> {
        self.resource_mod
    }

    pub(crate) fn set_resource_mod(&mut self, value: Option<&'a str>) {
        self.resource_mod = value;
    }

    /// Returns the name of the resource handling the request.
    pub fn resource_name(&self) -> Option<&str> {
        self.resource_name
    }

    pub(crate) fn set_resource_name(&mut self, value: Option<&'a str>) {
        self.resource_name = value;
    }

    /// Returns the name of the function handling the request.
    pub fn handler_name(&self) -> Option<&str> {
        self.handler_name
    }

    pub(crate) fn set_handler_name(&mut self, value: Option<&'a str>) {
        self.handler_name = value;
    }

    /// Returns the `template` value set for the response.
    pub fn template(&self) -> Option<&str> {
        self.template
    }

    #[doc(hidden)]
    pub fn set_template(&mut self, value: &'a str) {
        self.template = Some(value);
    }
}