// Copyright 2018 The Chromium 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 THIRD_PARTY_UNRAR_SRC_UNRAR_WRAPPER_H_
#define THIRD_PARTY_UNRAR_SRC_UNRAR_WRAPPER_H_

#include "base/files/file.h"
#include "base/files/file_path.h"
#include "base/files/platform_file.h"
#include "base/memory/scoped_refptr.h"

// Forward declare the unrar symbols needed for extraction, so users of
// RarReader don't need all the symbols from unrar.
class Archive;
class CmdExtract;
class CommandData;

namespace third_party_unrar {

// This class is used for extracting RAR files, one entry at a time.
class RarReader {
 public:
  struct EntryInfo {
    // The relative path of this entry, within the archive.
    base::FilePath file_path;

    // Whether the entry is a directory or a file.
    bool is_directory;

    // Whether the entry has encrypted contents.
    bool is_encrypted;

    // The actual size of the entry.
    size_t file_size;
  };

  RarReader();
  ~RarReader();

  // Opens the RAR archive in |rar_file|, and uses |temp_file| for extracting
  // each entry.
  bool Open(base::File rar_file, base::File temp_file);

  // Extracts the next entry in the RAR archive. Returns true on success and
  // updates the information in |current_entry()|.
  bool ExtractNextEntry();

  // Returns the EntryInfo for the most recently extracted entry in the RAR
  // archive.
  const EntryInfo& current_entry() { return current_entry_; }

 private:
  // The temporary file used for extracting each entry. This allows RAR
  // extraction to safely occur within a sandbox.
  base::File temp_file_;

  // The RAR archive being extracted.
  base::File rar_file_;

  // Information for the current entry in the RAR archive.
  EntryInfo current_entry_;

  // Unrar data structures needed for extraction.
  std::unique_ptr<Archive> archive_;
  std::unique_ptr<CmdExtract> extractor_;
  std::unique_ptr<CommandData> command_;
};

}  // namespace third_party_unrar

#endif  // THIRD_PARTY_UNRAR_SRC_UNRAR_WRAPPER_H_
