|  | // Copyright 2014 The Chromium OS Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef BUFFET_DATA_ENCODING_H_ | 
|  | #define BUFFET_DATA_ENCODING_H_ | 
|  |  | 
|  | #include <string> | 
|  | #include <utility> | 
|  | #include <vector> | 
|  |  | 
|  | namespace buffet { | 
|  | namespace data_encoding { | 
|  |  | 
|  | typedef std::vector<std::pair<std::string, std::string>> WebParamList; | 
|  |  | 
|  | // Encode/escape string to be used in the query portion of a URL. | 
|  | // If |encodeSpaceAsPlus| is set to true, spaces are encoded as '+' instead | 
|  | // of "%20" | 
|  | std::string UrlEncode(const char* data, bool encodeSpaceAsPlus); | 
|  |  | 
|  | inline std::string UrlEncode(const char* data) { | 
|  | return UrlEncode(data, true); | 
|  | } | 
|  |  | 
|  | // Decodes/unescapes a URL. Replaces all %XX sequences with actual characters. | 
|  | // Also replaces '+' with spaces. | 
|  | std::string UrlDecode(const char* data); | 
|  |  | 
|  | // Converts a list of key-value pairs into a string compatible with | 
|  | // 'application/x-www-form-urlencoded' content encoding. | 
|  | std::string WebParamsEncode(const WebParamList& params, bool encodeSpaceAsPlus); | 
|  |  | 
|  | inline std::string WebParamsEncode(const WebParamList& params) { | 
|  | return WebParamsEncode(params, true); | 
|  | } | 
|  |  | 
|  | // Parses a string of '&'-delimited key-value pairs (separated by '=') and | 
|  | // encoded in a way compatible with 'application/x-www-form-urlencoded' | 
|  | // content encoding. | 
|  | WebParamList WebParamsDecode(const std::string& data); | 
|  |  | 
|  | }  // namespace data_encoding | 
|  | }  // namespace buffet | 
|  |  | 
|  | #endif  // BUFFET_DATA_ENCODING_H_ |