[iotcon] Implementation of RemoteResource.methodDelete().
authorPawel Andruszkiewicz <p.andruszkie@samsung.com>
Thu, 18 Feb 2016 10:55:04 +0000 (11:55 +0100)
committerPawel Andruszkiewicz <p.andruszkie@samsung.com>
Thu, 18 Feb 2016 14:44:31 +0000 (23:44 +0900)
Change-Id: Ie26567fd785b7967eec47de503bef5d2a610442c
Signed-off-by: Pawel Andruszkiewicz <p.andruszkie@samsung.com>
src/iotcon/iotcon_api.js
src/iotcon/iotcon_instance.cc

index 43ed6fbe1a47146d694d1c9ebf98b39394c018cb..7bf894032bd64200cfc52374658227b99bbc88cf 100644 (file)
@@ -747,18 +747,21 @@ RemoteResource.prototype.methodDelete = function() {
   var callArgs = prepareResourceInfo(this);
 
   var callback = function(result) {
-    if (native.isFailure(result)) {
+    result = native.getResultObject(result);
+    manageId(this, result);
+    if (!result.data) {
       native.callIfPossible(args.errorCallback, native.getErrorObject(result));
     } else {
-      // TODO: implement
-      args.responseCallback();
+      args.responseCallback(new RemoteResponse(result.data));
     }
-  };
+  }.bind(this);
 
   var result = native.call('IotconRemoteResource_methodDelete', callArgs, callback);
 
   if (native.isFailure(result)) {
     throw native.getErrorObject(result);
+  } else {
+    manageId(this, native.getResultObject(result));
   }
 };
 
index 4b6b0de6a3a52701bf423eed61befbcb26ede012..10250149ada723576719888646b25f532071fee8 100644 (file)
@@ -667,7 +667,24 @@ common::TizenResult IotconInstance::RemoteResourceMethodPost(const picojson::obj
 common::TizenResult IotconInstance::RemoteResourceMethodDelete(const picojson::object& args,
                                                                const common::AsyncToken& token) {
   ScopeLogger();
-  return common::UnknownError("Not implemented");
+
+  FoundRemoteInfoPtr resource;
+  auto result = IotconUtils::RemoteResourceFromJson(args, &resource);
+  if (!result) {
+    LogAndReturnTizenError(result, ("RemoteResourceFromJson() failed"));
+  }
+
+  std::unique_ptr<CallbackData> data{new CallbackData{PostForMethodCall(token, resource)}};
+
+  result = IotconUtils::ConvertIotconError(iotcon_remote_resource_delete(resource->handle, RemoteResourceResponseCallback, data.get()));
+  if (!result) {
+    LogAndReturnTizenError(result, ("iotcon_remote_resource_delete() failed"));
+  }
+
+  // release memory ownership
+  data.release();
+
+  return common::TizenSuccess{IotconClientManager::GetInstance().StoreRemoteResource(resource)};
 }
 
 static void ObserveCallback(iotcon_remote_resource_h resource, iotcon_error_e err,