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.
5 #ifndef CHROME_COMMON_CLOUD_PRINT_CLOUD_PRINT_HELPERS_H_
6 #define CHROME_COMMON_CLOUD_PRINT_CLOUD_PRINT_HELPERS_H_
12 #include "base/memory/scoped_ptr.h"
17 class DictionaryValue
;
20 // Helper consts and methods for both cloud print and chrome browser.
21 namespace cloud_print
{
23 // A map representing printer tags.
24 typedef std::map
<std::string
, std::string
> PrinterTags
;
26 // Appends a relative path to the url making sure to append a '/' if the
27 // URL's path does not end with a slash. It is assumed that |path| does not
29 // NOTE: Since we ALWAYS want to append here, we simply append the path string
30 // instead of calling url::ResolveRelative. The input |url| may or may not
31 // contain a '/' at the end.
32 std::string
AppendPathToUrl(const GURL
& url
, const std::string
& path
);
34 GURL
GetUrlForSearch(const GURL
& cloud_print_server_url
);
35 GURL
GetUrlForSubmit(const GURL
& cloud_print_server_url
);
36 GURL
GetUrlForPrinterList(const GURL
& cloud_print_server_url
,
37 const std::string
& proxy_id
);
38 GURL
GetUrlForPrinterRegistration(const GURL
& cloud_print_server_url
);
39 GURL
GetUrlForPrinterUpdate(const GURL
& cloud_print_server_url
,
40 const std::string
& printer_id
);
41 GURL
GetUrlForPrinterDelete(const GURL
& cloud_print_server_url
,
42 const std::string
& printer_id
,
43 const std::string
& reason
);
44 GURL
GetUrlForJobFetch(const GURL
& cloud_print_server_url
,
45 const std::string
& printer_id
,
46 const std::string
& reason
);
47 GURL
GetUrlForJobCjt(const GURL
& cloud_print_server_url
,
48 const std::string
& job_id
,
49 const std::string
& reason
);
50 GURL
GetUrlForJobDelete(const GURL
& cloud_print_server_url
,
51 const std::string
& job_id
);
52 GURL
GetUrlForJobStatusUpdate(const GURL
& cloud_print_server_url
,
53 const std::string
& job_id
,
54 const std::string
& status_string
,
56 GURL
GetUrlForUserMessage(const GURL
& cloud_print_server_url
,
57 const std::string
& message_id
);
58 GURL
GetUrlForGetAuthCode(const GURL
& cloud_print_server_url
,
59 const std::string
& oauth_client_id
,
60 const std::string
& proxy_id
);
62 // Parses the response data for any cloud print server request. The method
63 // returns null if there was an error in parsing the JSON. The succeeded
64 // value returns the value of the "success" value in the response JSON.
65 // Returns the response as a dictionary value.
66 scoped_ptr
<base::DictionaryValue
> ParseResponseJSON(
67 const std::string
& response_data
,
70 // Returns the MIME type of multipart with |mime_boundary|.
71 std::string
GetMultipartMimeType(const std::string
& mime_boundary
);
73 // Create a MIME boundary marker (27 '-' characters followed by 16 hex digits).
74 void CreateMimeBoundaryForUpload(std::string
*out
);
76 // Returns an MD5 hash for |printer_tags| and the default required tags.
77 std::string
GetHashOfPrinterTags(const PrinterTags
& printer_tags
);
79 // Returns the post data for |printer_tags| and the default required tags.
80 std::string
GetPostDataForPrinterTags(
81 const PrinterTags
& printer_tags
,
82 const std::string
& mime_boundary
,
83 const std::string
& proxy_tag_prefix
,
84 const std::string
& tags_hash_tag_name
);
86 // Get the cloud print auth header from |auth_token|.
87 std::string
GetCloudPrintAuthHeader(const std::string
& auth_token
);
89 } // namespace cloud_print
91 #endif // CHROME_COMMON_CLOUD_PRINT_CLOUD_PRINT_HELPERS_H_