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// Contains the definition of a few helper functions used for generating sync
6// URLs.
7
8#include "sync/engine/net/url_translator.h"
9
10#include "base/basictypes.h"
11#include "base/port.h"
12#include "net/base/escape.h"
13
14using std::string;
15
16namespace syncer {
17
18namespace {
19// Parameters that the server understands. (here, a-Z)
20const char kParameterClient[] = "client";
21const char kParameterClientID[] = "client_id";
22
23#if defined(GOOGLE_CHROME_BUILD)
24const char kClientName[] = "Google Chrome";
25#else
26const char kClientName[] = "Chromium";
27#endif  // defined(GOOGLE_CHROME_BUILD)
28}
29
30// Convenience wrappers around CgiEscapePath().
31string CgiEscapeString(const char* src) {
32  return CgiEscapeString(string(src));
33}
34
35string CgiEscapeString(const string& src) {
36  return net::EscapeUrlEncodedData(src, true);
37}
38
39// This method appends the query string to the sync server path.
40string MakeSyncServerPath(const string& path, const string& query_string) {
41  string result = path;
42  result.append("?");
43  result.append(query_string);
44  return result;
45}
46
47string MakeSyncQueryString(const string& client_id) {
48  string query;
49  query += kParameterClient;
50  query += "=" + CgiEscapeString(kClientName);
51  query += "&";
52  query += kParameterClientID;
53  query += "=" + CgiEscapeString(client_id);
54  return query;
55}
56
57}  // namespace syncer
58