| // 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 LIBBRILLO_BRILLO_URL_UTILS_H_ |
| #define LIBBRILLO_BRILLO_URL_UTILS_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include <base/compiler_specific.h> |
| #include <base/macros.h> |
| #include <brillo/brillo_export.h> |
| #include <brillo/data_encoding.h> |
| |
| namespace brillo { |
| |
| namespace url { |
| |
| // Appends a subpath to url and delimiting then with '/' if the path doesn't |
| // end with it already. Also handles URLs with query parameters/fragment. |
| BRILLO_EXPORT std::string Combine( |
| const std::string& url, const std::string& subpath) WARN_UNUSED_RESULT; |
| BRILLO_EXPORT std::string CombineMultiple(const std::string& url, |
| const std::vector<std::string>& parts) |
| WARN_UNUSED_RESULT; |
| |
| // Removes the query string/fragment from |url| and returns the query string. |
| // This method actually modifies |url|. So, if you call it on this: |
| // http://www.test.org/?foo=bar |
| // it will modify |url| to "http://www.test.org/" and return "?foo=bar" |
| BRILLO_EXPORT std::string TrimOffQueryString(std::string* url); |
| |
| // Returns the query string, if available. |
| // For example, for the following URL: |
| // http://server.com/path/to/object?k=v&foo=bar#fragment |
| // Here: |
| // http://server.com/path/to/object - is the URL of the object, |
| // ?k=v&foo=bar - URL query string |
| // #fragment - URL fragment string |
| // If |remove_fragment| is true, the function returns the query string without |
| // the fragment. Otherwise the fragment is included as part of the result. |
| BRILLO_EXPORT std::string GetQueryString(const std::string& url, |
| bool remove_fragment); |
| |
| // Parses the query string into a set of key-value pairs. |
| BRILLO_EXPORT data_encoding::WebParamList GetQueryStringParameters( |
| const std::string& url); |
| |
| // Returns a value of the specified query parameter, or empty string if missing. |
| BRILLO_EXPORT std::string GetQueryStringValue(const std::string& url, |
| const std::string& name); |
| BRILLO_EXPORT std::string GetQueryStringValue( |
| const data_encoding::WebParamList& params, const std::string& name); |
| |
| // Removes the query string and/or a fragment part from URL. |
| // If |remove_fragment| is specified, the fragment is also removed. |
| // For example: |
| // http://server.com/path/to/object?k=v&foo=bar#fragment |
| // true -> http://server.com/path/to/object |
| // false -> http://server.com/path/to/object#fragment |
| BRILLO_EXPORT std::string RemoveQueryString( |
| const std::string& url, bool remove_fragment) WARN_UNUSED_RESULT; |
| |
| // Appends a single query parameter to the URL. |
| BRILLO_EXPORT std::string AppendQueryParam(const std::string& url, |
| const std::string& name, |
| const std::string& value) |
| WARN_UNUSED_RESULT; |
| // Appends a list of query parameters to the URL. |
| BRILLO_EXPORT std::string AppendQueryParams( |
| const std::string& url, |
| const data_encoding::WebParamList& params) WARN_UNUSED_RESULT; |
| |
| // Checks if the URL has query parameters. |
| BRILLO_EXPORT bool HasQueryString(const std::string& url); |
| |
| } // namespace url |
| } // namespace brillo |
| |
| #endif // LIBBRILLO_BRILLO_URL_UTILS_H_ |