replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / resource / src / OCRepresentation.cpp
index 8fe41d5..3d42719 100644 (file)
@@ -35,6 +35,7 @@
 #include "ocrandom.h"
 #include "oic_malloc.h"
 #include "oic_string.h"
+#include "ocstack.h"
 
 namespace OC
 {
@@ -54,105 +55,12 @@ namespace OC
             case PAYLOAD_TYPE_REPRESENTATION:
                 setPayload(reinterpret_cast<const OCRepPayload*>(rep));
                 break;
-            case PAYLOAD_TYPE_DEVICE:
-                setPayload(reinterpret_cast<const OCDevicePayload*>(rep));
-                break;
-            case PAYLOAD_TYPE_PLATFORM:
-                setPayload(reinterpret_cast<const OCPlatformPayload*>(rep));
-                break;
-#ifdef RD_CLIENT
-            case PAYLOAD_TYPE_RD:
-                setPayload(reinterpret_cast<const OCRDPayload*>(rep));
-                break;
-#endif
             default:
                 throw OC::OCException("Invalid Payload type in setPayload");
                 break;
         }
     }
 
-    void MessageContainer::setPayload(const OCDevicePayload* payload)
-    {
-        if (payload == nullptr)
-        {
-            return;
-        }
-
-        OCRepresentation rep;
-        rep[OC_RSRVD_DEVICE_ID] = (payload->sid) ?
-            std::string(payload->sid) :
-            std::string();
-        rep[OC_RSRVD_DEVICE_NAME] = payload->deviceName ?
-            std::string(payload->deviceName) :
-            std::string();
-        rep[OC_RSRVD_SPEC_VERSION] = payload->specVersion ?
-            std::string(payload->specVersion) :
-            std::string();
-        for (OCStringLL *strll = payload->dataModelVersions; strll; strll = strll->next)
-        {
-            rep.addDataModelVersion(strll->value);
-        }
-        for (OCStringLL *strll = payload->types; strll; strll = strll->next)
-        {
-           rep.addResourceType(strll->value);
-        }
-        m_reps.push_back(std::move(rep));
-    }
-
-    void MessageContainer::setPayload(const OCPlatformPayload* payload)
-    {
-        if (payload == nullptr)
-        {
-            return;
-        }
-
-        OCRepresentation rep;
-        rep[OC_RSRVD_PLATFORM_ID] = payload->info.platformID ?
-            std::string(payload->info.platformID) :
-            std::string();
-        rep[OC_RSRVD_MFG_NAME] = payload->info.manufacturerName ?
-            std::string(payload->info.manufacturerName) :
-            std::string();
-        rep[OC_RSRVD_MFG_URL] = payload->info.manufacturerUrl ?
-            std::string(payload->info.manufacturerUrl) :
-            std::string();
-        rep[OC_RSRVD_MODEL_NUM] = payload->info.modelNumber ?
-            std::string(payload->info.modelNumber) :
-            std::string();
-        rep[OC_RSRVD_MFG_DATE] = payload->info.dateOfManufacture ?
-            std::string(payload->info.dateOfManufacture) :
-            std::string();
-        rep[OC_RSRVD_PLATFORM_VERSION] = payload->info.platformVersion ?
-            std::string(payload->info.platformVersion) :
-            std::string();
-        rep[OC_RSRVD_OS_VERSION] = payload->info.operatingSystemVersion ?
-            std::string(payload->info.operatingSystemVersion) :
-            std::string();
-        rep[OC_RSRVD_HARDWARE_VERSION] = payload->info.hardwareVersion ?
-            std::string(payload->info.hardwareVersion) :
-            std::string();
-        rep[OC_RSRVD_FIRMWARE_VERSION] = payload->info.firmwareVersion ?
-            std::string(payload->info.firmwareVersion) :
-            std::string();
-        rep[OC_RSRVD_SUPPORT_URL] = payload->info.supportUrl ?
-            std::string(payload->info.supportUrl) :
-            std::string();
-        rep[OC_RSRVD_SYSTEM_TIME] = payload->info.systemTime ?
-            std::string(payload->info.systemTime) :
-            std::string();
-
-        for (OCStringLL *strll = payload->rt; strll; strll = strll->next)
-        {
-            rep.addResourceType(strll->value);
-        }
-        for (OCStringLL *strll = payload->interfaces; strll; strll = strll->next)
-        {
-            rep.addResourceInterface(strll->value);
-        }
-
-        m_reps.push_back(std::move(rep));
-    }
-
     void MessageContainer::setPayload(const OCRepPayload* payload)
     {
         const OCRepPayload* pl = payload;
@@ -165,29 +73,7 @@ namespace OC
             this->addRepresentation(cur);
         }
     }
-#ifdef RD_CLIENT
-    void MessageContainer::setPayload(const OCRDPayload* payload)
-    {
-        OCRepresentation rep;
-        rep[OC_RSRVD_DEVICE_ID] = (payload->rdPublish->tags->di.id) ?
-            std::string(reinterpret_cast<const char*>(payload->rdPublish->tags->di.id)) :
-            std::string();
-        rep[OC_RSRVD_DEVICE_NAME] = (payload->rdPublish->tags->n.deviceName) ?
-            std::string(payload->rdPublish->tags->n.deviceName) :
-            std::string();
-        this->addRepresentation(rep);
-
-        const OCLinksPayload* pl = payload->rdPublish->setLinks;
-        while (pl)
-        {
-            OCRepresentation cur;
-            cur.setPayload(pl);
 
-            pl = pl->next;
-            this->addRepresentation(cur);
-        }
-    }
-#endif
     OCRepPayload* MessageContainer::getPayload() const
     {
         OCRepPayload* root = nullptr;
@@ -343,7 +229,7 @@ namespace OC
         ((int64_t*)array)[pos] = item;
     }
 
-#if !defined(_MSC_VER)
+#if !(defined(_MSC_VER) || defined(__APPLE__))
     template<>
     void get_payload_array::copy_to_array(std::_Bit_reference br, void* array, size_t pos)
     {
@@ -726,43 +612,7 @@ namespace OC
             val = val->next;
         }
     }
-#ifdef RD_CLIENT
-    void OCRepresentation::setPayload(const OCLinksPayload* pl)
-    {
-        if (pl->href)
-        {
-            setValue<std::string>(OC_RSRVD_HREF, pl->href);
-        }
-        if (pl->rel)
-        {
-            setValue<std::string>(OC_RSRVD_REL, pl->rel);
-        }
-        OCStringLL* ll = pl->rt;
-        while (ll)
-        {
-            addResourceType(ll->value);
-            ll = ll->next;
-        }
-        ll = pl->itf;
-        while (ll)
-        {
-            addResourceInterface(ll->value);
-            ll = ll->next;
-        }
 
-        setValue<int>(OC_RSRVD_POLICY, pl->p);
-        setValue<int>(OC_RSRVD_INS, pl->ins);
-        setValue<int>(OC_RSRVD_TTL, pl->ttl);
-        if (pl->title)
-        {
-            setValue<std::string>(OC_RSRVD_TITLE, pl->title);
-        }
-        if (pl->anchor)
-        {
-            setValue<std::string>(OC_RSRVD_URI, pl->anchor);
-        }
-    }
-#endif
     void OCRepresentation::addChild(const OCRepresentation& rep)
     {
         m_children.push_back(rep);
@@ -783,14 +633,14 @@ namespace OC
         m_children = children;
     }
 
-    void OCRepresentation::setDevAddr(const OCDevAddr m_devAddr)
+    void OCRepresentation::setDevAddr(const OCDevAddrdevAddr)
     {
         std::ostringstream ss;
-        if (m_devAddr.flags & OC_SECURE)
+        if (devAddr.flags & OC_SECURE)
         {
             ss << COAPS;
         }
-        else if (m_devAddr.adapter & OC_ADAPTER_TCP)
+        else if (devAddr.adapter & OC_ADAPTER_TCP)
         {
             ss << COAP_TCP;
         }
@@ -798,17 +648,26 @@ namespace OC
         {
             ss << COAP;
         }
-        if (m_devAddr.flags & OC_IP_USE_V6)
+        if (devAddr.flags & OC_IP_USE_V6)
         {
-            ss << '[' << m_devAddr.addr << ']';
+            char addressEncoded[128] = {0};
+
+            OCStackResult result = OCEncodeAddressForRFC6874(addressEncoded,
+                                                             sizeof(addressEncoded),
+                                                             devAddr.addr);
+            if (OC_STACK_OK != result)
+            {
+                throw OC::OCException("Invalid address in setDevAddr");
+            }
+            ss << '[' << addressEncoded << ']';
         }
         else
         {
-            ss << m_devAddr.addr;
+            ss << devAddr.addr;
         }
-        if (m_devAddr.port)
+        if (devAddr.port)
         {
-            ss << ':' << m_devAddr.port;
+            ss << ':' << devAddr.port;
         }
         m_host = ss.str();
     }