1 /*
2  *  Copyright 2008 The WebRTC Project Authors. All rights reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #ifndef _URLENCODE_H_
12 #define _URLENCODE_H_
13 
14 #include <string>
15 
16 namespace rtc {
17 
18 // Decode all encoded characters. Also decode + as space.
19 int UrlDecode(const char *source, char *dest);
20 
21 // Decode all encoded characters.
22 int UrlDecodeWithoutEncodingSpaceAsPlus(const char *source, char *dest);
23 
24 // Encode all characters except alphas, numbers, and -_.!~*'()
25 // Also encode space as +.
26 int UrlEncode(const char *source, char *dest, unsigned max);
27 
28 // Encode all characters except alphas, numbers, and -_.!~*'()
29 int UrlEncodeWithoutEncodingSpaceAsPlus(const char *source, char *dest,
30                                         unsigned max);
31 
32 // Encode only unsafe chars, including \ "^&`<>[]{}
33 // Also encode space as %20, instead of +
34 int UrlEncodeOnlyUnsafeChars(const char *source, char *dest, unsigned max);
35 
36 std::string UrlDecodeString(const std::string & encoded);
37 std::string UrlDecodeStringWithoutEncodingSpaceAsPlus(
38     const std::string & encoded);
39 std::string UrlEncodeString(const std::string & decoded);
40 std::string UrlEncodeStringWithoutEncodingSpaceAsPlus(
41     const std::string & decoded);
42 std::string UrlEncodeStringForOnlyUnsafeChars(const std::string & decoded);
43 
44 #endif
45 
46 }  // namespace rtc
47