dmpserverrequest.h 2.8 KB
/*
 * @Author: your name
 * @Date: 2021-04-26 10:08:44
 * @LastEditTime: 2021-04-26 13:37:44
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: /dmapserver/src/server/dmpserverrequest.h
 */
/**************************************************************************
 * file:              dmpserverrequest.h
 
 * Author:            wanzhongping
 * Date:              2021-01-07 17:34:30
 * Email:             zhongpingw@chinadci.com
 * copyright:         广州城市信息研究所有限公司
 ***************************************************************************/
 
#ifndef __dmpserverrequest_h__
#define __dmpserverrequest_h__

#include "dmap_server.h"
#include <string>
#include <map>
#include "dmpserverparameters.h"

class SERVER_EXPORT DmpServerRequest
{
public:
    typedef std::map<std::string, std::string> Headers;
    enum Method { 
      GET_METHOD, 
      POST_METHOD
    };

    DmpServerRequest();
    DmpServerRequest(const std::string &url, DmpServerRequest::Method method = DmpServerRequest::GET_METHOD, const DmpServerRequest::Headers &headers = DmpServerRequest::Headers());

    std::string url() const { return url_; }
    void setUrl(const std::string &url);
    Method method() const { return method_; }
    void setMethod(DmpServerRequest::Method method);
    std::string protocol() const { return protocol_; }
    std::string domain() const { return domain_; }
    std::string port() const { return port_; }
    std::string path() const { return path_; }
    std::string enpath() const { return enpath_; }
    void setPath(const std::string &path) { path_ = path;}
    void setEnPath(const std::string &enPath) { enpath_ = enPath;}
    std::string query() const { return query_; }
    void setQuery(const std::string &queryString);
    std::string header( const std::string &name ) const;
    void setHeader(const std::string &name, const std::string &value);
    Headers headers() const { return headers_; }
    bool isRestful() const { return isRestful_; }

    DmpServerParameters serverParameters() const { return params_; }
    void setParameter(const std::string &name, const std::string &value);

    //post的数据
    virtual const void * GetData() const;
	  virtual int GetDataLength() const;
  
protected:
    Headers headers_;
    DmpServerParameters params_;
    std::string url_;
    Method method_;
    std::string protocol_;
    std::string domain_;
    std::string port_;
    std::string path_;
    std::string enpath_;
    std::string query_;
    bool isRestful_;

private:   
    bool parseUrl(const std::string& url, 
                  std::string &protocol, 
                  std::string &domain, 
                  std::string &port, 
                  std::string &path, 
                  std::string &query_string);
};

#endif