// Copyright 2018 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 MODEMFWD_FIRMWARE_FILE_H_
#define MODEMFWD_FIRMWARE_FILE_H_

#include <base/files/file_path.h>
#include <base/files/scoped_temp_dir.h>
#include <base/macros.h>

#include "modemfwd/firmware_file_info.h"

namespace modemfwd {

// A class that prepares the firmware file for flashing by encapsulating the
// decompression step if the firmware file is compressed.
class FirmwareFile {
 public:
  FirmwareFile();
  FirmwareFile(const FirmwareFile&) = delete;
  FirmwareFile& operator=(const FirmwareFile&) = delete;

  ~FirmwareFile();

  // Prepares the firmware file based on the given firmware file information.
  // If the firmware file is compressed, it decompresses the firmware file into
  // a temporary directory, which will be cleaned up upon destruction of this
  // object.
  bool PrepareFrom(const FirmwareFileInfo& file_info);

  // Returns the firmware file path to be referenced in the log and journal
  // file.
  const base::FilePath& path_for_logging() const { return path_for_logging_; }

  // Returns the actual firmware file path on the filesystem.
  const base::FilePath& path_on_filesystem() const {
    return path_on_filesystem_;
  }

 private:
  base::ScopedTempDir temp_dir_;
  base::FilePath path_for_logging_;
  base::FilePath path_on_filesystem_;
};

}  // namespace modemfwd

#endif  // MODEMFWD_FIRMWARE_FILE_H_
