atog/simple-api-client

Simple API Client with cUrl

v1.2.0 2016-05-16 11:02 UTC

This package is not auto-updated.

Last update: 2024-11-15 22:52:06 UTC


README

Latest Version on Packagist GitHub license Travis HHVM Quality Score Scrutinizer Coverage Total Downloads

The simple-api-client library provides an easy way to build wrappers for public REST APIs.

Install

Via Composer

$ composer require atog/simple-api-client

Usage

Classes

Client

The Client Class contains the basic Informations about the API liek the $domain. It has to extend the abstract class Atog\Api\Client

class Client extends \Atog\Api\Client
{
	protected $domain = 'http://example.com/api/v1';
}

Endpoints

Endpoints provide the functions to query the resources of the API.

class TestEndpoint extends \Atog\Api\Endpoint
{
	protected $endpoint = 'foo';

	public function find($slug)
    {
        // https://example.com/api/v1/foo/$slug gets called
		$this->respond(
		    $this->client->get($this->getEndpointUrl($slug, true))
		); 
    }
}

Models

The Models are the datastructures of the resources. Attributes can easly be changed with get and set mutators (much like the Eloquent Mutators from Laravel: https://laravel.com/docs/5.2/eloquent-mutators)

class TestModel extends Model
{
    public function getNameAttribute($value)
    {
    	return strtoupper($value);
    }

    public function setFirstNameAttribute($value)
    {
    	$this->attributes['first_name'] = strtolower($value);
    }

    public function setContactsAttribute($value)
    {
    	$this->attributes['contacts'] = $this->makeCollection($value, Contacts::class);
    }
}

Initialization

The first parameter defines all endpoints you are using. The second provides some options about the models or cUrl. In the models config we can bind a model to an endpoint

// new Client(array $endpoints, array $config = [])
$client = new Client(
    [
        TestEndpoint::class
    ],
    [
        'models' => [
            'TestEndpoint' => TestModel::class
        ],
        'curl' => [
            CURLOPT_TIMEOUT => 60
        ]
    ]
);
$foo = $client->testEndpoint->find(1); // GET http://example.com/api/v1/foo/1

Change log

1.1.0

  • added support for query params
  • added helper method to return api reponse

1.0.0

  • Initial Release

Testing

$ composer test

License

The MIT License (MIT). Please see License File for more information.