- dropped support for PHP < 7.1
-
added compatibility with HTTPlug 2
-
dropped the support for HHVM and for PHP < 5.6
-
updated the
X-Experience-API-Version
header to default to the latest patch version (1.0.3
) -
allow
2.x
releases of thephp-xapi/model
package too -
allow
3.x
releases of thephp-xapi/model
package for PHP 7.2 compatibility
-
CAUTION: This release drops support for PHP 5.3 due to the introduced dependency on
php-http/httplug
(see below). -
The client now depends on the HTTPlug library to perform HTTP requests. This means that the package now depends the virtual
php-http/client-implementation
. To satisfy this dependency you have to pick an implementation and install it together withphp-xapi/client
.For example, if you prefer to use Guzzle 6 you would do the following:
$ composer require --no-update php-http/guzzle6-adapter $ composer require php-xapi/client
-
The
setHttpClient()
andsetRequestFactory()
method have been added to theXApiClientBuilderInterface
and must be used to configure theHttpClient
andRequestFactory
instances you intend to use.To use Guzzle 6, for example, this will look like this:
use Http\Adapter\Guzzle6\Client; use Http\Message\MessageFactory\GuzzleMessageFactory; use Xabbuh\XApi\Client\XApiClientBuilder; $builder = new XApiClientBuilder(); $client = $builder->setHttpClient(new Client()) ->setRequestFactory(new GuzzleMessageFactory()) ->setBaseUrl('http://example.com/xapi/') ->build();
You can avoid calling
setHttpClient()
andsetRequestFactory
by installing the HTTP discovery package. -
The
xabbuh/oauth1-authentication
package now must be installed if you want to use OAuth1 authentication. -
Bumped the required versions of all
php-xapi
packages to the1.x
release series. -
Include the raw attachment content wrapped in a
multipart/mixed
encoded request when raw content is part of a statement's attachment. -
Added the possibility to decide whether or not to include attachments when requesting statements from an LRS. A second optional
$attachments
argument (defaulting totrue
) has been added for this purpose to thegetStatement()
,getVoidedStatement()
, andgetStatements()
methods of theStatementsApiClient
class and theStatementsApiClientInterface
. -
An optional fifth
$headers
parameter has been added to thecreateRequest()
method of theHandlerInterface
and theHandler
class which allows to pass custom headers when performing HTTP requests.
- The
XApiClientBuilder
class now makes use of theSerializerFactoryInterface
introduced in release0.4.0
of thephp-xapi/serializer
package. By default, it will fall back to theSerializerFactory
implemented provided by thephp-xapi/symfony-serializer
to maintain backwards-compatibility with the previous release. However, you are now able to inject arbitrary implementations of theSerializerFactoryInterface
into the constructor of theXApiClientBuilder
to use whatever alternative implementation (packages providing such an implementation should provide the virtualphp-xapi/serializer-implementation
package).
-
Do not send authentication headers when no credentials have been configured.
-
Fixed treating HTTP methods case insensitive. Rejecting uppercased HTTP method names contradicts the HTTP specification. Lowercased method names will still be supported to keep backwards compatibility though.
-
Fixed creating
XApiClient
instances in an invalid state. TheXApiClientBuilder
now throws a\LogicException
when thebuild()
method is called before a base URI was configured. -
Removed the
ApiClient
class. The$requestHandler
and$version
attributes have been moved to the former child classes of theApiClient
class and their visibility has been changed toprivate
. -
The visibility of the
$documentDataSerializer
property of theActivityProfileApiClient
,AgentProfileApiClient
,DocumentApiClient
, andStateApiClient
classes has been changed toprivate
. -
Removed the
getRequestHandler()
method from the API classes:ActivityProfileApiClient::getRequestHandler()
AgentProfileApiClient::getRequestHandler()
ApiClient::getRequestHandler()
DocumentApiClient::getRequestHandler()
StateApiClient::getRequestHandler()
StatementsApiClient::getRequestHandler()
-
Removed the
getVersion()
method from the API interfaces:ActivityProfileApiClientInterface::getVersion()
AgentProfileApiClientInterface::getVersion()
StateApiClientInterface::getVersion()
StatementsApiClientInterface::getVersion()
-
Removed the
getVersion()
method from the API classes:ActivityProfileApiClient::getVersion()
AgentProfileApiClient::getVersion()
ApiClient::getVersion()
DocumentApiClient::getVersion()
StateApiClient::getVersion()
StatementsApiClient::getVersion()
XApiClient::getVersion()
-
Removed the
getUsername()
andgetPassword()
methods from theHandlerInterface
and theHandler
class. -
Removed the
getHttpClient()
method from theHandler
class. -
Removed the
getSerializerRegistry()
method from theXApiClient
class. -
Made all classes final.
-
made the client compatible with version 0.5 of the
php-xapi/model
package -
made the client compatible with version 0.3 of the
php-xapi/serializer
package
First release of an Experience API client based on the Guzzle HTTP library.
This package replaces the xabbuh/xapi-client
package which is now deprecated
and should no longer be used.