davek1312/apiintegrator

Serialise/Deserialise data from third party APIs


Keywords
api, serialise, deserilise
License
MIT

Documentation

davek1312/apiintegrator

Retrieve data from third party APIs and deserialise into PHP models.

Installation

The package is available on Packagist, you can install it using Composer.

bash composer require davek1312/apiintegrator

Configuration

Response Model

Build your response model class. Annotate your model using the JMS annotations. Your model should have the same properties as the API response that it receives. You response model defines the APIs response data type. ```php use JMS\Serializer\Annotation\Exclude;

class YourResponseModel extends Davek1312\ApiIntegrator\Models\ApiIntegratorResponseModel {

/**
 * @Exclude()
 */
public static $dataType = 'json';

} ```

If the API response contains error attributes your response model class should override the base response error accessors: ```php

use JMS\Serializer\Annotation\Type;

class YourResponseModel extends Davek1312\ApiIntegrator\Models\ApiIntegratorResponseModel {

/**
 * @Type("string")
 */
private $apiErrorMessage;
/**
 * @Type("integer")
 */
private $apiErrorCode;

public function getResponseErrorMessage() {
    return $this->apiErrorMessage;
}

public function getResponseErrorCode() {
    return $this->apiErrorCode;
}

} ```

Integrator

Your integrator must extend the base integrator and define the response model class and $responseModel serialisation properties: ```php use JMS\Serializer\Annotation\Exclude; use JMS\Serializer\Annotation\Type; use JMS\Serializer\Annotation\SerializedName; use YourResponseModel;

class YourIntegrator extends Davek1312\ApiIntegrator\ApiIntegrator {

/**
 * @var string
 *
 * @Exclude()
 */
public static $responseModelClass = YourResponseModel::class;

/**
 * @var YourResponseModel
 *
 * @SerializedName("responseModel")
 * @Type("YourResponseModel")
 */
protected $responseModel;

} ```

Usage

Bulid your request model: php $requestModel = new ApiIntegratorRequestModel($url, $connectionMethod, $connectTimeout, $requestTimeout, $additionalRequestOptions);

Generate your response model using your integrator: php $integrator = new YourIntegrator($requestModel); $responseModel = $integrator->generateNewResponseModel();

Check for errors: php if($integrator->hasErrors()) { $errorModel = $integrator->getErrorModel(); }