13345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch//
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Contains the definition of a few helper functions used for generating sync
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// URLs.
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/engine/net/url_translator.h"
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h"
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/port.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/base/escape.h"
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing std::string;
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace browser_sync {
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace {
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Parameters that the server understands. (here, a-Z)
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst char kParameterAuthToken[] = "auth";
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst char kParameterClientID[] = "client_id";
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Convenience wrappers around CgiEscapePath().
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstring CgiEscapeString(const char* src) {
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  return CgiEscapeString(string(src));
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstring CgiEscapeString(const string& src) {
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  return EscapeUrlEncodedData(src);
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This method appends the query string to the sync server path.
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstring MakeSyncServerPath(const string& path, const string& query_string) {
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  string result = path;
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  result.append("?");
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  result.append(query_string);
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  return result;
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstring MakeSyncQueryString(const string& client_id) {
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  string query;
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  query += kParameterClientID;
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  query += "=" + CgiEscapeString(client_id);
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  return query;
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace browser_sync
49