buffet: Extract StorageInterface and implementations into separate files
This will make it easy to reuse file storage and memory storage
implementations in the forthcoming state aggregator.
BUG=chromium:369322
TEST=Unittests
Change-Id: Ie0dc0dbbfcc13e038352ecf77e2ad28bd41907d9
Reviewed-on: https://chromium-review.googlesource.com/198045
Tested-by: Christopher Wiley <wiley@chromium.org>
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/device_registration_info.cc b/buffet/device_registration_info.cc
index c9aea9f..e1cadbf 100644
--- a/buffet/device_registration_info.cc
+++ b/buffet/device_registration_info.cc
@@ -4,15 +4,14 @@
#include "buffet/device_registration_info.h"
-#include <base/file_util.h>
-#include <base/files/important_file_writer.h>
-#include <base/json/json_reader.h>
+#include <memory>
+
#include <base/json/json_writer.h>
#include <base/values.h>
-#include <memory>
#include "buffet/data_encoding.h"
#include "buffet/device_registration_storage_keys.h"
+#include "buffet/storage_impls.h"
#include "buffet/http_transport_curl.h"
#include "buffet/http_utils.h"
#include "buffet/mime_utils.h"
@@ -94,41 +93,15 @@
return url::AppendQueryParams(result, params);
}
-class FileStorage : public buffet::DeviceRegistrationInfo::StorageInterface {
- public:
- virtual std::unique_ptr<base::Value> Load() override {
- // TODO(avakulenko): Figure out security implications of storing
- // this data unencrypted.
- std::string json;
- if (!base::ReadFileToString(GetFilePath(), &json))
- return std::unique_ptr<base::Value>();
-
- return std::unique_ptr<base::Value>(base::JSONReader::Read(json));
- }
-
- virtual bool Save(const base::Value* config) {
- // TODO(avakulenko): Figure out security implications of storing
- // this data unencrypted.
- std::string json;
- base::JSONWriter::WriteWithOptions(config,
- base::JSONWriter::OPTIONS_PRETTY_PRINT,
- &json);
- return base::ImportantFileWriter::WriteFileAtomically(GetFilePath(), json);
- }
-
- private:
- base::FilePath GetFilePath() const{
- return base::FilePath(kDeviceInfoFilePath);
- }
-};
-
} // anonymous namespace
namespace buffet {
DeviceRegistrationInfo::DeviceRegistrationInfo()
: transport_(new http::curl::Transport()),
- storage_(new FileStorage()) {
+ // TODO(avakulenko): Figure out security implications of storing
+ // this data unencrypted.
+ storage_(new FileStorage(base::FilePath(kDeviceInfoFilePath))) {
}
DeviceRegistrationInfo::DeviceRegistrationInfo(