c3c537c1690385852ca37b0f1a7dd2cd5ad09da7
[platform/upstream/iotivity.git] / service / simulator / ramlparser / raml / model / Raml.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 #ifndef RAML_H\r
22 #define RAML_H\r
23 \r
24 #include <map>\r
25 #include <list>\r
26 #include <string>\r
27 #include "AbstractParam.h"\r
28 #include "UriParameter.h"\r
29 #include "QueryParameter.h"\r
30 #include "FormParameter.h"\r
31 #include "Header.h"\r
32 \r
33 #include "RequestResponseBody.h"\r
34 #include "RamlResource.h"\r
35 #include "ActionType.h"\r
36 #include "Action.h"\r
37 #include "Response.h"\r
38 #include "Schema.h"\r
39 #include "IncludeResolver.h"\r
40 \r
41 #include "DocumentationItem.h"\r
42 #include "yaml-cpp/yaml.h"\r
43 #include "Utils.h"\r
44 #include "cJSON.h"\r
45 \r
46 \r
47 namespace RAML\r
48 {\r
49     class Raml\r
50     {\r
51         public:\r
52             virtual std::string getTitle() const;\r
53             virtual void setTitle(const std::string &title);\r
54 \r
55             virtual std::string getVersion() const;\r
56             virtual void setVersion(const std::string &version);\r
57 \r
58             virtual std::string getBaseUri() const;\r
59             virtual void setBaseUri(const std::string &baseUri);\r
60 \r
61             virtual std::list<std::string> getProtocols() const;\r
62             virtual void setProtocol(const std::string &protocol);\r
63 \r
64 \r
65             virtual std::map<std::string, UriParameter> getBaseUriParameters() const;\r
66             virtual void setBaseUriParameter(const std::string &paramName, const UriParameter &uriParameter);\r
67 \r
68             virtual std::string getMediaType() const;\r
69             virtual void setMediaType(const std::string &mediaType);\r
70 \r
71             virtual std::list<std::pair<std::string, Schema> > getSchemas() const;\r
72             virtual void setSchema(const std::pair<std::string, Schema> &schema);\r
73 \r
74             virtual std::list<std::pair<std::string, RamlResource> > getResourceTypes() const;\r
75             virtual void setResourceType(const std::pair<std::string, RamlResource> &resourceType);\r
76 \r
77             virtual std::list<std::pair<std::string, Action> > getTraits() const;\r
78             virtual void setTrait(const std::pair<std::string, Action> &trait);\r
79 \r
80             virtual RamlResource &getResource(std::string resourceName);\r
81             virtual std::map<std::string, RamlResource> getResources() const;\r
82             virtual void setResource(const std::string &resourceKey, const RamlResource &resource);\r
83 \r
84             virtual void setDocumentationItem(const DocumentationItem &documentationItem);\r
85             virtual std::list<DocumentationItem> getDocumentation() const;\r
86 \r
87             void readRamlFromYaml(const YAML::Node &yamlNode);\r
88             Raml() : m_includeResolver(new IncludeResolver()) {}\r
89             Raml(std::string &resourceLocation) : m_includeResolver(new IncludeResolver(resourceLocation)) {}\r
90         private:\r
91             std::string m_title;\r
92             std::string m_version;\r
93             std::string m_baseUri;\r
94             std::list<std::string> m_protocols;\r
95             std::map<std::string, UriParameter> m_baseUriParameters;\r
96             std::string m_mediaType;\r
97             std::list <std::pair<std::string, Schema> > m_schemas;\r
98             std::list <std::pair<std::string, RamlResource> > m_resourceTypes;\r
99             std::list <std::pair<std::string, Action> > m_traits;\r
100             std::map<std::string, RamlResource> m_resources;\r
101             std::list<DocumentationItem> m_documentation;\r
102             IncludeResolver *m_includeResolver;\r
103     };\r
104 \r
105     typedef std::shared_ptr<Raml> RamlPtr;\r
106 \r
107 }\r
108 #endif\r