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