// Copyright 2017 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef LIBBRILLO_POLICY_POLICY_UTIL_H_
#define LIBBRILLO_POLICY_POLICY_UTIL_H_

#include <string>

#include <base/files/file_path.h>
#include <brillo/brillo_export.h>

#include "bindings/device_management_backend.pb.h"

namespace policy {

// The detailed information of the result from loading the policy data.
enum class BRILLO_EXPORT LoadPolicyResult {
  kSuccess = 0,
  kFileNotFound = 1,
  kFailedToReadFile = 2,
  kEmptyFile = 3,
  kInvalidPolicyData = 4
};

// Reads and parses the policy data from |policy_path|. Returns the details
// in LoadPolicyResult. In case response is |kSuccess|, |policy_data_str_out|
// contains the raw data from the file, while |policy_out| contains the parsed
// policy data. Otherwise the contents of |policy_data_str_out| and |policy_out|
// is undefined.
BRILLO_EXPORT LoadPolicyResult
LoadPolicyFromPath(const base::FilePath& policy_path,
                   std::string* policy_data_str_out,
                   enterprise_management::PolicyFetchResponse* policy_out);

}  // namespace policy

#endif  // LIBBRILLO_POLICY_POLICY_UTIL_H_
