summaryrefslogtreecommitdiff
path: root/project2/cgi/cgiEnvironment.h
blob: 27b1694ad9a506860b4fbbe23fe5664aba652cc2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#ifndef ENVPROC_H
#define ENVPROC_H

#include <string>
#include <vector>
#include "environment.h"
#include <cgicc/CgiEnvironment.h>

SimpleMessageException(NoSuchCookie);

namespace cgicc {
	class Cgicc;
}

class HostnamePlatformIdentifier : public Options::Target {
	public:
		HostnamePlatformIdentifier();
		virtual ~HostnamePlatformIdentifier();
		void reset() const;
		bool paramRequired() const;
		void consume(const Glib::ustring &, const Glib::ustring &) const;
		const Glib::ustring & derivedPlatform() const;
	private:
		mutable Glib::ustring * platform;
};

class CgiEnvironment : public Environment {
	public:
		CgiEnvironment();
		virtual ~CgiEnvironment();

		Glib::ustring getParamUri(unsigned int idx) const;
		unsigned int getParamUriCount() const;
		Glib::ustring getParamQuery(const std::string & idx) const;
		std::string getServerName() const;
		std::string getScriptName() const;
		std::string getRedirectURL() const;
		std::string getRequestMethod() const;
		std::string getCookieValue(const std::string & name) const;

		void setCGICC(const cgicc::Cgicc *);
		const cgicc::Cgicc * cgi;
		std::vector<std::string> elems;

	private:
		const Options & engineOptions() const;
		const Glib::ustring & platform() const;
		Options cgiOptions;
		boost::intrusive_ptr<HostnamePlatformIdentifier> hpi;

	public:
		std::string dumpdatadoc;
		Glib::ustring errorContentType;
		Glib::ustring errorTransformStyle;
		std::string defaultPresent;
		std::string presentRoot;
		std::string requestRoot;
		std::string errorPresentRoot;
		std::string notFoundPresent;
		std::string onErrorPresent;
		std::string defaultPresenter;
		std::string sessionModule;
		std::string outputEncoding;
};

#endif