summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2023-07-27 02:30:15 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2023-07-27 02:30:15 +0100
commitf8184a8ca59ea3de55474b08b1dd349ad4adee2b (patch)
tree2f4d7af806ffcfa96b1bdb3e9fa11867c945bd01
parentRestructure FCGI libs (diff)
downloadicespider-f8184a8ca59ea3de55474b08b1dd349ad4adee2b.tar.bz2
icespider-f8184a8ca59ea3de55474b08b1dd349ad4adee2b.tar.xz
icespider-f8184a8ca59ea3de55474b08b1dd349ad4adee2b.zip
Simplified setup of CgiRequestBase
No need to call initialise() now all the environment data is passed to the constructor
-rw-r--r--icespider/fcgi/cgiRequest.cpp1
-rw-r--r--icespider/fcgi/cgiRequestBase.cpp28
-rw-r--r--icespider/fcgi/cgiRequestBase.h4
-rw-r--r--icespider/fcgi/fcgiRequest.cpp1
-rw-r--r--icespider/unittests/testFcgi.cpp10
-rw-r--r--icespider/unittests/testPerf.cpp5
6 files changed, 13 insertions, 36 deletions
diff --git a/icespider/fcgi/cgiRequest.cpp b/icespider/fcgi/cgiRequest.cpp
index 6dd5391..2692d07 100644
--- a/icespider/fcgi/cgiRequest.cpp
+++ b/icespider/fcgi/cgiRequest.cpp
@@ -6,7 +6,6 @@ namespace IceSpider {
CgiRequest::CgiRequest(Core * c, int argc, char ** argv, char ** env) :
CgiRequestBase(c, EnvNTL {env}, EnvArray {argv, static_cast<size_t>(argc)})
{
- initialize();
}
std::istream &
diff --git a/icespider/fcgi/cgiRequestBase.cpp b/icespider/fcgi/cgiRequestBase.cpp
index a403317..844a3db 100644
--- a/icespider/fcgi/cgiRequestBase.cpp
+++ b/icespider/fcgi/cgiRequestBase.cpp
@@ -33,23 +33,6 @@ namespace IceSpider {
CGI_CONST(HTTP_COOKIE);
CGI_CONST(REQUEST_METHOD);
- CgiRequestBase::CgiRequestBase(Core * c, const EnvArray envs, const EnvArray extra) : IHttpRequest(c)
- {
- for (const auto & envdata : {envs, extra}) {
- for (const auto & e : envdata) {
- addenv(e);
- }
- }
- }
-
- void
- CgiRequestBase::addenv(const std::string_view e)
- {
- if (const auto eq = e.find('='); eq != std::string_view::npos) {
- envmap.insert({e.substr(0, eq), e.substr(eq + 1)});
- }
- }
-
template<typename in, typename out>
inline void
mapVars(const std::string_view & vn, const in & envmap, out & map, const std::string_view & sp)
@@ -78,9 +61,16 @@ namespace IceSpider {
throw Ex();
}
- void
- CgiRequestBase::initialize()
+ CgiRequestBase::CgiRequestBase(Core * c, const EnvArray envs, const EnvArray extra) : IHttpRequest(c)
{
+ for (const auto & envdata : {envs, extra}) {
+ for (const std::string_view e : envdata) {
+ if (const auto eq = e.find('='); eq != std::string_view::npos) {
+ envmap.insert({e.substr(0, eq), e.substr(eq + 1)});
+ }
+ }
+ }
+
if (auto path = findFirstOrElse<Http400_BadRequest>(envmap, REDIRECT_URL, SCRIPT_NAME).substr(1);
// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
!path.empty()) {
diff --git a/icespider/fcgi/cgiRequestBase.h b/icespider/fcgi/cgiRequestBase.h
index 1d91ea4..4053f0c 100644
--- a/icespider/fcgi/cgiRequestBase.h
+++ b/icespider/fcgi/cgiRequestBase.h
@@ -1,8 +1,8 @@
#pragma once
-#include "http.h"
#include <case_less.h>
#include <flatMap.h>
+#include <http.h>
#include <ihttpRequest.h>
#include <iosfwd>
#include <maybeString.h>
@@ -21,8 +21,6 @@ namespace IceSpider {
using EnvNTL = std::basic_string_view<const char * const>;
CgiRequestBase(Core * c, const EnvArray envs, const EnvArray extra = {});
- void addenv(const std::string_view);
- void initialize();
public:
using VarMap = flatmap<std::string_view, std::string_view>;
diff --git a/icespider/fcgi/fcgiRequest.cpp b/icespider/fcgi/fcgiRequest.cpp
index 2c467a7..fb56728 100644
--- a/icespider/fcgi/fcgiRequest.cpp
+++ b/icespider/fcgi/fcgiRequest.cpp
@@ -4,7 +4,6 @@ namespace IceSpider {
FcgiRequest::FcgiRequest(Core * c, FCGX_Request * r) :
CgiRequestBase(c, EnvNTL {r->envp}), inputbuf(r->in), input(&inputbuf), outputbuf(r->out), output(&outputbuf)
{
- initialize();
}
std::istream &
diff --git a/icespider/unittests/testFcgi.cpp b/icespider/unittests/testFcgi.cpp
index 591ce78..d461c84 100644
--- a/icespider/unittests/testFcgi.cpp
+++ b/icespider/unittests/testFcgi.cpp
@@ -53,10 +53,7 @@ namespace std {
class TestRequest : public IceSpider::CgiRequestBase {
public:
- TestRequest(IceSpider::Core * c, const EnvArray env) : IceSpider::CgiRequestBase(c, env)
- {
- initialize();
- }
+ TestRequest(IceSpider::Core * c, const EnvArray env) : IceSpider::CgiRequestBase(c, env) { }
std::ostream &
getOutputStream() const override
@@ -79,10 +76,7 @@ public:
class TestPayloadRequest : public TestRequest {
public:
- TestPayloadRequest(IceSpider::Core * c, const EnvArray env, std::istream & s) : TestRequest(c, env), in(s)
- {
- initialize();
- }
+ TestPayloadRequest(IceSpider::Core * c, const EnvArray env, std::istream & s) : TestRequest(c, env), in(s) { }
std::istream &
getInputStream() const override
diff --git a/icespider/unittests/testPerf.cpp b/icespider/unittests/testPerf.cpp
index 91ce437..1c7aed4 100644
--- a/icespider/unittests/testPerf.cpp
+++ b/icespider/unittests/testPerf.cpp
@@ -8,10 +8,7 @@
class TestRequest : public IceSpider::CgiRequestBase {
public:
- TestRequest(IceSpider::Core * c, const EnvArray env) : IceSpider::CgiRequestBase(c, env)
- {
- initialize();
- }
+ TestRequest(IceSpider::Core * c, const EnvArray env) : IceSpider::CgiRequestBase(c, env) { }
std::ostream &
getOutputStream() const override