c58f340633a5ecb1368749204d3fac4f3f71f89f
This commit represents a partial overhaul of error handling for requests
made against the v4 Cloudflare API, with an aim of unifying disparate
kinds of exceptions under a single `ResponseException` type, and the
covering of additional cases where errors were unhandled. Specifically:
- The `Guzzle::request()` function will now catch Guzzle exceptions
normally thrown in cases of client and server errors (4xx and 5xx)
response codes, and convert these to `ResponseException` types
before re-throwing. These types of errors were previously not caught
and were instead returned verbatim, expecting downstream clients to
be aware of internal details of how these functions operate.
- Conversely, we no longer assume that all responses are JSON-encoded,
and no longer try to derive errors from non-4xx or 5xx responses.
All public endpoints under the v4 API are expected to be
well-behaved in that regard, and never return an error response
where none is indicated in the HTTP code.
Code has been moved around and test-cases added in support of these
changes. In most cases, these changes won't break any existing
expectations and won't require any changes to downstream code, but users
of the Cloudflare SDK should ensure that they are indeed set up for
catching `ResponseException` instances thrown during requests, and
should not expect to see Guzzle exceptions directly (though these are
still available in calls to `ResponseException::getPrevious()`).
Fixes: #152
Cloudflare SDK (v4 API Binding for PHP 7)
Installation
The recommended way to install this package is via the Packagist Dependency Manager (cloudflare/sdk). You can get specific usage examples on the Cloudflare Knowledge Base under: Cloudflare PHP API Binding
Cloudflare API version 4
The Cloudflare API can be found here. Each API call is provided via a similarly named function within various classes in the Cloudflare\API\Endpoints namespace:
- DNS Records
- DNS Analytics
- Zones
- User Administration (partial)
- Cloudflare IPs
- Page Rules
- Web Application Firewall (WAF)
- Virtual DNS Management
- Custom hostnames
- Manage TLS settings
- Zone Lockdown and User-Agent Block rules
- Organization Administration
- Railgun administration
- Keyless SSL
- Origin CA
- Crypto
- Load Balancers
- Firewall Settings
Note that this repository is currently under development, additional classes and endpoints being actively added.
Getting Started
$key = new Cloudflare\API\Auth\APIKey('user@example.com', 'apiKey');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$user = new Cloudflare\API\Endpoints\User($adapter);
echo $user->getUserID();
Contributions
We welcome community contribution to this repository. CONTRIBUTING.md will help you start contributing.
Licensing
Licensed under the 3-clause BSD license. See the LICENSE file for details.
Description
Languages
PHP
99.9%
Makefile
0.1%