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