From: Lukasz Wojciechowski Date: Thu, 17 Jul 2014 18:09:37 +0000 (+0200) Subject: Implement administrating request in Cynara service Logic class X-Git-Tag: accepted/tizen/common/20140722.142604~17 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=08789710b45fe0bdd7e6b26d56b7fa5dd6bf429f;p=platform%2Fcore%2Fsecurity%2Fcynara.git Implement administrating request in Cynara service Logic class Change-Id: Ia4b1fe57ae2dc5a74565bf6f020cd14e72da19e8 --- diff --git a/src/service/logic/Logic.cpp b/src/service/logic/Logic.cpp index a7c66d5..cd6e410 100644 --- a/src/service/logic/Logic.cpp +++ b/src/service/logic/Logic.cpp @@ -23,13 +23,19 @@ #include #include #include +#include +#include #include #include
#include +#include +#include #include +#include #include #include +#include #include #include @@ -57,7 +63,8 @@ void Logic::execute(RequestContextPtr context UNUSED, SignalRequestPtr request) void Logic::execute(RequestContextPtr context, CheckRequestPtr request) { PolicyResult result(PredefinedPolicyType::DENY); if (check(context, request->key(), result)) { - context->returnResponse(context, std::make_shared(result, request->sequenceNumber())); + context->returnResponse(context, std::make_shared(result, + request->sequenceNumber())); } } @@ -82,4 +89,38 @@ bool Logic::check(RequestContextPtr context UNUSED, const PolicyKey &key, throw PluginNotFoundException(result); } +void Logic::execute(RequestContextPtr context, InsertOrUpdateBucketRequestPtr request) { + m_storage->addOrUpdateBucket(request->bucketId(), request->result()); +//todo add saving to database + context->returnResponse(context, std::make_shared(CodeResponse::Code::OK, + request->sequenceNumber())); +} + +void Logic::execute(RequestContextPtr context, RemoveBucketRequestPtr request) { + auto code = CodeResponse::Code::OK; + try { + m_storage->deleteBucket(request->bucketId()); +//todo add saving to database + } catch (const BucketNotExistsException &ex) { + code = CodeResponse::Code::NO_BUCKET; + } catch (const DefaultBucketDeletionException &ex) { + code = CodeResponse::Code::NOT_ALLOWED; + } + context->returnResponse(context, std::make_shared(code, + request->sequenceNumber())); +} + +void Logic::execute(RequestContextPtr context, SetPoliciesRequestPtr request) { + auto code = CodeResponse::Code::OK; + try { + m_storage->insertPolicies(request->policiesToBeInsertedOrUpdated()); + m_storage->deletePolicies(request->policiesToBeRemoved()); +//todo add saving to database + } catch (const BucketNotExistsException &ex) { + code = CodeResponse::Code::NO_BUCKET; + } + context->returnResponse(context, std::make_shared(code, + request->sequenceNumber())); +} + } // namespace Cynara diff --git a/src/service/logic/Logic.h b/src/service/logic/Logic.h index a9d6cb9..e21419a 100644 --- a/src/service/logic/Logic.h +++ b/src/service/logic/Logic.h @@ -51,6 +51,9 @@ public: } virtual void execute(RequestContextPtr context, CheckRequestPtr request); + virtual void execute(RequestContextPtr context, InsertOrUpdateBucketRequestPtr request); + virtual void execute(RequestContextPtr context, RemoveBucketRequestPtr request); + virtual void execute(RequestContextPtr context, SetPoliciesRequestPtr request); virtual void execute(RequestContextPtr context, SignalRequestPtr request); private: