LOM2M  0.8.0
RequestPrimitive.h
Go to the documentation of this file.
1 /*
2  Copyright (c) 2013-2021 LAAS-CNRS (www.laas.fr)
3  7 Colonel Roche 31077 Toulouse - France
4 
5  The use of this source code requires an agreement with the CNRS.
6 
7  Initial Contributors:
8  David Gauchard, Guillaume Garzone, Thierry Monteil.
9 */
10 
11 #ifndef __REQUESTPRIMITIVE_H
12 #define __REQUESTPRIMITIVE_H
13 #define DBUG true
14 
15 #include "configuration.h"
16 
17 #include <map>
18 #include <assert.h> // should be removed
19 #include <stdlib.h>
20 
21 #include "Entity.h"
22 #include "Notify.h"
23 #include "Enum.h"
24 #include "AccessControlRule.h"
25 #include "tools.h"
26 
27 
28 
29 enum UriType
30 {
34 };
36 
37 // used by gateway to build answers
38 // used by client to build requests
39 
41 {
42 protected:
43 
44  void setURL(const String& resourceName = emptyString,
45  const String& resourceDataName = emptyString);
46 
47 protected:
51  String m_to;
52  String m_from;
53  String m_ri;
55  String m_content;
56  // TODO Content
57  // TODO Role IDs
59  // TODO request Expiration Timestamp
60  // TODO result expiration timestamp
61  // TODO response type
62  // TODO result persistence
64  // TODO event category
68  // TODO desired identifier result type
69  // TODO TOKENS
70  // TODO TOKEN IDS
71  // TODO local Token IDs
72  // TODO Token Request Indicator
73  // TODO Group request target Members
75  // TODO authorization signatures (list)
78 
79  // TODO RELEASE VERSION INDICATOR
80  String m_rvi;
81 
83 
84  String m_url;
85  String m_contentType;
87  String m_location;
88 
89  int qs_ty;
90  bool qs_fu;
91  std::list<String> qs_lbl;
92  int qs_lvl;
93 
94 public:
95 
96  void init();
97 
99  {
100  return this->m_uriType;
101  }
102  void setUriType(UriType uriType)
103  {
104  this->m_uriType = uriType;
105  }
107  return this->fc;
108  }
110  this->fc = fc;
111  }
112  String& getMqttTopic()
113  {
114  return this->m_mqttTopic;
115  }
116  void setMqttTopic(const String& mqttTopic)
117  {
118  this->m_mqttTopic = mqttTopic;
119  }
120  const String& getGroupRequestIdentifier() const
121  {
122  return this->m_groupRequestIdentifier;
123  }
124  void setGroupRequestIdentifier(const String& groupRequestIdentifier)
125  {
126  this->m_groupRequestIdentifier = groupRequestIdentifier;
127  }
129  {
130  return this->m_deliveryAggregation;
131  }
133  {
134  return (this->m_deliveryAggregation == 1);
135  }
136  void setDeliveryAggregation(bool deliveryAggregation)
137  {
138  if (deliveryAggregation)
139  {
140  this->m_deliveryAggregation = 1;
141  }
142  else
143  {
144  this->m_deliveryAggregation = 0;
145  }
146  }
147  const String& getOriginatingTimestamp() const
148  {
149  return this->m_originatingTimestamp;
150  }
151  void setOriginatingTimestamp(const String& originatingTimestamp)
152  {
153  this->m_originatingTimestamp = originatingTimestamp;
154  }
156  return this->m_semanticQueryIndicator;
157  }
159  return (this->m_semanticQueryIndicator == 1);
160  }
161  void setSemanticQueryIndicator(bool semanticQueryIndicator) {
162  if (semanticQueryIndicator)
163  {
165  }
166  else
167  {
169  }
170  }
172  {
173  return (this->m_authorizationRelationshipIndicator == 1);
174  }
176  {
178  }
179  void setAuthorizationRelationshipIndicator(bool authorizationRelationshipIndicator)
180  {
181  if (authorizationRelationshipIndicator)
182  {
183  this->m_authorizationRelationshipIndicator = 1;
184  }
185  else
186  {
187  this->m_authorizationRelationshipIndicator = 0;
188  }
189  }
191  {
193  }
195  {
196  return (this->m_authorizationSignatureIndicator == 1);
197  }
198  void setAuthorizationSignatureIndicator(bool authorizationSignatureIndicator)
199  {
200  if (authorizationSignatureIndicator)
201  {
202  this->m_authorizationSignatureIndicator = 1;
203  }
204  else
205  {
206  this->m_authorizationSignatureIndicator = 0;
207  }
208  }
209  const int getQSlvl() const
210  {
211  return qs_lvl;
212  }
213 
214  void setQSlvl(int lvl)
215  {
216  qs_lvl = lvl;
217  }
218 
219  const int getQSty() const
220  {
221  return qs_ty;
222  }
223 
224  void setQSty(int ty)
225  {
226  qs_ty = ty;
227  }
228 
229  const bool getQSfu()
230  {
231  return qs_fu;
232  }
233 
234  void setQSfu(bool fu)
235  {
236  qs_fu = fu;
237  }
238 
239  const String& getURL() const
240  {
241  return m_url;
242  }
243 
244  void setContent(String content)
245  {
246  m_content = content;
247  }
248 
249  const String& getContent() const
250  {
251  return m_content;
252  }
253 
254  void setLocation(String location)
255  {
257  }
258 
259  const String& getLocation() const
260  {
261  return m_location;
262  }
263 
265  {
266  m_rcn = rcn;
267  }
268 
269  void setResultContentType(const char* rcn);
270 
272  {
273  return m_rcn;
274  }
275 
277  {
279  }
280 
281  const String& getWantedContentType() const
282  {
283  return m_wantedContentType;
284  }
285 
286  void setOperation(Operation operation)
287  {
288  m_operation = operation;
289  }
290 
291  void setOperation(int operation)
292  {
293  m_operation = Operation(operation);
294  }
295 
296  int getOperation() const
297  {
298  return m_operation;
299  }
300 
302  {
303  return m_operation;
304  }
305 
306  void setTo(String to)
307  {
308  m_to = to;
309  }
310 
311  const String& getTo() const
312  {
313  return m_to;
314  }
315 
316  void setFrom(String from)
317  {
318  m_from = from;
319  }
320 
321  String getFrom() const
322  {
323  return m_from;
324  }
325 
326  void setRequestId(String ri)
327  {
328  m_ri = ri;
329  }
330 
331  const String& getRequestId() const
332  {
333  return m_ri;
334  }
335 
336  void setResourceType(int ty)
337  {
338  m_resourceType = ty;
339  }
340 
341  void setReleaseVersionIndicator(const String& rvi)
342  {
343  m_rvi = rvi;
344  }
345 
346  const String& getReleaseVersionIndicator() const
347  {
348  return m_rvi;
349  }
350 
351  int getResourceType() const
352  {
353  return m_resourceType;
354  }
355 
356  const String& getRequestContentType()
357  {
358  return m_contentType;
359  }
360 
361  const String& getVendorInformation()
362  {
363  return this->m_vendorInformation;
364  }
365  void setVendorInformation(const String& vendorInformation)
366  {
367  this->m_vendorInformation = vendorInformation;
368  }
369 
370  void setRequestContentType();
371  void setRequestContentTypeRaw(const String& contentType);
372 
373 public:
374 
376 
377  void buildRequest(Encoding enc, String& req);
379  String credLogin;
380  String credPassw;
381  String gateway;
382 
383  //XXX these constants must be taken from lom2m.cpp
384  //XXX or moved to examples
385  String rootCSE = "~/mn-cse/"; // XXX rename var
386  String rootName = rootCSE + "mn-name/"; // XXX rename var
387  String api = "app-sensor"; // Free string ?
388  String type = "sensor"; // Free string ?
389  String category = "temperature2"; // Free string ?
390  String location = "home2";
391  String resourceName = "sensors2";
392  String descriptor = "esp-outside2";
393  String resourceDataName = "temperature2";
394 
396 
397  //XXX rename functions
398  //XXX move relevant ones to protected section
399  void createEntity();
400  void createCSEBase();
401  void createContainer(const String& name);
402  void initReport();
403  [[DEPRECATED]]
404  void createReport(Entity* e, ResultContentType rcn = RCN_ATTR_CHREF, bool toCreate = false)
405  {
406  createReport(e, rcn, 1, toCreate);
407  }
408  void createReport(Entity* e, ResultContentType rcn = RCN_ATTR_CHREF, int lvl = 1, bool toCreate = false);
409  [[DEPRECATED]]
410  void createReport(JsonObject rootElement, Entity* e, ResultContentType rcn = RCN_ATTR_CHREF, bool toCreate = false)
411  {
412  createReportLvl(rootElement, e, rcn, 1, toCreate);
413  }
414  void createReportLvl(JsonObject rootElement, Entity* e, ResultContentType rcn = RCN_ATTR_CHREF, int lvl = 1, bool toCreate = false);
415  #if SUBSCRIPTION_FEAT
417  #endif // SUBSCRIPTION_FEAT
418  void addDescriptionInstance();
419  void addDataInstance(const String& value);
421  {
422  return createContainer(descriptor);
423  }
425  {
427  }
428  void addDataInstance(int value)
429  {
430  return addDataInstance(String(value, DEC));
431  }
432  void buildRequest(String& req)
433  {
434  buildRequest(m_encoding, req);
435  }
436  ResponseStatusCode createURIList(int ty, String& lbl);
437 
438  #if SUBSCRIPTION_FEAT
440  #endif // SUBSCRIPTION_FEAT
441 
442 
443 }; // class om2m
444 
445 #endif // __REQUESTPRIMITIVE_H
ResultContentType
Definition: Enum.h:57
@ RCN_ATTR_CHREF
Definition: Enum.h:64
Operation
Definition: Enum.h:43
NotificationContentType
Definition: Enum.h:31
NotificationToSend * notif
Definition: Notify.cpp:97
UriType
Definition: RequestPrimitive.h:30
@ URI_SP_RELATIVE
Definition: RequestPrimitive.h:32
@ URI_ABSOLUTE
Definition: RequestPrimitive.h:31
@ URI_CSE_RELATIVE
Definition: RequestPrimitive.h:33
ResponseStatusCode
Definition: ResponsePrimitive.h:19
const char * contentType(const String &filename)
Definition: bsp-esp8266.cpp:13
const String emptyString
Encoding
Definition: bsp.h:39
Definition: RequestPrimitive.h:41
const String & getGroupRequestIdentifier() const
Definition: RequestPrimitive.h:120
String rootName
Definition: RequestPrimitive.h:386
void createDescriptorContainer()
Definition: RequestPrimitive.h:420
String m_wantedContentType
Definition: RequestPrimitive.h:86
String m_from
Definition: RequestPrimitive.h:52
const int getQSty() const
Definition: RequestPrimitive.h:219
void setUriType(UriType uriType)
Definition: RequestPrimitive.h:102
String createNotifyBody(Notification *notif, NotificationContentType nct)
Definition: RequestPrimitive.cpp:324
String getFrom() const
Definition: RequestPrimitive.h:321
void createReportLvl(JsonObject rootElement, Entity *e, ResultContentType rcn=RCN_ATTR_CHREF, int lvl=1, bool toCreate=false)
Definition: RequestPrimitive.cpp:243
const String & getWantedContentType() const
Definition: RequestPrimitive.h:281
const String & getLocation() const
Definition: RequestPrimitive.h:259
void initReport()
Definition: RequestPrimitive.cpp:217
FilterCriteria fc
Definition: RequestPrimitive.h:67
ResponseStatusCode createURIList(int ty, String &lbl)
Definition: RequestPrimitive.cpp:353
String m_content
Definition: RequestPrimitive.h:55
void setOperation(int operation)
Definition: RequestPrimitive.h:291
String type
Definition: RequestPrimitive.h:388
String m_mqttTopic
Definition: RequestPrimitive.h:49
void init()
Definition: RequestPrimitive.cpp:28
void createCSEBase()
Definition: RequestPrimitive.cpp:189
String m_url
Definition: RequestPrimitive.h:84
void createDataContainer()
Definition: RequestPrimitive.h:424
void setFilterCriteria(FilterCriteria &fc)
Definition: RequestPrimitive.h:109
UriType getUriType()
Definition: RequestPrimitive.h:98
int getResourceType() const
Definition: RequestPrimitive.h:351
void addDataInstance(const String &value)
Definition: RequestPrimitive.cpp:180
String api
Definition: RequestPrimitive.h:387
void setRequestContentTypeRaw(const String &contentType)
Definition: RequestPrimitive.cpp:53
void createReport(JsonObject rootElement, Entity *e, ResultContentType rcn=RCN_ATTR_CHREF, bool toCreate=false)
Definition: RequestPrimitive.h:410
Encoding m_encoding
Definition: RequestPrimitive.h:378
void setMqttTopic(const String &mqttTopic)
Definition: RequestPrimitive.h:116
void setRequestId(String ri)
Definition: RequestPrimitive.h:326
const String & getRequestContentType()
Definition: RequestPrimitive.h:356
void setResultContentType(ResultContentType rcn)
Definition: RequestPrimitive.h:264
void setQSfu(bool fu)
Definition: RequestPrimitive.h:234
bool getDeliveryAggregation()
Definition: RequestPrimitive.h:132
void createEntity()
Definition: RequestPrimitive.cpp:150
UriType m_uriType
Definition: RequestPrimitive.h:48
const String & getURL() const
Definition: RequestPrimitive.h:239
void setURL(const String &resourceName=emptyString, const String &resourceDataName=emptyString)
Definition: RequestPrimitive.cpp:114
String m_originatingTimestamp
Definition: RequestPrimitive.h:58
const String & getReleaseVersionIndicator() const
Definition: RequestPrimitive.h:346
int m_semanticQueryIndicator
Definition: RequestPrimitive.h:77
bool qs_fu
Definition: RequestPrimitive.h:90
String m_location
Definition: RequestPrimitive.h:87
Operation m_operation
Definition: RequestPrimitive.h:50
bool getAuthorizationRelationshipIndicator()
Definition: RequestPrimitive.h:171
Operation getOperationEnum() const
Definition: RequestPrimitive.h:301
int getAuthorizationRelationshipIndicatorInt()
Definition: RequestPrimitive.h:175
const String & getTo() const
Definition: RequestPrimitive.h:311
void setSemanticQueryIndicator(bool semanticQueryIndicator)
Definition: RequestPrimitive.h:161
void setDeliveryAggregation(bool deliveryAggregation)
Definition: RequestPrimitive.h:136
String gateway
Definition: RequestPrimitive.h:381
void createReport(Entity *e, ResultContentType rcn=RCN_ATTR_CHREF, bool toCreate=false)
Definition: RequestPrimitive.h:404
void setTo(String to)
Definition: RequestPrimitive.h:306
String m_to
Definition: RequestPrimitive.h:51
ResultContentType m_rcn
Definition: RequestPrimitive.h:63
const String & getRequestId() const
Definition: RequestPrimitive.h:331
void setReleaseVersionIndicator(const String &rvi)
Definition: RequestPrimitive.h:341
void setAuthorizationRelationshipIndicator(bool authorizationRelationshipIndicator)
Definition: RequestPrimitive.h:179
void addDescriptionInstance()
Definition: RequestPrimitive.cpp:172
String m_ri
Definition: RequestPrimitive.h:53
bool getSemanticQueryIndicator()
Definition: RequestPrimitive.h:158
void createNotifyReport(Notification *n, NotificationContentType nct)
Definition: RequestPrimitive.cpp:305
int getOperation() const
Definition: RequestPrimitive.h:296
const bool getQSfu()
Definition: RequestPrimitive.h:229
String m_contentType
Definition: RequestPrimitive.h:85
void buildRequest(String &req)
Definition: RequestPrimitive.h:432
String resourceName
Definition: RequestPrimitive.h:391
int m_resourceType
Definition: RequestPrimitive.h:54
String credLogin
Definition: RequestPrimitive.h:379
void buildRequest(Encoding enc, String &req)
Definition: RequestPrimitive.cpp:434
std::list< String > qs_lbl
Definition: RequestPrimitive.h:91
bool getAuthorizationSignatureIndicator()
Definition: RequestPrimitive.h:194
void setLocation(String location)
Definition: RequestPrimitive.h:254
int getSemanticQueryIndicatorInt()
Definition: RequestPrimitive.h:155
int getAuthorizationSignatureIndicatorInt()
Definition: RequestPrimitive.h:190
void setFrom(String from)
Definition: RequestPrimitive.h:316
int qs_lvl
Definition: RequestPrimitive.h:92
void createContainer(const String &name)
Definition: RequestPrimitive.cpp:164
void setRequestContentType()
Definition: RequestPrimitive.cpp:48
String m_groupRequestIdentifier
Definition: RequestPrimitive.h:66
String m_vendorInformation
Definition: RequestPrimitive.h:82
String rootCSE
Definition: RequestPrimitive.h:385
const String & getOriginatingTimestamp() const
Definition: RequestPrimitive.h:147
void setQSlvl(int lvl)
Definition: RequestPrimitive.h:214
void setQSty(int ty)
Definition: RequestPrimitive.h:224
ResultContentType getResultContentType() const
Definition: RequestPrimitive.h:271
void addDataInstance(int value)
Definition: RequestPrimitive.h:428
int qs_ty
Definition: RequestPrimitive.h:89
void setContent(String content)
Definition: RequestPrimitive.h:244
String resourceDataName
Definition: RequestPrimitive.h:393
String category
Definition: RequestPrimitive.h:389
void setWantedContentType(String contentType)
Definition: RequestPrimitive.h:276
void setGroupRequestIdentifier(const String &groupRequestIdentifier)
Definition: RequestPrimitive.h:124
void setAuthorizationSignatureIndicator(bool authorizationSignatureIndicator)
Definition: RequestPrimitive.h:198
String m_rvi
Definition: RequestPrimitive.h:80
void setOperation(Operation operation)
Definition: RequestPrimitive.h:286
String credPassw
Definition: RequestPrimitive.h:380
void setOriginatingTimestamp(const String &originatingTimestamp)
Definition: RequestPrimitive.h:151
void setResourceType(int ty)
Definition: RequestPrimitive.h:336
RequestPrimitive()
Definition: RequestPrimitive.cpp:145
void setVendorInformation(const String &vendorInformation)
Definition: RequestPrimitive.h:365
String & getMqttTopic()
Definition: RequestPrimitive.h:112
const String & getContent() const
Definition: RequestPrimitive.h:249
FilterCriteria & getFilterCriteria()
Definition: RequestPrimitive.h:106
int m_authorizationSignatureIndicator
Definition: RequestPrimitive.h:74
int m_deliveryAggregation
Definition: RequestPrimitive.h:65
String descriptor
Definition: RequestPrimitive.h:392
String location
Definition: RequestPrimitive.h:390
int m_authorizationRelationshipIndicator
Definition: RequestPrimitive.h:76
int getDeliveryAggregationInt()
Definition: RequestPrimitive.h:128
const int getQSlvl() const
Definition: RequestPrimitive.h:209
const String & getVendorInformation()
Definition: RequestPrimitive.h:361
MqttTopic mqttTopic
Definition: mqttBinding.cpp:191
Definition: Entity.h:235
Definition: Entity.h:42
Definition: Notify.h:101