diff options
Diffstat (limited to 'ACE/apps/JAWS2/HTTPU/parse_url.h')
-rw-r--r-- | ACE/apps/JAWS2/HTTPU/parse_url.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/ACE/apps/JAWS2/HTTPU/parse_url.h b/ACE/apps/JAWS2/HTTPU/parse_url.h new file mode 100644 index 00000000000..64260edd2a8 --- /dev/null +++ b/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 { NONE, STRDUP, SCHEME, 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_; + + char *scheme_; + char *user_; + char *passwd_; + char *host_; + int port_; + char *url_path_; + + int error_; + int is_cgi_; +}; + +#endif /* !defined (HTTPU_HTTP_PARSE_H) */ |