Wt  3.2.3
Public Types | Public Member Functions | Static Public Member Functions
Wt::WEnvironment Class Reference

A class that captures information on the application environment. More...

#include <Wt/WEnvironment>

Inheritance diagram for Wt::WEnvironment:
Inheritance graph
[legend]

List of all members.

Public Types

enum  UserAgent {
  Unknown = 0, IEMobile = 1000, IE6 = 1001, IE7 = 1002,
  IE8 = 1003, IE9 = 1004, Opera = 3000, Opera10 = 3010,
  WebKit = 4000, Safari = 4100, Safari3 = 4103, Safari4 = 4104,
  Chrome0 = 4200, Chrome1 = 4201, Chrome2 = 4202, Chrome3 = 4203,
  Chrome4 = 4204, Chrome5 = 4205, Arora = 4300, MobileWebKit = 4400,
  MobileWebKitiPhone = 4450, MobileWebKitAndroid = 4500, Konqueror = 5000, Gecko = 6000,
  Firefox = 6100, Firefox3_0 = 6101, Firefox3_1 = 6102, Firefox3_1b = 6103,
  Firefox3_5 = 6104, Firefox3_6 = 6105, Firefox4_0 = 6106, Firefox5_0 = 6107,
  BotAgent = 10000
}
 An enumeration type for specific user agent. More...
enum  ContentType { XHTML1, HTML4 }
 Enumeration for HTML content type. More...
typedef std::map< std::string,
std::string > 
CookieMap
 Cookie map.

Public Member Functions

const Http::ParameterMapgetParameterMap () const
 Parameters passed to the application.
const Http::ParameterValuesgetParameterValues (const std::string &name) const
 Returns values for a query parameter.
const std::string * getParameter (const std::string &name) const
 Returns a single value for a query parameter.
const CookieMapcookies () const
 Returns the cookies from the environment.
const std::string getCookie (const std::string &cookieNname) const
 Returns a cookie value.
const std::string * getCookieValue (const std::string &cookieName) const
 Returns a cookie value.
const std::string headerValue (const std::string &field) const
 Returns a header value.
bool supportsCookies () const
 Returns whether the browser has enabled support for cookies.
bool javaScript () const
 Returns whether the browser has enabled support for JavaScript.
bool ajax () const
 Returns whether the browser has enabled support for AJAX.
double dpiScale () const
 Returns the browser-side DPI scaling factor.
const std::string & locale () const
 Returns the preferred language indicated in the request header.
const std::string & hostName () const
 Returns the server host name that is used by the client.
const std::string & urlScheme () const
 Returns the URL scheme used for the current request ("http" or "https").
const std::string & userAgent () const
 Returns the user agent.
const std::string & referer () const
 Returns the referer.
const std::string & accept () const
 Returns the accept header.
bool agentIsSpiderBot () const
 Returns if the user agent is a (known) indexing spider bot.
const std::string & serverSignature () const
 Returns the web server signature.
const std::string & serverSoftware () const
 Returns the web server software.
const std::string & serverAdmin () const
 Returns the email address of the server admin.
const std::string & clientAddress () const
 Returns the IP address of the client.
const std::string & pathInfo () const
 Returns the path info of the original request (deprecated)
const std::string & internalPath () const
 Returns the initial internal path.
const std::string & deploymentPath () const
 Returns the deployment path.
void libraryVersion (int &series, int &major, int &minor) const
 Returns the version of the Wt library, broken down.
std::string sessionId () const
 Returns the Wt session id (deprecated).
std::string getCgiValue (const std::string &varName) const
 Returns a raw CGI environment variable.
ContentType contentType () const
 The type of the content provided to the browser.
UserAgent agent () const
 Returns the user agent type.
bool agentIsIE () const
 Returns whether the user agent is Microsoft Internet Explorer.
bool agentIsIElt (int version) const
 Returns whether the user agent is an older version of IE.
bool agentIsIEMobile () const
 Returns whether the user agent is Internet Explorer Mobile.
bool agentIsOpera () const
 Returns whether the user agent is Opera.
bool agentIsWebKit () const
 Returns whether the user agent is WebKit-based.
bool agentIsMobileWebKit () const
 Returns whether the user agent is Mobile WebKit-based.
bool agentIsSafari () const
 Returns whether the user agent is Safari.
bool agentIsChrome () const
 Returns whether the user agent is Chrome.
bool agentIsGecko () const
 Returns whether the user agent is Gecko-based.
WServerserver () const
 Returns the server.
WSslInfosslInfo () const
 Returns information on the SSL client certificate or 0 if no authentication took place.
bool supportsCss3Animations () const
 Returns whether this agent supports CSS3 animations.
virtual bool isTest () const
 Returns whether this is a mocked test environment.

Static Public Member Functions

static std::string libraryVersion ()
 Returns the version of the Wt library.

Detailed Description

A class that captures information on the application environment.

The environment provides information on the client, and gives access to startup arguments.

Usage example:

 const WEnvironment& env = WApplication::instance()->environment();

 // read an application startup argument 
 // (passed as argument in the URL or POST'ed to the application).
 if (!env.getParameterValues("login").empty()) {
   std::string login = env.getParameterValues("login")[0];
   ...
 }

 // Check for JavaScript/AJAX availability before using AJAX-only
 // widgets
 Wt::WTextArea *textEdit;
 if (!env.ajax())
   textEdit = new Wt::WTextEdit(); // provide an HTML text editor
 else
   textEdit = new Wt::WTextArea(); // fall-back to a plain old text area.

Member Typedef Documentation

typedef std::map<std::string, std::string> Wt::WEnvironment::CookieMap

Cookie map.

A std::map which associates a cookie name with a cookie value.

See also:
cookies()

Member Enumeration Documentation

Enumeration for HTML content type.

Enumerator:
XHTML1 

XHTML1.x.

HTML4 

HTML4.

An enumeration type for specific user agent.

See also:
agent()
Enumerator:
Unknown 

Unknown user agent.

IEMobile 

Internet Explorer Mobile, or Internet Explorer 5 or older.

IE6 

Internet Explorer 6.

IE7 

Internet Explorer 7.

IE8 

Internet Explorer 8.

IE9 

Internet Explorer 9 or later.

Opera 

Opera.

Opera10 

Opera 10 or later.

WebKit 

WebKit.

Safari 

Safari 2 or older.

Safari3 

Safari 3.

Safari4 

Safari 4 or later.

Chrome0 

Chrome 0.

Chrome1 

Chrome 1.

Chrome2 

Chrome 2.

Chrome3 

Chrome 3.

Chrome4 

Chrome 4.

Chrome5 

Chrome 5 or later.

Arora 

Arora.

MobileWebKit 

Mobile WebKit.

MobileWebKitiPhone 

Mobile WebKit iPhone/iPad.

MobileWebKitAndroid 

Mobile WebKit Android.

Konqueror 

Konqueror.

Gecko 

Gecko.

Firefox 

Firefox 2 or older.

Firefox3_0 

Firefox 3.0.

Firefox3_1 

Firefox 3.1.

Firefox3_1b 

Firefox 3.1b.

Firefox3_5 

Firefox 3.5.

Firefox3_6 

Firefox 3.6.

Firefox4_0 

Firefox 4.0.

Firefox5_0 

Firefox 5.0 or later.

BotAgent 

Bot user agent.


Member Function Documentation

const std::string& Wt::WEnvironment::accept ( ) const

Returns the accept header.

The accept header, as reported in the HTTP Accept field.

UserAgent Wt::WEnvironment::agent ( ) const

Returns the user agent type.

This returns an interpretation of the userAgent(). It should be used only for user-agent specific work-arounds (as a last resort).

See also:
agentIsIE(), agentIsOpera(), agentIsGecko(), agentIsChrome(), agentIsSafari(), agentIsWebKit()
bool Wt::WEnvironment::agentIsChrome ( ) const

Returns whether the user agent is Chrome.

See also:
agent()
bool Wt::WEnvironment::agentIsGecko ( ) const

Returns whether the user agent is Gecko-based.

Gecko-based browsers include Firefox.

See also:
agent()
bool Wt::WEnvironment::agentIsIE ( ) const

Returns whether the user agent is Microsoft Internet Explorer.

See also:
agent()
bool Wt::WEnvironment::agentIsIElt ( int  version) const

Returns whether the user agent is an older version of IE.

Returns whether the agent is an IE version older than the given version.

See also:
agentIsIE()
bool Wt::WEnvironment::agentIsIEMobile ( ) const

Returns whether the user agent is Internet Explorer Mobile.

Returns also true when the agent is Internet Explorer 5 or older.

See also:
agent()
bool Wt::WEnvironment::agentIsMobileWebKit ( ) const

Returns whether the user agent is Mobile WebKit-based.

Mobile Webkit-based browsers include the Android Mobile WebKit and the iPhone Mobile WebKit browsers.

See also:
agent()
bool Wt::WEnvironment::agentIsOpera ( ) const

Returns whether the user agent is Opera.

See also:
agent()
bool Wt::WEnvironment::agentIsSafari ( ) const

Returns whether the user agent is Safari.

See also:
agent()
bool Wt::WEnvironment::agentIsSpiderBot ( ) const

Returns if the user agent is a (known) indexing spider bot.

Note: currently the list of know bots is quite small. This method is used internally to render the web application for optimal indexing by bots:

  • there is no detection for JavaScript, instead the application is directly served assuming no JavaScript support.
  • session information is omitted from the Urls.
  • no sessions are created (they are immediately stopped after the request has been handled).
  • auto-generated id and name attributes are omitted from DOM nodes. In this way, the generated page is always exactly the same.
bool Wt::WEnvironment::agentIsWebKit ( ) const

Returns whether the user agent is WebKit-based.

Webkit-based browsers include Safari, Chrome, Arora and Konquerer browsers.

See also:
agent()
bool Wt::WEnvironment::ajax ( ) const

Returns whether the browser has enabled support for AJAX.

Without support for JavaScript/AJAX, Wt will still be able to serve the application, but with one considerable limitation: only the WTimer::timeout(), WInteractWidget::clicked(), WApplication::internalPathChanged(), and WAbstractArea::clicked() signals (and any derived signals) will generate events.

Every event will cause the complete page to be rerendered.

See also:
javaScript()
const std::string& Wt::WEnvironment::clientAddress ( ) const

Returns the IP address of the client.

The (most likely) IP address of the client that is connected to this session.

This is taken to be the first public address that is given in the Client-IP header, or in the X-Forwarded-For header (in case the client is behind a proxy). If none of these headers is present, the remote socket IP address is used.

ContentType Wt::WEnvironment::contentType ( ) const

The type of the content provided to the browser.

This is determined by listening to the capabilities of the browser. Xhtml1 is chosen only if the browser reports support for it, and it is allowed in the configuration file (wt_config.xml).

Note that Wt makes also use of common non-standard techniques implemented in every major browser.

const CookieMap& Wt::WEnvironment::cookies ( ) const

Returns the cookies from the environment.

This returns all cookies that were present in initial request for the application. Cookies set with WApplication::setCookie() are not taken into consideration.

Cookies allow you to persist information across sessions, but note that not all clients may support cookies or may some clients may be configured to block cookies.

See also:
supportsCookies(), getCookie(), getCookieValue()
const std::string & Wt::WEnvironment::deploymentPath ( ) const

Returns the deployment path.

This is the path at which the application is deployed.

See also:
internalPath().
double Wt::WEnvironment::dpiScale ( ) const

Returns the browser-side DPI scaling factor.

Internet Explorer scales all graphics, fonts and other elements on high-density screens to make them readable. This is controlled by the DPI setting of the display. If all goes well, you do not have to worry about this scaling factor. Unfortunately, not all elements are scaled appropriately. The scaling factor is supposed to be used only internally in Wt and is in this interface for informational purposes.

See also:
WVmlImage
std::string Wt::WEnvironment::getCgiValue ( const std::string &  varName) const

Returns a raw CGI environment variable.

Retrieves the value for the given CGI environment variable (like "SSL_CLIENT_S_DN_CN"), if it is defined, otherwise an empty string.

See also:
serverSignature(), serverSoftware(), serverAdmin(),
const std::string Wt::WEnvironment::getCookie ( const std::string &  cookieNname) const

Returns a cookie value.

Throws a std::runtime_error("Missing cookie: ...") when the cookie is missing, or returns cookie value otherwise.

See also:
getCookieValue()
const std::string * Wt::WEnvironment::getCookieValue ( const std::string &  cookieName) const

Returns a cookie value.

Returns 0 if no value was set for the given cookie.

See also:
getCookie()
const std::string * Wt::WEnvironment::getParameter ( const std::string &  name) const

Returns a single value for a query parameter.

Returns the first value for a parameter, or 0 if the parameter is not found.

See also:
getParameterValues()
const Http::ParameterMap& Wt::WEnvironment::getParameterMap ( ) const

Parameters passed to the application.

Arguments passed to the application, either in the URL for a http GET, or in both the URL and data submitted in a http POST.

See also:
getParameterValues()
const Http::ParameterValues & Wt::WEnvironment::getParameterValues ( const std::string &  name) const

Returns values for a query parameter.

Returns an empty list if the parameter was not defined.

One or more values may be associated with a single argument.

For example a Wt application foo.wt started as http://.../foo.wt?hello=Hello&hello=World will result in both values "Hello" and "World" to be associated with the argument "hello".

See also:
getParameterMap()
const std::string Wt::WEnvironment::headerValue ( const std::string &  field) const

Returns a header value.

Returns a header value, or an empty string if the header was present.

Note:
Currently, the header name is case sensitive, although this should not be the case according to RFC2616
const std::string& Wt::WEnvironment::hostName ( ) const

Returns the server host name that is used by the client.

The hostname is the unresolved host name with optional port number, which the browser used to connect to the application.

Examples:

  • www.mydomain.com
  • localhost:8080

For HTTP 1.1 requests, this information is fetched from the HTTP Host header. If Wt is configured behind a reverse proxy, then the last entry in the HTTP X-Forwarded-Host header field is used instead (to infer the name of the reverse proxy instead).

For HTTP 1.0 requests, the HTTP Host header is not required. When not present, the server host name is inferred from the configured server name, which defaults to the DNS name.

const std::string& Wt::WEnvironment::internalPath ( ) const

Returns the initial internal path.

This is the internal path with which the application was started.

For an application deployed at "/stuff/app.wt", the following two URLs are considered equivalent, and indicate an internal path "/this/there":

 http://www.mydomain.com/stuff/app.wt/this/there
 http://www.mydomain.com/stuff/app.wt/this/there

For the built-in httpd, when the application is deployed at a folder (ending with '/'), only an exact matching path is routed to the application (this can be changed since Wt 3.1.9, see 9.2 Built-in httpd), making clean URLs impossible. Then, also the following URL is supported (assuming deployment at "/stuff/":

 http://www.mydomain.com/stuff/?_=/this/there
See also:
WApplication::setInternalPath(), deploymentPath()
bool Wt::WEnvironment::javaScript ( ) const

Returns whether the browser has enabled support for JavaScript.

This is the same as ajax(): Wt only considers using JavaScript when it has detected AJAX support.

See also:
ajax()
std::string Wt::WEnvironment::libraryVersion ( ) [static]

Returns the version of the Wt library.

Example: "1.99.2"

void Wt::WEnvironment::libraryVersion ( int &  series,
int &  major,
int &  minor 
) const

Returns the version of the Wt library, broken down.

The version of the Wt library, broken down in its three numbers,

Example: series = 1, major = 99, minor = 2.

const std::string& Wt::WEnvironment::locale ( ) const

Returns the preferred language indicated in the request header.

The language is parsed from the HTTP Accept-Language field, if present. If not, the locale is empty.

If multiple languages are present, the one with the highest "q"uality is assumed, and if a tie is present, the first one is taken.

See also:
WApplication::setLocale()
const std::string& Wt::WEnvironment::pathInfo ( ) const

Returns the path info of the original request (deprecated)

Deprecated:
Use internalPath() instead, which is consistent with the internal paths generated by Wt.

This is the equivalent of the CGI PATH_INFO environment variable.

Assume for example that the application was deployed at "stuff/app.wt". When the user accesses the application using the URL "http://www.mydomain.com/stuff/app.wt", this method would return an empty string (""). When the user accesses the site using "http://www.mydomain.com/stuff/app.wt/this/there", the result would be "/this/there".

Together with getParameter(), this allows you to supply the application with initial information.

See also:
getParameter(), internalPath()
const std::string& Wt::WEnvironment::referer ( ) const

Returns the referer.

The referer, as reported in the HTTP Referer field.

WServer * Wt::WEnvironment::server ( ) const

Returns the server.

This returns the server environment of this session.

const std::string& Wt::WEnvironment::serverAdmin ( ) const

Returns the email address of the server admin.

The value of the CGI variable SERVER_ADMIN.

Example: "root@localhost"

const std::string& Wt::WEnvironment::serverSignature ( ) const

Returns the web server signature.

The value of the CGI variable SERVER_SIGNATURE.

Example: <address>Apache Server at localhost Port 80</address>.

const std::string& Wt::WEnvironment::serverSoftware ( ) const

Returns the web server software.

The value of the CGI variable SERVER_SOFTWARE.

Example: "Apache"

std::string Wt::WEnvironment::sessionId ( ) const

Returns the Wt session id (deprecated).

Retrieves the session id for this session. This is an auto-generated random alpha-numerical id, whose length is determined by settings in the configuration file.

Deprecated:
Use WApplication::sessionId() instead
WSslInfo* Wt::WEnvironment::sslInfo ( ) const

Returns information on the SSL client certificate or 0 if no authentication took place.

This function will return 0 if no verification took place, Wt was compiled without SSL support, or the web server was configured without client SSL certificates.

This method may return a pointer to a WSslInfo object, while the authentication may have failed. This depends on the configuration of the web server. It is therefore important to always check the verification result with WSslInfo::clientVerificationResult().

Remember that WEnvironment is 'const', thus the object returned by this function will represent the SSL information of the first request for this session. It will not be updated during the lifetime of the session.

The object returned is owned by WEnvironment and will be deleted when WEnvironment is destroyed (= at the end of the session).

bool Wt::WEnvironment::supportsCookies ( ) const

Returns whether the browser has enabled support for cookies.

When the user disables cookies during the visit of the page, this value is not updated.

See also:
cookies(), getCookie()
const std::string& Wt::WEnvironment::userAgent ( ) const

Returns the user agent.

The user agent, as reported in the HTTP User-Agent field.

See also:
agent()
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator

Generated on Thu Nov 1 2012 for the C++ Web Toolkit (Wt) by doxygen 1.7.5.1