#ifndef DBOX_HTTP_H

#define DBOX_HTTP_H

#include <time.h>
#include <string>

class httpt
 {
 public:
  string command, url, version;
  enum methodt { GET, PUT, POST, UNKNOWN } method;
  
  struct parametert
   {
    char *name, *inhalt;
    parametert *n;
   } *parameter, *header;

  const char *getparameter(const char *name);
  const char *get_parameter(const string &name);
  const char *get_header(const char *name);
  void clear();
  void basic_auth(char *username, char *password, int maxlen);

  httpt();
  ~httpt();

 protected:
  const char *get_parameterfromlist(const char *name, parametert *list);
  void parse_parameter(char *str);  
  void parse_command();
  void decode_url(string &url);
 };

class handle_httpt:public httpt
 {
 public:
  int handle;

  void read_request(int _handle);  
  
 protected:
  void read_command();
  void read_header();
  void read_line(string &buffer);
 };
 
class cgi_httpt:public httpt
 {
 public:
  void cgi_parse();
 };
 
class get_url_httpt:public httpt
 {
 public:
  void parse_get_url(const string &_url);
 };

void mkrfc1123(time_t t, char *s);

#endif


syntax highlighted by Code2HTML, v. 0.9.1