// Copyright 2014 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.

#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "brillo/process.h"

namespace {

static const char kZipProcess[] = "/usr/bin/bzip2";

}  // namespace

namespace feedback_util {

// Compresses |data| into an archive, and reads it back into |compressed_logs|.
// |filename| is the name of the file to appear in the archive (if supported
// by type).
bool ZipString(const base::FilePath& filename,
               const std::string& data, std::string* compressed_logs) {
  base::FilePath temp_path;
  base::FilePath zip_file;

  if (!base::PathExists(base::FilePath(kZipProcess)))
    return false;

  // Create a temporary directory, put the logs into a file in it. Create
  // another temporary file to receive the zip file in.
  if (!base::CreateNewTempDirectory(std::string(), &temp_path))
    return false;
  if (base::WriteFile(temp_path.Append(filename),
                      data.c_str(), data.size()) == -1)
    return false;

  brillo::ProcessImpl zipprocess;
  zipprocess.AddArg(kZipProcess);
  zipprocess.AddArg(filename.value());
  zipprocess.RedirectOutput(temp_path.value());
  bool succeeded = base::CreateTemporaryFile(&zip_file) &&
      !zipprocess.Run() && base::ReadFileToString(zip_file, compressed_logs);

  base::DeleteFile(temp_path, true);
  base::DeleteFile(zip_file, false);

  return succeeded;
}

}  // namespace feedback_util
