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