Download the PHP package exodus4d/pathfinder_esi without Composer
On this page you can find all versions of the php package exodus4d/pathfinder_esi. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download exodus4d/pathfinder_esi
More information about exodus4d/pathfinder_esi
Files in exodus4d/pathfinder_esi
Package pathfinder_esi
Short Description ESI API library for Pathfinder
License MIT
Homepage https://github.com/exodus4d/pathfinder_esi
Informations about the package pathfinder_esi
Web API client for EVE-Online - ESI API
This Web API client library is used by Pathfinder and handles all ESI API requests.
Additional APIs can easily be added and can be used side by side with their own configuration. Included clients:
- CCP ESI API client: Esi.php
- CCP SSO API client: Sso.php
- GitHub basic API client: GitHub.php
- eve-scout "Thera" API client: EveScout.php
This Web client is build on Guzzle and makes much use of the build in Middleware concept in Guzzle.
Installation:
Use Composer for installation. In composer.json
require
section add:
Pathfinder: This web API client lib is automatically installed through Composer along with all other required dependencies for the Pathfinder project. (→ see composer.json).
A newer version of Pathfinder may require a newer version of this repository as well. So running
composer install
after a Pathfinder update will upgrade/install a newer ESI client. Check Pathfinder release notes for further information.
Use Client:
1. Init client:
2. Send requests
Concept
Guzzle Middlewares :
Middlewares classes are small functions that hook into the "request → response" chain in Guzzle.
- A Middleware can manipulate the
request
andresponse
objects - Each Middleware is dedicated to handles its own task.
- There are Middlewares for "logging", "caching",… pre-configured.
- Each Middleware has its own set of config options that can be set through the
$client->
. - All configured Middlewares are pushed into a HandlerStack() that gets resolved for each request.
- The order in the
HandlerStack()
is essential!
Guzzle HandlerStack :
This flowchart shows all Middlewares used by ESI.php API client. Each request to ESI API invokes all Middlewares in the following order:
Before request
GuzzleJsonMiddleware → GuzzleLogMiddleware → GuzzleCacheMiddleware → GuzzleCcpLogMiddleware → GuzzleRetryMiddleware → GuzzleCcpErrorLimitMiddleware
After response (→ reverse order!)
GuzzleCcpErrorLimitMiddleware → GuzzleRetryMiddleware → GuzzleCcpLogMiddleware → GuzzleCacheMiddleware → GuzzleLogMiddleware → GuzzleJsonMiddleware
Default Middlewares:
JSON
Requests with expected JSON encoded response
data have GuzzleJsonMiddleware
in HandlerStack.
This adds Accept: application/json
Header to request
and response
body gets wrapped into JsonStream.
$client->setAcceptType('json');
Caching
A client instance should be set up with a PSR-6 compatible cache pool where persistent data can be stored.
Valid response
data can be cached by its Cache-Expire
HTTP Header.
GuzzleCacheMiddleware also handle Etag
Headers.
Other Middlewares can also access the cache pool for their needs.
E.g. GuzzleLogMiddleware can throttle error logging by using the cache pool for error counts,…
→ See: $client->setCachePool();
Hint: Check out www.php-cache.com for PSR-6 compatible cache pools.
Logging
Errors (or other events) during (~before) a request can be logged (e.g. connect errors, or 4xx/5xx responses
).
The primary Middleware for logging is GuzzleLogMiddleware
Other Middlewares also have access to the global new log callback and implement their own logs.
$client->setNewLog();
Retry
Requests result in an expected error (timeouts, cURL connect errors,… ) will be retried [default: 2 times → configurable!]. Check out GuzzleRetryMiddleware for more information.
CCP ESI exclusive Middlewares:
Each web client has its own stack of Middlewares. These Middlewares are exclusive for requests
to CCP´s ESI API:
GuzzleCcpLogMiddleware
Requests to endpoints that return a warning
HTTP Header for deprecated
/or legacy
marked endpoints get logged into separate log files.
GuzzleCcpErrorLimitMiddleware
Failed ESI requests (4xx/5xx status code) implement the concept of "Error Rate Limiting" (→ blog: ESI error rate limiting). In case a request failed multiple times in a period, this Middleware keeps track of logging this and pre-block requests (e.g. for a user) an endpoint before CCP actual does.
Content Encoding
The default configuration for "decode-content" is true
→ decode "gzip" or "deflate" responses.
Most APIs will only send compressed response data if Accept-Encoding
HTTP Header found in request. A string
value will add this Header and response data gets decoded.
$client->setDecodeContent('gzip, deflate');
Bug report
Issues can be tracked here: https://github.com/exodus4d/pathfinder/issues
Development
If you are a developer you might have both repositories (exodus4d/pathfinder, exodus4d/pathfinder_esi ) checked out locally.
In this case you probably want to test changes in your local exodus4d/pathfinder_esi repo using your local exodus4d/pathfinder installation.
- Clone/Checkout both repositories local next to each other
- Make your changes in your pathfinder_esi repo and commit changes (no push!)
- Switch to your pathfinder repo
- Run Composer with
composer-dev.json
, which installs pathfinder_esi from your local repository.- Unix:
$set COMPOSER=composer-dev.json && composer update
- Windows (PowerShell):
$env:COMPOSER="composer-dev.json"; composer update --no-suggest
- Unix:
All versions of pathfinder_esi with dependencies
ext-json Version *
guzzlehttp/guzzle Version 6.5.*
caseyamcl/guzzle_retry_middleware Version 2.3.*
cache/void-adapter Version 1.0.*