From c4d4f324d38dd3515bbca8468cb5acb2313b8373 Mon Sep 17 00:00:00 2001
From: Pawel Andruszkiewicz
Date: Thu, 18 Feb 2016 11:55:04 +0100
Subject: [PATCH] [iotcon] Implementation of RemoteResource.methodDelete().
Change-Id: Ie26567fd785b7967eec47de503bef5d2a610442c
Signed-off-by: Pawel Andruszkiewicz
---
src/iotcon/iotcon_api.js | 11 +++++++----
src/iotcon/iotcon_instance.cc | 19 ++++++++++++++++++-
2 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/src/iotcon/iotcon_api.js b/src/iotcon/iotcon_api.js
index 43ed6fbe..7bf89403 100644
--- a/src/iotcon/iotcon_api.js
+++ b/src/iotcon/iotcon_api.js
@@ -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));
}
};
diff --git a/src/iotcon/iotcon_instance.cc b/src/iotcon/iotcon_instance.cc
index 4b6b0de6..10250149 100644
--- a/src/iotcon/iotcon_instance.cc
+++ b/src/iotcon/iotcon_instance.cc
@@ -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 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,
--
2.34.1