print_job_handler.cc revision 558790d6acca3451cf3a6b497803a5f07d0bec58
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "cloud_print/gcp20/prototype/print_job_handler.h"
6
7#include "base/file_util.h"
8#include "base/logging.h"
9#include "base/strings/stringprintf.h"
10
11namespace {
12
13const base::FilePath::CharType kJobsPath[] = FILE_PATH_LITERAL("printjobs");
14
15}  // namespace
16
17PrintJobHandler::PrintJobHandler() {
18}
19
20PrintJobHandler::~PrintJobHandler() {
21}
22
23bool PrintJobHandler::SavePrintJob(const std::string& data,
24                                   const std::string& ticket,
25                                   const std::string& job_name,
26                                   const std::string& title) {
27  VLOG(1) << "Printing printjob: \"" + title + "\"";
28  base::FilePath directory(kJobsPath);
29
30  using file_util::CreateDirectory;
31
32  if (!base::DirectoryExists(directory) && !CreateDirectory(directory)) {
33    LOG(WARNING) << "Cannot create directory: " << directory.value();
34    return false;
35  }
36
37  directory = directory.AppendASCII(job_name);
38
39  if (!base::DirectoryExists(directory) && !CreateDirectory(directory)) {
40    LOG(WARNING) << "Cannot create directory: " << directory.value();
41    return false;
42  }
43
44  int written = file_util::WriteFile(directory.AppendASCII("ticket.xml"),
45                                     ticket.data(),
46                                     static_cast<int>(ticket.size()));
47  if (static_cast<size_t>(written) != ticket.size()) {
48    LOG(WARNING) << "Cannot save ticket.";
49    return false;
50  }
51
52  written = file_util::WriteFile(directory.AppendASCII("data.pdf"),
53                                 data.data(),
54                                 static_cast<int>(data.size()));
55  if (static_cast<size_t>(written) != data.size()) {
56    LOG(WARNING) << "Cannot save data.";
57    return false;
58  }
59
60  LOG(INFO) << "Saved printjob: " << job_name;
61  return true;
62}
63
64