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 #ifndef CHROME_COMMON_CLOUD_PRINT_CLOUD_PRINT_HELPERS_H_ 6 #define CHROME_COMMON_CLOUD_PRINT_CLOUD_PRINT_HELPERS_H_ 7 8 #include <map> 9 #include <string> 10 #include <vector> 11 12 #include "base/memory/scoped_ptr.h" 13 14 class GURL; 15 16 namespace base { 17 class DictionaryValue; 18 } 19 20 // Helper consts and methods for both cloud print and chrome browser. 21 namespace cloud_print { 22 23 // A map representing printer tags. 24 typedef std::map<std::string, std::string> PrinterTags; 25 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 28 // begin with a '/'. 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); 33 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, 52 int connector_code); 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); 58 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, 65 bool* succeeded); 66 67 // Returns the MIME type of multipart with |mime_boundary|. 68 std::string GetMultipartMimeType(const std::string& mime_boundary); 69 70 // Create a MIME boundary marker (27 '-' characters followed by 16 hex digits). 71 void CreateMimeBoundaryForUpload(std::string *out); 72 73 // Returns an MD5 hash for |printer_tags| and the default required tags. 74 std::string GetHashOfPrinterTags(const PrinterTags& printer_tags); 75 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); 82 83 // Get the cloud print auth header from |auth_token|. 84 std::string GetCloudPrintAuthHeader(const std::string& auth_token); 85 86 } // namespace cloud_print 87 88 #endif // CHROME_COMMON_CLOUD_PRINT_CLOUD_PRINT_HELPERS_H_ 89