OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 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 "chrome/service/cloud_print/cloud_print_helpers.h" | |
6 | |
7 #include "base/strings/stringprintf.h" | |
8 #include "chrome/common/cloud_print/cloud_print_constants.h" | |
9 #include "chrome/common/cloud_print/cloud_print_helpers.h" | |
10 #include "chrome/service/cloud_print/cloud_print_token_store.h" | |
11 #include "chrome/service/service_process.h" | |
12 | |
13 namespace { | |
14 | |
15 std::string StringFromJobStatus(cloud_print::PrintJobStatus status) { | |
16 std::string ret; | |
17 switch (status) { | |
18 case cloud_print::PRINT_JOB_STATUS_IN_PROGRESS: | |
19 ret = "IN_PROGRESS"; | |
20 break; | |
21 case cloud_print::PRINT_JOB_STATUS_ERROR: | |
22 ret = "ERROR"; | |
23 break; | |
24 case cloud_print::PRINT_JOB_STATUS_COMPLETED: | |
25 ret = "DONE"; | |
26 break; | |
27 default: | |
28 ret = "UNKNOWN"; | |
29 NOTREACHED(); | |
30 break; | |
31 } | |
32 return ret; | |
33 } | |
34 | |
35 } // namespace | |
36 | |
37 namespace cloud_print { | |
38 | |
39 GURL GetUrlForJobStatusUpdate(const GURL& cloud_print_server_url, | |
40 const std::string& job_id, | |
41 PrintJobStatus status, | |
42 int connector_code) { | |
43 return GetUrlForJobStatusUpdate(cloud_print_server_url, | |
44 job_id, | |
45 StringFromJobStatus(status), | |
46 connector_code); | |
47 } | |
48 | |
49 GURL GetUrlForJobStatusUpdate(const GURL& cloud_print_server_url, | |
50 const std::string& job_id, | |
51 const PrintJobDetails& details) { | |
52 std::string status_string = StringFromJobStatus(details.status); | |
53 std::string path(AppendPathToUrl(cloud_print_server_url, "control")); | |
54 GURL::Replacements replacements; | |
55 replacements.SetPathStr(path); | |
56 std::string query = | |
57 base::StringPrintf("jobid=%s&status=%s&code=%d&message=%s" | |
58 "&numpages=%d&pagesprinted=%d", | |
59 job_id.c_str(), | |
60 status_string.c_str(), | |
61 details.platform_status_flags, | |
62 details.status_message.c_str(), | |
63 details.total_pages, | |
64 details.pages_printed); | |
65 replacements.SetQueryStr(query); | |
66 return cloud_print_server_url.ReplaceComponents(replacements); | |
67 } | |
68 | |
69 std::string GetHashOfPrinterInfo( | |
70 const printing::PrinterBasicInfo& printer_info) { | |
71 return GetHashOfPrinterTags(printer_info.options); | |
72 } | |
73 | |
74 std::string GetPostDataForPrinterInfo( | |
75 const printing::PrinterBasicInfo& printer_info, | |
76 const std::string& mime_boundary) { | |
77 return GetPostDataForPrinterTags( | |
78 printer_info.options, | |
79 mime_boundary, | |
80 kCloudPrintServiceProxyTagPrefix, | |
81 kCloudPrintServiceTagsHashTagName); | |
82 } | |
83 | |
84 bool IsDryRunJob(const std::vector<std::string>& tags) { | |
85 return std::find(tags.begin(), tags.end(), | |
86 std::string(kCloudPrintServiceTagDryRunFlag)) != tags.end(); | |
87 } | |
88 | |
89 std::string GetCloudPrintAuthHeaderFromStore() { | |
90 CloudPrintTokenStore* token_store = CloudPrintTokenStore::current(); | |
91 if (!token_store || token_store->token().empty()) { | |
92 // Using LOG here for critical errors. GCP connector may run in the headless | |
93 // mode and error indication might be useful for user in that case. | |
94 LOG(ERROR) << "CP_PROXY: Missing OAuth token for request"; | |
95 return std::string(); | |
96 } | |
97 return GetCloudPrintAuthHeader(token_store->token()); | |
98 } | |
99 | |
100 } // namespace cloud_print | |
OLD | NEW |