Skip to content

Latest commit

 

History

History
32 lines (24 loc) · 1.26 KB

README.md

File metadata and controls

32 lines (24 loc) · 1.26 KB

external-api-call-client

Setup code for making a client to an external API.

Some very low-level classes used to structure calls to external API's. Internally this works like a state machine for API calls. And in every step the API call can fail.

State machine

Code usage:

Basically you use ExternalClient as base class and extend it and add functionality like this:

<?php
use GuzzleHttp\Client;
use PaqtCom\ExternalApiCallClient\Services\ExternalClient;
use PaqtCom\ExternalApiCallClient\ErrorHandlers\ThrowExceptionOnError;

class ExampleClient extends ExternalClient
{
  public function __construct(Client $client)
  {
      parent::__construct(new JsonRequestFactory(), $client, new JsonResponseHandler(), new ThrowExceptionOnError(), new LogToDatabase());
  }
  
  public function createOrder(OrderDto $order): OrderPlacedDto
  {
      return $this->post(new ExternalClientCall('Place order ' . $order->id, '/api/Order/' . $order->id , OrderPlacedDto::class), $order);
  }
}

The ExternalClient makes the actual call and uses the ExternalClientCall to remember the current state of an API call.