// 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