| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/cloud_devices/common/cloud_devices_urls.h" |
| |
| #include "base/command_line.h" |
| #include "base/strings/string_util.h" |
| #include "base/strings/stringprintf.h" |
| #include "components/cloud_devices/common/cloud_devices_switches.h" |
| #include "google_apis/gaia/gaia_urls.h" |
| #include "net/base/url_util.h" |
| |
| namespace cloud_devices { |
| |
| const char kCloudPrintAuthScope[] = |
| "https://www.googleapis.com/auth/cloudprint"; |
| |
| const char kCloudDevicesAuthScope[] = |
| "https://www.googleapis.com/auth/clouddevices"; |
| |
| const char kCloudPrintLearnMoreURL[] = |
| "https://www.google.com/support/cloudprint"; |
| |
| const char kCloudPrintTestPageURL[] = |
| "http://www.google.com/landing/cloudprint/enable.html?print=true"; |
| |
| namespace { |
| |
| // Url must not be matched by "urls" section of |
| // cloud_print_app/manifest.json. If it's matched, print driver dialog will |
| // open sign-in page in separate window. |
| const char kCloudPrintURL[] = "https://www.google.com/cloudprint"; |
| |
| const char kCloudDevicesUrl[] = "https://www.googleapis.com/clouddevices/v1"; |
| |
| } |
| |
| // Returns the root service URL for the cloud print service. The default is to |
| // point at the Google Cloud Print service. This can be overridden by the |
| // command line or by the user preferences. |
| GURL GetCloudPrintURL() { |
| const CommandLine* command_line = CommandLine::ForCurrentProcess(); |
| GURL cloud_print_url( |
| command_line->GetSwitchValueASCII(switches::kCloudPrintURL)); |
| if (cloud_print_url.is_empty()) |
| cloud_print_url = GURL(kCloudPrintURL); |
| return cloud_print_url; |
| } |
| |
| GURL GetCloudPrintRelativeURL(const std::string& relative_path) { |
| GURL url = GetCloudPrintURL(); |
| std::string path; |
| static const char kURLPathSeparator[] = "/"; |
| base::TrimString(url.path(), kURLPathSeparator, &path); |
| std::string trimmed_path; |
| base::TrimString(relative_path, kURLPathSeparator, &trimmed_path); |
| path += kURLPathSeparator; |
| path += trimmed_path; |
| GURL::Replacements replacements; |
| replacements.SetPathStr(path); |
| return url.ReplaceComponents(replacements); |
| } |
| |
| GURL GetCloudPrintSigninURL() { |
| GURL url(GaiaUrls::GetInstance()->service_login_url()); |
| url = net::AppendQueryParameter(url, "service", "cloudprint"); |
| url = net::AppendQueryParameter(url, "sarp", "1"); |
| std::string continue_str = GetCloudPrintURL().spec(); |
| url = net::AppendQueryParameter(url, "continue", continue_str); |
| return url; |
| } |
| |
| GURL GetCloudPrintAddAccountURL() { |
| GURL url(GaiaUrls::GetInstance()->add_account_url()); |
| url = net::AppendQueryParameter(url, "service", "cloudprint"); |
| url = net::AppendQueryParameter(url, "sarp", "1"); |
| std::string continue_str = GetCloudPrintURL().spec(); |
| url = net::AppendQueryParameter(url, "continue", continue_str); |
| return url; |
| } |
| |
| GURL GetCloudPrintEnableURL(const std::string& proxy_id) { |
| GURL url = GetCloudPrintRelativeURL("enable_chrome_connector/enable.html"); |
| url = net::AppendQueryParameter(url, "proxy", proxy_id); |
| return url; |
| } |
| |
| GURL GetCloudPrintEnableWithSigninURL(const std::string& proxy_id) { |
| GURL url(GaiaUrls::GetInstance()->service_login_url()); |
| url = net::AppendQueryParameter(url, "service", "cloudprint"); |
| url = net::AppendQueryParameter(url, "sarp", "1"); |
| std::string continue_str = GetCloudPrintEnableURL(proxy_id).spec(); |
| return net::AppendQueryParameter(url, "continue", continue_str); |
| } |
| |
| GURL GetCloudPrintManageDeviceURL(const std::string& device_id) { |
| std::string ref = "printers/" + device_id; |
| GURL::Replacements replacements; |
| replacements.SetRefStr(ref); |
| return GetCloudPrintURL().ReplaceComponents(replacements); |
| } |
| |
| GURL GetCloudDevicesURL() { |
| const CommandLine* command_line = CommandLine::ForCurrentProcess(); |
| GURL cloud_print_url( |
| command_line->GetSwitchValueASCII(switches::kCloudDevicesURL)); |
| if (cloud_print_url.is_empty()) |
| cloud_print_url = GURL(kCloudDevicesUrl); |
| return cloud_print_url; |
| } |
| |
| GURL GetCloudDevicesRelativeURL(const std::string& relative_path) { |
| GURL url = GetCloudDevicesURL(); |
| std::string path; |
| const char kURLPathSeparator[] = "/"; |
| base::TrimString(url.path(), kURLPathSeparator, &path); |
| std::string trimmed_path; |
| base::TrimString(relative_path, kURLPathSeparator, &trimmed_path); |
| path += kURLPathSeparator; |
| path += trimmed_path; |
| GURL::Replacements replacements; |
| replacements.SetPathStr(path); |
| return url.ReplaceComponents(replacements); |
| } |
| |
| } // namespace cloud_devices |