Commit 6c4b8b33 authored by jan.koester's avatar jan.koester
Browse files

api polish

parent 40b7ef7b
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -43,11 +43,14 @@ public:
        
    };
    
    void RequestEvent(netplus::con *curcon){
    void RequestEvent(libhttppp::HttpRequest *curreq){
        try{
            std::cout << "Parse Request\n" << std::endl;
            libhttppp::HttpRequest *curreq =(libhttppp::HttpRequest *) curcon;
            curcon->resizeRecvQueue(curreq->parse());
            try{
                curreq->resizeRecvQueue(curreq->parse());
            }catch(...){
                std::cerr << "Illegal request !" << std::endl;
            }
            const char *cururl=curreq->getRequestURL();
            if(strncmp(cururl,"/",strlen(cururl))==0){
                libhttppp::HttpResponse curres;
@@ -69,11 +72,11 @@ public:
                condat  << "</ul></body></html>";
                libhtmlpp::HtmlString html;
                libhtmlpp::print(condat.parse(),html);
                curres.send(curcon,html.c_str(),html.size());
                curres.send(curreq,html.c_str(),html.size());
            }else if(strncmp(cururl,"/httpbasicauth",strlen(cururl))==0 ||
                strncmp(cururl,"/httpdigestauth",strlen(cururl))==0){
                libhttppp::HttpAuth httpauth;
            httpauth.parse(&curreq);
            httpauth.parse(curreq);
            const char *username=httpauth.getUsername();
            const char *password=httpauth.getPassword();
            if(username && password){
@@ -96,7 +99,7 @@ public:
                curres.setContentType("text/html");
                libhtmlpp::HtmlString html;
                libhtmlpp::print(condat.parse(),html);
                curres.send(curcon,html.c_str(),html.size());
                curres.send(curreq,html.c_str(),html.size());
                return;
                }else{
                    libhttppp::HttpResponse curres;
@@ -110,7 +113,7 @@ public:
                    }
                    httpauth.setRealm("httpauthtest");
                    httpauth.setAuth(&curres);
                    curres.send(curcon,nullptr,0);
                    curres.send(curreq,nullptr,0);
                    return;
                }
            }else{
@@ -118,7 +121,7 @@ public:
                curres.setState(HTTP404);
                curres.setVersion(HTTPVERSION(1.1));
                curres.setContentType("text/html");
                curres.send(curcon,nullptr,0);
                curres.send(curreq,nullptr,0);
            }                
        }catch(libhttppp::HTTPException &e){
            std::cerr << e.what() << std::endl;
+9 −1
Original line number Diff line number Diff line
@@ -43,12 +43,19 @@ public:
    Controller(netplus::socket* serversocket) : HttpEvent(serversocket){
        
    };

    void RequestEvent(netplus::con *curcon){
            libhttppp::HttpRequest *curreq =(libhttppp::HttpRequest *) curcon;
            libhtmlpp::HtmlString formdat;
            try {
                std::cout << "Parse Request" << std::endl;
                curcon->resizeRecvQueue(curreq->parse());
                try{
                    curreq->resizeRecvQueue(curreq->parse());
                }catch(...){
                    curreq->cleanRecvData();
                    std::cerr << "Illegal Request !";
                    return;
                }
                Multiform(*curreq, formdat);
                URlform(*curreq, formdat);
                std::cout << "Send answer" << std::endl;
@@ -69,6 +76,7 @@ private:
    void Multiform(libhttppp::HttpRequest& curreq, libhtmlpp::HtmlString& condat) {
        libhttppp::HttpForm curform;
        curform.parse(&curreq);

        if (curform.getBoundary()) {
            condat << "Boundary: " << curform.getBoundary() << "<br>";
            for (libhttppp::HttpForm::MultipartFormData* curformdat = curform.getMultipartFormData(); curformdat; curformdat = curformdat->nextMultipartFormData()) {
+3 −4
Original line number Diff line number Diff line
@@ -38,14 +38,13 @@ public:
    Controller(netplus::socket* serversocket) : HttpEvent(serversocket){
        
    };
    void RequestEvent(netplus::con *curcon){
    void RequestEvent(libhttppp::HttpRequest *curreq){
        try{
            libhttppp::HttpRequest *curreq =(libhttppp::HttpRequest *) curcon;
            curcon->resizeRecvQueue(curreq->parse());
            curreq->resizeRecvQueue(curreq->parse());
            libhttppp::HttpResponse curres;
            const char *hello="<!DOCTYPE html><html><head><title>hello</title></head><body>Hello World</body></html>";
            curres.setContentType("text/html");
            curres.send(curcon,hello,strlen(hello));
            curres.send(curreq,hello,strlen(hello));
        }catch(libhttppp::HTTPException &e){
            std::cerr << e.what() << std::endl;
        }
+29 −0
Original line number Diff line number Diff line
@@ -51,6 +51,35 @@ void libhttppp::HttpEvent::deleteConnetion(netplus::con* curon){
    delete curon;
}

void libhttppp::HttpEvent::RequestEvent(HttpRequest *curreq){
}

void libhttppp::HttpEvent::ResponseEvent(HttpRequest *curreq){
}

void libhttppp::HttpEvent::ConnectEvent(HttpRequest *curreq){
}

void libhttppp::HttpEvent::DisconnectEvent(HttpRequest *curreq){
}

void libhttppp::HttpEvent::RequestEvent(netplus::con* curcon){
    RequestEvent((HttpRequest*)curcon);
}

void libhttppp::HttpEvent::ResponseEvent(netplus::con* curcon){
    ResponseEvent((HttpRequest*)curcon);
}

void libhttppp::HttpEvent::ConnectEvent(netplus::con* curcon){
    ConnectEvent((HttpRequest*)curcon);
}

void libhttppp::HttpEvent::DisconnectEvent(netplus::con* curcon){
    DisconnectEvent((HttpRequest*)curcon);
}



libhttppp::HttpD::HttpD(int argc, char** argv) {
    HTTPDCmdController= &cmdplus::CmdController::getInstance();
+12 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include <netplus/socket.h>
#include <netplus/eventapi.h>

#include "http.h"
#include "exception.h"

#pragma once
@@ -43,6 +44,17 @@ namespace libhttppp {
        HttpEvent(netplus::socket *ssock);
        void CreateConnetion(netplus::con **curon);
        void deleteConnetion(netplus::con *curon);

        virtual void RequestEvent(HttpRequest *curreq);
        virtual void ResponseEvent(HttpRequest *curreq);
        virtual void ConnectEvent(HttpRequest *curreq);
        virtual void DisconnectEvent(HttpRequest *curreq);
    private:
        void RequestEvent(netplus::con *curcon);
        void ResponseEvent(netplus::con *curcon);
        void ConnectEvent(netplus::con *curcon);
        void DisconnectEvent(netplus::con *curcon);

    };

    class HttpD {