Merge test folder of test branch
[iotivity.git] / test / src / iBtestapp / modules / ic / c_cpp / src / BinarySwitchResourceHelper.cpp
1 /******************************************************************
2  *
3  * Copyright 2016 Samsung Electronics All Rights Reserved.
4  *
5  *
6  *
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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.
18  *
19  *
20  ******************************************************************/
21
22 #include "BinarySwitchResourceHelper.h"
23 #define REQUEST_TYPE_GET "GET"
24 #define REQUEST_TYPE_PUT "PUT"
25 #define REQUEST_TYPE_POST "POST"
26 #define REQUEST_TYPE_DELETE "DELETE"
27
28 BinarySwitchResource::BinarySwitchResource(string uri, vector< string > rt, vector< string > itf) :
29         Resource(uri, rt, itf)
30 {
31     m_value = false;
32     m_representation.setValue("value", m_value);
33 }
34
35 void BinarySwitchResource::setBinarySwitchRepresentation(OCRepresentation &rep)
36 {
37     bool value;
38     if (rep.getValue("value", value))
39     {
40         m_value = value;
41         m_representation.setValue("value", m_value);
42         cout << "\t\t\t\t" << "value: " << m_value << endl;
43         propagate();
44     }
45 }
46
47 OCEntityHandlerResult BinarySwitchResource::entityHandler(
48         std::shared_ptr< OCResourceRequest > request)
49 {
50     cout << "\tIn Server Binaryswitch entity handler:\n";
51     OCEntityHandlerResult ehResult = OC_EH_ERROR;
52
53     if (request)
54     {
55         // Get the request type and request flag
56         std::string requestType = request->getRequestType();
57         int requestFlag = request->getRequestHandlerFlag();
58
59         if (requestFlag & RequestHandlerFlag::RequestFlag)
60         {
61             cout << "\t\trequestFlag : Request\n";
62
63             // If the request type is GET
64             if (requestType == REQUEST_TYPE_GET)
65             {
66                 cout << "\t\t\trequestType : GET\n";
67                 if (OC_STACK_OK == sendRepresentation(request))
68                 {
69                     ehResult = OC_EH_OK;
70                 }
71             }
72             else if (requestType == REQUEST_TYPE_PUT)
73             {
74                 cout << "\t\t\trequestType : PUT\n";
75                 // PUT request operations
76             }
77             else if (requestType == REQUEST_TYPE_POST)
78             {
79                 cout << "\t\t\trequestType : POST\n";
80                 // POST request operations
81                 OCRepresentation rep = request->getResourceRepresentation();
82                 setBinarySwitchRepresentation(rep);
83
84                 if (OC_STACK_OK == sendRepresentation(request))
85                 {
86                     ehResult = OC_EH_OK;
87                 }
88             }
89             else if (requestType == REQUEST_TYPE_DELETE)
90             {
91                 cout << "\t\t\trequestType : DELETE\n";
92                 // DELETE request operations
93             }
94         }
95
96         if (requestFlag & RequestHandlerFlag::ObserverFlag)
97         {
98             cout << "\t\trequestFlag : Observer\n";
99
100             ObservationInfo observationInfo = request->getObservationInfo();
101             if (ObserveAction::ObserveRegister == observationInfo.action)
102             {
103                 m_interestedObservers.push_back(observationInfo.obsId);
104             }
105             else if (ObserveAction::ObserveUnregister == observationInfo.action)
106             {
107                 m_interestedObservers.erase(
108                         std::remove(m_interestedObservers.begin(), m_interestedObservers.end(),
109                                 observationInfo.obsId), m_interestedObservers.end());
110             }
111         }
112     }
113     else
114     {
115         std::cout << "Request invalid" << std::endl;
116     }
117
118     return ehResult;
119 }
120