Overview

Namespaces

  • Davek1312
    • ApiIntegrator
      • Models

Classes

  • Davek1312\ApiIntegrator\ApiIntegrator
  • Davek1312\ApiIntegrator\Models\ApiIntegratorBaseModel
  • Davek1312\ApiIntegrator\Models\ApiIntegratorRequestModel
  • Davek1312\ApiIntegrator\Models\ApiIntegratorResponseModel
  • Overview
  • Namespace
  • Class
  1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 
<?php

namespace Davek1312\ApiIntegrator;

use Davek1312\ApiIntegrator\Models\ApiIntegratorRequestModel;
use Davek1312\ApiIntegrator\Models\ApiIntegratorResponseModel;
use GuzzleHttp\Psr7\Response;

/**
 * Retrieve's data from a third party API and deserialises the response into a model object
 *
 * @author  David Kelly <davek1312@gmail.com>
 */
abstract class ApiIntegrator {

    /**
     * @var ApiIntegratorRequestModel
     */
    protected $requestModel;
    /**
     * @var string
     */
    protected $responseModelClass;
    /**
     * @var Response
     */
    protected $httpResponse;
    /**
     * @var string
     */
    protected $responseBody;

    /**
     * ApiIntegrator constructor. Sets $httpResponse from $requestModel.
     *
     * @param $requestModel
     */
    public function __construct($requestModel, $responseModelClass) {
        $this->requestModel = $requestModel;
        $this->responseModelClass = $responseModelClass;
        $this->httpResponse = $requestModel->getHttpResponse();
        if($this->httpResponse) {
            if($this->httpResponse->getBody()) {
                $this->responseBody = $this->httpResponse->getBody()->getContents();
            }
        }
    }

    public function getResponseModel() {
        $responseModel = new $this->responseModelClass();
        return $responseModel->deserialiseResponse($this->responseBody);
    }

    /**
     * @return ApiIntegratorRequestModel
     */
    public function getRequestModel() {
        return $this->requestModel;
    }

    /**
     * @param ApiIntegratorRequestModel $requestModel
     */
    public function setRequestModel($requestModel) {
        $this->requestModel = $requestModel;
    }

    /**
     * @return string
     */
    public function getResponseModelClass() {
        return $this->responseModelClass;
    }

    /**
     * @param string $responseModelClass
     */
    public function setResponseModelClass($responseModelClass) {
        $this->responseModelClass = $responseModelClass;
    }

    /**
     * @return Response
     */
    public function getHttpResponse() {
        return $this->httpResponse;
    }

    /**
     * @param Response $httpResponse
     */
    public function setHttpResponse($httpResponse) {
        $this->httpResponse = $httpResponse;
    }

    /**
     * @return string
     */
    public function getResponseBody() {
        return $this->responseBody;
    }

    /**
     * @param string $responseBody
     */
    public function setResponseBody($responseBody) {
        $this->responseBody = $responseBody;
    }
}
API documentation generated by ApiGen