HTTP 1.1 Support – Foundations
In order to cleanly separate between the domain of HTTP and that of the MVC framework, it is necessary to split up the request handling which is currently located in the MVC sub package of FLOW3. Two parts should be the result: a new Http sub package which is closely modeled after the HTTP 1.1 and related specs and the Mvc sub package which addresses the aspect of routing, action requests and their dispatching to the respective controllers.
[FEATURE] HTTP Client for Functional Testing
This adds a virtual HTTP client which supports pluggable request engines
for different purposes. The first scenario in which we'll use this new
"Browser" is for seamless functional testing of controllers and other
features which should be tested through the whole request / response
The FunctionalTestCase now provides a new class property called
"testableHttpEnabled" which, if set to TRUE, initializes a new browser
for each test and provides it as $this->browser.
Also adds a bunch of functional tests for the MVC ActionController using
this new feature.
[!!!][FEATURE] HTTP 1.1 Support – Foundations
This commit contains the foundations for a better HTTP support in
FLOW3. It extracts request and response handling into a dedicated
sub package "Http" and clearly distinguishes between HTTP requests
and "action requests".
While this change set does contain a few new features which are
related to HTTP support, it is by far not complete and rather serves
as a foundation for further features which are following.
[FEATURE] Introduce HttpRequestHandlerInterface
This new interface identifies request handlers which are
supporting and working with HTTP requests as such and
allows other application parts to retrieve the current HTTP
[!!!][TASK] Move baseUri setting from Environment to Http\Request
The Environment class optionally used a setting to specify a fixed
baseUri to be used. With the HTTP foundation this settings was no
longer used (consistently).
If in Settings.yaml the "utility:environment:baseUri" settings was used,
it must be changed to "http:baseUri"!
[!!!][TASK] Clean up Environment after HTTP refactoring
With the HTTP foundation quite some things from Environment have become
obsolete. The class and it's "users" are adjusted in this change.
The following methods are removed from Environment (check Http\Request
to see if a method you need is available there) with this change:
Most of those were marked as public API, but we still decided to drop
them, as their use cases were only guesswork.
For some things that used to be available, access to the current request
is now needed. For this, getHttpRequest() was added to the new
HttpRequestHandlerInterface, which returns the current HttpRequest.
[TASK] Remove leftover session dependency from Http\Request
This is actually not used and causes circular dependency problems
in some cases.
[TASK] Fix RestController to work with HTTP foundation
This fixes RestController to work again with HTTP foundation.