[Reform] Apply Coding Style
[platform/core/appfw/pkgmgr-info.git] / src / server / set_pkginfo_request_handler.cc
index 850fffa..4625459 100644 (file)
@@ -2,21 +2,42 @@
 // Use of this source code is governed by an apache-2.0 license that can be
 // found in the LICENSE file.
 
-#include "set_pkginfo_request_handler.h"
+#include "set_pkginfo_request_handler.hh"
+#include "../common/parcel/parcelable_factory.hh"
+#include "../common/parcel/pkginfo_parcelable.hh"
+#include "../common/database/pkg_set_db_handler.hh"
 
 #include <string>
 
+using namespace pkgmgr_common::parcel;
+using namespace pkgmgr_common::database;
+
 namespace pkgmgr_server {
 namespace request_handler {
 
-bool SetPkginfoRequestHandler::HandleRequest(std::string data) {
+bool SetPkginfoRequestHandler::HandleRequest(unsigned char* data, int size,
+                                             std::string locale) {
+  auto abstract_parcel = ParcelableFactory::GetInst().CreateParcel(data, size);
+
+  if (abstract_parcel == nullptr ||
+      abstract_parcel->GetType() != ParcelableType::PkgInfo)
+    return false;
+
+  auto* parcel = dynamic_cast<PkgInfoParcelable*>(abstract_parcel.get());
+  if (parcel == nullptr) return false;
+
+  PkgSetDBHandler db(parcel->GetUid());
+  db.SetLocale(locale);
+
+  for (auto& i : parcel->GetPkgInfo()) {
+    db.SetPkgInfo(i);
+    if (db.Execute() == false) return false;
+  }
   return true;
 }
 
-std::string SetPkginfoRequestHandler::GetResult() {
-  std::string tmp_result("tmp_result");
-
-  return tmp_result;
+std::vector<uint8_t> SetPkginfoRequestHandler::GetResult() {
+  return std::vector<uint8_t>('0');
 }
 
 }  // namespace request_handler