1 //******************************************************************
3 // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
24 * This file contains the declaration of classes and its members related to
28 #ifndef __OCRESOURCEREQUEST_H
29 #define __OCRESOURCEREQUEST_H
32 #include "OCRepresentation.h"
34 void formResourceRequest(OCEntityHandlerFlag,
35 OCEntityHandlerRequest*,
36 std::shared_ptr<OC::OCResourceRequest>);
42 * @brief OCResourceRequest provides APIs to extract details from a request URI
44 class OCResourceRequest
47 typedef std::shared_ptr<OCResourceRequest> Ptr;
53 m_requestHandlerFlag{},
55 m_observationInfo{ObserveAction::ObserveRegister, 0},
57 m_requestHandle{nullptr},
58 m_resourceHandle{nullptr}
62 OCResourceRequest(OCResourceRequest&&) = default;
63 OCResourceRequest& operator=(OCResourceRequest&&) = default;
67 virtual ~OCResourceRequest(void)
72 * Retrieves the type of request string for the entity handler function to operate
73 * @return std::string request type. This could be 'GET'/'PUT'/'POST'/'DELETE'
75 std::string getRequestType() const {return m_requestType;}
78 * Retrieves the query parameters from the request
79 * @return std::string query parameters in the request
81 const QueryParamsMap& getQueryParameters() const {return m_queryParameters;}
84 * Retrieves the request handler flag type. This can be either INIT flag or
85 * REQUEST flag or OBSERVE flag.
87 * INIT indicates that the vendor's entity handler should go and perform
88 * initialization operations
89 * REQUEST indicates that it is a request of certain type (GET/PUT/POST/DELETE)
90 * and entity handler needs to perform corresponding operations
91 * OBSERVE indicates that the request is of type Observe and entity handler
92 * needs to perform corresponding operations
93 * @return int type of request flag
95 int getRequestHandlerFlag() const {return m_requestHandlerFlag;}
98 * Provides the entire resource attribute representation
99 * @return OCRepresentation reference containing the name value pairs
100 * representing the resource's attributes
102 const OCRepresentation& getResourceRepresentation() const {return m_representation;}
105 * @return ObservationInfo reference provides observation information
107 const ObservationInfo& getObservationInfo() const {return m_observationInfo;}
111 * @param resourceUri specifies the resource uri
113 void setResourceUri(const std::string resourceUri)
115 m_resourceUri = resourceUri;
120 * @return std::string resource uri
122 std::string getResourceUri(void)
124 return m_resourceUri;
128 * This API retrieves headerOptions which was sent from a client
130 * @return std::map HeaderOptions with the header options
132 const HeaderOptions& getHeaderOptions() const
134 return m_headerOptions;
138 * This API retrieves the request handle
140 * @return OCRequestHandle
142 const OCRequestHandle& getRequestHandle() const
144 return m_requestHandle;
148 * This API retrieves the resource handle
150 * return OCResourceHandle
152 const OCResourceHandle& getResourceHandle() const
154 return m_resourceHandle;
158 std::string m_requestType;
159 std::string m_resourceUri;
160 QueryParamsMap m_queryParameters;
161 int m_requestHandlerFlag;
162 OCRepresentation m_representation;
163 ObservationInfo m_observationInfo;
164 HeaderOptions m_headerOptions;
165 OCRequestHandle m_requestHandle;
166 OCResourceHandle m_resourceHandle;
170 friend void (::formResourceRequest)(OCEntityHandlerFlag, OCEntityHandlerRequest*,
171 std::shared_ptr<OC::OCResourceRequest>);
172 void setRequestType(const std::string& requestType)
174 m_requestType = requestType;
177 void setPayload(OCPayload* requestPayload);
179 void setQueryParams(QueryParamsMap& queryParams)
181 m_queryParameters = queryParams;
184 void setRequestHandlerFlag(int requestHandlerFlag)
186 m_requestHandlerFlag = requestHandlerFlag;
189 void setObservationInfo(const ObservationInfo& observationInfo)
191 m_observationInfo = observationInfo;
194 void setHeaderOptions(const HeaderOptions& headerOptions)
196 m_headerOptions = headerOptions;
200 * This API allows to set request handle
201 * @param requestHandle - OCRequestHandle type used to set the
204 void setRequestHandle(const OCRequestHandle& requestHandle)
206 m_requestHandle = requestHandle;
210 * This API allows to set the resource handle
211 * @param resourceHandle - OCResourceHandle type used to set the
214 void setResourceHandle(const OCResourceHandle& resourceHandle)
216 m_resourceHandle = resourceHandle;
222 #endif //__OCRESOURCEREQUEST_H