5d3ed62702bda8eba79f38790a0a5773afddde4e
[platform/upstream/iotivity.git] / service / simulator / ramlparser / raml / model / Response.h
1 /******************************************************************\r
2  *\r
3  * Copyright 2015 Samsung Electronics All Rights Reserved.\r
4  *\r
5  *\r
6  *\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  *\r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  *\r
19  ******************************************************************/\r
20 \r
21 /**\r
22  * @file   Response.h\r
23  *\r
24  * @brief   This file provides data Model for RAML Response.\r
25  */\r
26 \r
27 #ifndef RESPONSE_H\r
28 #define RESPONSE_H\r
29 \r
30 #include <map>\r
31 #include <list>\r
32 #include <string>\r
33 #include "RequestResponseBody.h"\r
34 #include "Header.h"\r
35 #include "Utils.h"\r
36 #include "IncludeResolver.h"\r
37 \r
38 namespace RAML\r
39 {\r
40     /**\r
41      * @class   Response\r
42      * @brief   This class provides data Model for RAML Response.\r
43      */\r
44     class Response\r
45     {\r
46         public:\r
47             /**\r
48                  * This method is for getting Headers from Response.\r
49                  *\r
50                  * @return map of headerName and Pointer to Header.\r
51                  */\r
52             virtual std::map<std::string, HeaderPtr> const &getHeaders() const;\r
53 \r
54             /**\r
55                  * This method is for setting Header to Response.\r
56                  *\r
57                  * @param headerName - header Name\r
58                  * @param header - pointer to Header Object.\r
59                  */\r
60             virtual void setHeader(const std::string &headerName, const HeaderPtr &header);\r
61 \r
62             /**\r
63                  * This method is for getting Description from Response.\r
64                  *\r
65                  * @return Description string.\r
66                  */\r
67             virtual std::string getDescription() const;\r
68 \r
69             /**\r
70                  * This method is for setting Description to Response.\r
71                  *\r
72                  * @param description - description string\r
73                  */\r
74             virtual void setDescription(const std::string &description);\r
75 \r
76             /**\r
77                  * This method is for setting ResponseBody to Response.\r
78                  *\r
79                  * @param typeName - response body typeName\r
80                  */\r
81             virtual void setResponseBody(const std::string &typeName);\r
82 \r
83             /**\r
84                  * This method is for setting ResponseBody to Response.\r
85                  *\r
86                  * @param type - response body typeName\r
87                  * @param body - Pointer to RequestResponseBody\r
88                  */\r
89             virtual void setResponseBody(const std::string &type, const RequestResponseBodyPtr &body) ;\r
90 \r
91             /**\r
92                  * This method is for getting ResponseBody from Response.\r
93                  *\r
94                  * @return map of body type and Pointer to RequestResponseBody.\r
95                  */\r
96             virtual std::map<std::string, RequestResponseBodyPtr> const &getResponseBody() const;\r
97 \r
98             /**\r
99                  * This method is for getting ResponseBody from Response.\r
100                  *\r
101                  * @param bodyType - response body type\r
102                  *\r
103                  * @return  Pointer to RequestResponseBody.\r
104                  */\r
105             virtual RequestResponseBodyPtr getResponseBody(const std::string &bodyType);\r
106 \r
107             /**\r
108                   * Constructor of Response.\r
109                   */\r
110             Response() : m_includeResolver(NULL) {}\r
111 \r
112             /**\r
113                    * Constructor of Response.\r
114                    *\r
115                    * @param yamlNode - Reference to YamlNode for reading the Response\r
116                    * @param includeResolver - Reference to IncludeResolver for reading external files\r
117                    *\r
118                    */\r
119             Response(const YAML::Node &yamlNode,\r
120                      const IncludeResolverPtr &includeResolver): m_includeResolver(includeResolver)\r
121             { readResponse(yamlNode);}\r
122         private:\r
123             void readResponse(const YAML::Node &yamlNode) ;\r
124         private:\r
125             std::string m_description;\r
126             std::map<std::string, RequestResponseBodyPtr> m_responseBody;\r
127             std::map<std::string, HeaderPtr> m_headers;\r
128             IncludeResolverPtr m_includeResolver;\r
129     };\r
130 \r
131     /** ResponsePtr - shared Ptr to Response.*/\r
132     typedef std::shared_ptr<Response> ResponsePtr;\r
133 }\r
134 #endif\r