summaryrefslogtreecommitdiff
path: root/trunk/ACE/apps/JAWS2/HTTPU/parse_url.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/ACE/apps/JAWS2/HTTPU/parse_url.h')
-rw-r--r--trunk/ACE/apps/JAWS2/HTTPU/parse_url.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/trunk/ACE/apps/JAWS2/HTTPU/parse_url.h b/trunk/ACE/apps/JAWS2/HTTPU/parse_url.h
new file mode 100644
index 00000000000..fa05b72ceb3
--- /dev/null
+++ b/trunk/ACE/apps/JAWS2/HTTPU/parse_url.h
@@ -0,0 +1,63 @@
+/* -*- c++ -*- */
+// $Id$
+
+#ifndef HTTPU_HTTP_PARSE_H
+#define HTTPU_HTTP_PARSE_H
+
+#include "HTTPU/http_export.h"
+
+class HTTPU_Export HTTP_Parse_URL
+{
+ // CAVEAT:
+
+ // The user of the class is responsible for testing the difference
+ // between a missing username versus an empty one. Same goes for
+ // password The RFC (1738) makes the differentiation for username
+ // and password. If the hostname is missing (or empty), this class
+ // always returns a null value for the host.
+
+public:
+ HTTP_Parse_URL (const char *url = 0);
+ ~HTTP_Parse_URL (void);
+
+ void init (const char *url);
+
+ enum URL_SCHEME { HTTP, FTP };
+
+ const char *scheme (void) const;
+ const char *user (void) const;
+ const char *passwd (void) const;
+ const char *host (void) const;
+ int port (void) const;
+ const char *url_path (void) const;
+
+ enum URL_ERROR { URL_ERROR_NONE, URL_ERROR_STRDUP, URL_ERROR_SCHEME, URL_ERROR_SLASHSLASH };
+
+ int error (void) const { return( error_ ); }
+
+ int is_cgi (void) const;
+
+private:
+ void parse_url (void);
+ void parse_scheme (char *&p);
+ void parse_host (char *&p);
+ void parse_url_path (char *&p);
+ void is_cgi (const char *path);
+
+ void set_port_from_scheme (void);
+
+private:
+ char *url_;
+
+ const char *scheme_;
+ const char *user_;
+ const char *passwd_;
+ const char *host_;
+ int port_;
+ const char *url_path_;
+
+ int error_;
+ int is_cgi_;
+};
+
+#endif /* !defined (HTTPU_HTTP_PARSE_H) */