summaryrefslogtreecommitdiff
path: root/indra/llcommon/lluri.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llcommon/lluri.h')
-rw-r--r--indra/llcommon/lluri.h87
1 files changed, 50 insertions, 37 deletions
diff --git a/indra/llcommon/lluri.h b/indra/llcommon/lluri.h
index 514628237d..b5c3a84173 100644
--- a/indra/llcommon/lluri.h
+++ b/indra/llcommon/lluri.h
@@ -26,42 +26,55 @@ class LLApp;
class LLURI
{
public:
- LLURI();
- LLURI(const std::string& escaped_str);
- // construct from escaped string, as would be transmitted on the net
+ LLURI();
+ LLURI(const std::string& escaped_str);
+ // construct from escaped string, as would be transmitted on the net
- ~LLURI();
+ ~LLURI();
- static LLURI buildHTTP(const std::string& host_port,
- const LLSD& path);
- static LLURI buildHTTP(const std::string& host_port,
- const LLSD& path,
- const LLSD& query);
-
- std::string asString() const;
- // the whole URI, escaped as needed
-
- // Parts of a URI
- // These functions return parts of the decoded URI. The returned
- // strings are un-escaped as needed
-
- // for all schemes
- std::string scheme() const; // ex.: "http", note lack of colon
- std::string opaque() const; // everything after the colon
+ static LLURI buildHTTP(const std::string& prefix,
+ const LLSD& path);
+ static LLURI buildHTTP(const std::string& prefix,
+ const LLSD& path,
+ const LLSD& query);
+ // prefix is either a full URL prefix of the form "http://example.com:8080",
+ // or it can be simply a host and optional port like "example.com" or
+ // "example.com:8080", in these cases, the "http://" will be added
- // for schemes that follow path like syntax (http, https, ftp)
- std::string authority() const; // ex.: "bob@host.com:80"
- std::string hostName() const; // ex.: "host.com"
- U16 hostPort() const; // ex.: 80, will include implicit port
- std::string path() const; // ex.: "/abc/def", includes leading slash
-// LLSD pathArray() const; // above decoded into an array of strings
- std::string query() const; // ex.: "x=34", section after "?"
- LLSD queryMap() const; // above decoded into a map
- static LLSD queryMap(std::string escaped_query_string);
+ static LLURI buildHTTP(const std::string& host,
+ const U32& port,
+ const LLSD& path);
+ static LLURI buildHTTP(const std::string& host,
+ const U32& port,
+ const LLSD& path,
+ const LLSD& query);
+
+
+ std::string asString() const;
+ // the whole URI, escaped as needed
+
+ // Parts of a URI
+ // These functions return parts of the decoded URI. The returned
+ // strings are un-escaped as needed
+
+ // for all schemes
+ std::string scheme() const; // ex.: "http", note lack of colon
+ std::string opaque() const; // everything after the colon
+
+ // for schemes that follow path like syntax (http, https, ftp)
+ std::string authority() const; // ex.: "host.com:80"
+ std::string hostName() const; // ex.: "host.com"
+ U16 hostPort() const; // ex.: 80, will include implicit port
+ std::string path() const; // ex.: "/abc/def", includes leading slash
+ // LLSD pathArray() const; // above decoded into an array of strings
+ std::string query() const; // ex.: "x=34", section after "?"
+ LLSD queryMap() const; // above decoded into a map
+ static LLSD queryMap(std::string escaped_query_string);
- // Escaping Utilities
- static std::string escape(const std::string& str);
- static std::string unescape(const std::string& str);
+ // Escaping Utilities
+ // Escape a string by urlencoding all the characters that aren't in the allowed string.
+ static std::string escape(const std::string& str, const std::string & allowed);
+ static std::string unescape(const std::string& str);
// Functions for building specific URIs for web services
static LLURI buildAgentPresenceURI(const LLUUID& agent_id, LLApp* app);
@@ -71,11 +84,11 @@ public:
static LLURI buildInventoryHostURI(const LLUUID& agent_id, LLApp* app);
private:
- std::string mScheme;
- std::string mEscapedOpaque;
- std::string mEscapedAuthority;
- std::string mEscapedPath;
- std::string mEscapedQuery;
+ std::string mScheme;
+ std::string mEscapedOpaque;
+ std::string mEscapedAuthority;
+ std::string mEscapedPath;
+ std::string mEscapedQuery;
};
#endif // LL_LLURI_H