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
16namespace rtc {
17
18// Decode all encoded characters. Also decode + as space.
19int UrlDecode(const char *source, char *dest);
20
21// Decode all encoded characters.
22int UrlDecodeWithoutEncodingSpaceAsPlus(const char *source, char *dest);
23
24// Encode all characters except alphas, numbers, and -_.!~*'()
25// Also encode space as +.
26int UrlEncode(const char *source, char *dest, unsigned max);
27
28// Encode all characters except alphas, numbers, and -_.!~*'()
29int UrlEncodeWithoutEncodingSpaceAsPlus(const char *source, char *dest,
30                                        unsigned max);
31
32// Encode only unsafe chars, including \ "^&`<>[]{}
33// Also encode space as %20, instead of +
34int UrlEncodeOnlyUnsafeChars(const char *source, char *dest, unsigned max);
35
36std::string UrlDecodeString(const std::string & encoded);
37std::string UrlDecodeStringWithoutEncodingSpaceAsPlus(
38    const std::string & encoded);
39std::string UrlEncodeString(const std::string & decoded);
40std::string UrlEncodeStringWithoutEncodingSpaceAsPlus(
41    const std::string & decoded);
42std::string UrlEncodeStringForOnlyUnsafeChars(const std::string & decoded);
43
44#endif
45
46}  // namespace rtc
47