blob: 5ff4d055a04c0bd91c8638a4d0f674bae18eecf4 [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <cstdint>
#include <string>
#include <rapidjson/document.h>
#include <rapidjson/schema.h>
#include <rapidjson/stringbuffer.h>
#include <rapidjson/writer.h>
#include "src/lib/files/file.h"
#include "src/lib/files/path.h"
#include "src/lib/json_parser/json_parser.h"
std::string FilepathForKey(const std::string& key) { return files::JoinPath("/data", key); }
bool LoadFromFile(const std::string& filepath, std::string* name, int64_t* balance) {
json::JSONParser json_parser;
rapidjson::Document document = json_parser.ParseFromFile(filepath);
if (json_parser.HasError()) {
return false;
}
*name = document["name"].GetString();
*balance = document["balance"].GetInt();
return true;
}
bool SaveToFile(const std::string& filepath, const std::string& name, int64_t balance) {
rapidjson::Document document;
document.SetObject();
document.AddMember("name", name, document.GetAllocator());
document.AddMember("balance", balance, document.GetAllocator());
rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
document.Accept(writer);
return files::WriteFile(filepath, buffer.GetString());
}