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_utils::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
GetUrlForJobDelete(const GURL
& cloud_print_server_url
,
48 const std::string
& job_id
);
49 GURL
GetUrlForJobStatusUpdate(const GURL
& cloud_print_server_url
,
50 const std::string
& job_id
,
51 const std::string
& status_string
,
53 GURL
GetUrlForUserMessage(const GURL
& cloud_print_server_url
,
54 const std::string
& message_id
);
55 GURL
GetUrlForGetAuthCode(const GURL
& cloud_print_server_url
,
56 const std::string
& oauth_client_id
,
57 const std::string
& proxy_id
);
59 // Parses the response data for any cloud print server request. The method
60 // returns null if there was an error in parsing the JSON. The succeeded
61 // value returns the value of the "success" value in the response JSON.
62 // Returns the response as a dictionary value.
63 scoped_ptr
<base::DictionaryValue
> ParseResponseJSON(
64 const std::string
& response_data
,
67 // Returns the MIME type of multipart with |mime_boundary|.
68 std::string
GetMultipartMimeType(const std::string
& mime_boundary
);
70 // Create a MIME boundary marker (27 '-' characters followed by 16 hex digits).
71 void CreateMimeBoundaryForUpload(std::string
*out
);
73 // Returns an MD5 hash for |printer_tags| and the default required tags.
74 std::string
GetHashOfPrinterTags(const PrinterTags
& printer_tags
);
76 // Returns the post data for |printer_tags| and the default required tags.
77 std::string
GetPostDataForPrinterTags(
78 const PrinterTags
& printer_tags
,
79 const std::string
& mime_boundary
,
80 const std::string
& proxy_tag_prefix
,
81 const std::string
& tags_hash_tag_name
);
83 // Get the cloud print auth header from |auth_token|.
84 std::string
GetCloudPrintAuthHeader(const std::string
& auth_token
);
86 } // namespace cloud_print
88 #endif // CHROME_COMMON_CLOUD_PRINT_CLOUD_PRINT_HELPERS_H_