WrapperConfig takes care of most configuration in the netcurl module. It also handles exceptions that should be thrown back to developers/clients/users.
Throwables
Throwables in WrapperConfig is based on web traffic and returned headers. In the default state, everything that returns HTTP 400 - 599 are considered throwables and will throw an exception if returned from a http request. There is a slight differense here though, since netcurl 6.1 uses an improved errorhandler. For example, the curlwrapper no longer needs to be instatiated in the same way as 6.0 required to extract exceptions from the responses. For 6.0, you had to do something like this:
$instance = new MODULE_CURL(); try { $request = $instance->doGet('url'); } catch (Exception $e) { // Extract responses from the primary instance as $request will not be available during an exception. $instance->getBody(); }
Instead the errorhandler makes this possible (taken from the unittest getThrowablesByBody):
use TorneLIB\Exception\ExceptionHandler; try { // A shorter example of a request that returns a body with json-content. $curlWrapper = new CurlWrapper()->request('url'); } catch (ExceptionHandler $e) { $curlWrapperException = $e->getExtendException()->getParsed(); }
Exceptions look
When exceptions are passing through the ExceptionHandler, exceptions are described more detailed compared to v6.0. The error message now not only contains the error string, it also contains - if it is returned from the server - the header error message too. The error example below is based on the getThrowablesByBody above. And yes, even if it returns an error in the header the extendedException is a copy of the CurlWrapper in this case, so it can extract furthermore data from the body.
HTTP Head Error message: Error 404 returned from server: "404". Error message from the json body: Not found
The example is based on a document request, where document is missing, rather than the URL itself.