Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef GNASH_URL_H
00020 #define GNASH_URL_H
00021
00022 #include "dsodefs.h"
00023
00024 #include <iosfwd>
00025 #include <string>
00026 #include <map>
00027
00028 namespace gnash {
00029
00031
00034 class DSOEXPORT URL
00035 {
00036
00037 public:
00038
00039 friend std::ostream& operator<< (std::ostream&o, const URL& u);
00040
00042
00048 URL(const std::string& absolute_url);
00049
00052
00055 URL(const std::string& relative_url, const URL& baseurl);
00056
00058 const std::string& protocol() const { return _proto; }
00059
00061
00064 const std::string& hostname() const { return _host; }
00065
00067
00071 const std::string& port() const { return _port; }
00072
00074
00076 const std::string& path() const { return _path; }
00077
00079
00082 const std::string& anchor() const { return _anchor; }
00083
00085
00088 const std::string& querystring() const { return _querystring; }
00089
00091
00092 void set_querystring(const std::string& value) { _querystring = value; }
00093
00095
00097 std::string str() const;
00098
00100
00113 static void parse_querystring(const std::string& query_string,
00114 std::map<std::string, std::string>& target_map);
00115
00119
00133 static void encode(std::string& str);
00134
00144 static std::string encode(const std::string& str);
00145
00149
00158 static void decode(std::string& str);
00159
00160 private:
00161 void init_absolute(const std::string& absurl);
00162
00163 void init_relative(const std::string& relurl, const URL& baseurl);
00164
00166 void split_anchor_from_path();
00167
00169 void split_port_from_host();
00170
00172 void split_querystring_from_path();
00173
00175
00180 void normalize_path(std::string& path);
00181
00182 std::string _proto;
00183 std::string _host;
00184 std::string _port;
00185 std::string _path;
00186 std::string _anchor;
00187 std::string _querystring;
00188 };
00189
00190 DSOEXPORT std::ostream& operator<< (std::ostream&o, const URL& u);
00191
00192 }
00193
00194
00195 #endif
00196