2017 © Pedro Peláez
 

library api-client

A reusable base API client for use with remote services.

image

torann/api-client

A reusable base API client for use with remote services.

  • Tuesday, May 29, 2018
  • by torann
  • Repository
  • 1 Watchers
  • 4 Stars
  • 745 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 10 Versions
  • 0 % Grown

The README.md

Base API Client

Latest Stable Version Total Downloads Patreon donate button Donate weekly to this project using Gratipay Donate to this project using Flattr Donate to this project using Paypal, (*1)

A reusable base API client for use with remote services., (*2)

Installation

Install using composer:, (*3)

$ composer require torann/api-client

Creating Clients

Once installed we need to create some clients. First we need to extend the \BaseApiClient\Client class and set endpoint namespace., (*4)

Client

<?php

namespace App\BlogApi;

class Client extends \BaseApiClient\Client
{
    /**
     * Namespace for the endpoints
     *
     * @var string
     */
    protected $endpointNamespace = 'App\BlogApi\Endpoints';
}

The $endpointNamespace variable is the prefix for the namespace of our endpoints., (*5)

Endpoints

From the endpoint we make our API calls and return the models., (*6)

<?php

namespace App\BlogApi\Endpoints;

use App\BlogApi\Models\Post;

use BaseApiClient\Endpoint;
use BaseApiClient\Models\Collection;

class Posts extends Endpoint
{
    /**
     * Get pages for the provided website.
     *
     * @param  array $params
     *
     * @return Collection
     * @throws \BaseApiClient\Exceptions\ApiException
     */
    public function index(array $params = [])
    {
        $response = $this->request->get('posts', $params);

        return new Collection($response, 'Post');
    }

    /**
     * Create a new post.
     *
     * @param  array $params
     *
     * @return Post
     * @throws \BaseApiClient\Exceptions\ApiException
     */
    public function create(array $params)
    {
        $response = $this->request->post('posts', $params);

        return new Post($response);
    }

    /**
     * Delete the provided post.
     *
     * @param  string $id
     *
     * @return bool
     * @throws \BaseApiClient\Exceptions\ApiException
     */
    public function delete($id)
    {
        $response = $this->request->delete(sprintf('posts/%s', $id));

        return $response->getResponseCode() === 200;
    }
}

Models

<?php

namespace App\BlogApi\Models;

use BaseApiClient\Models\Model;

class Post extends Model
{
    /**
     * The attributes that should be mutated to dates.
     *
     * @var array
     */
    protected $dates = [
        'publish_at',
    ];
}

Registering Our Clients

<?php

namespace App\Providers;

use App\BlogApi\Client;
use App\AnotherApi\Client;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        $this->registerBlogService();
        $this->registerAnotherService();
    }

    /**
     * Register blog manager services.
     *
     * @return void
     */
    public function registerBlogService()
    {
        $this->app->bind(Client::class, function () {
            return new Client([
                'domain' => 'http://some.fancy.ip/',
                'secret' => env('BLOG_MANAGER_API_SECRET'),
            ]);
        });
    }

    /**
     * Register blog manager services.
     *
     * @return void
     */
    public function registerAnotherService()
    {
        $this->app->bind(Client::class, function () {
            return new Client([
                'domain' => 'http://some.fancy.ip/',
                'secret' => env('ANOTHER_API_SECRET'),
            ]);
        });
    }
}

Calling an Endpoint

Below is an example of using our \App\BlogApi\Client inside of a controller., (*7)

<?php

namespace App\Http\Controllers;

use App\BlogApi\Client;
use Illuminate\Http\Request;

class BlogController extends Controller
{
    /**
     * Blog manager client instance.
     *
     * @var \App\BlogApi\Client
     */
    protected $client;

    /**
     * Initializer constructor.
     *
     * @param Client $client
     */
    public function __construct(Client $client)
    {
        parent::__construct();

        $this->client = $client;
    }

    /**
     * Display the specified resource.
     *
     * @param  \Illuminate\Http\Request $request
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $posts = $this->client->posts->index($request->only('page'));

        return view('posts.index')->with([
            'posts' => $posts->paginate()
        ]);
    }

    /**
     * Display the specified resource.
     *
     * @param  Request $request
     * @param  string  $slug
     *
     * @return \Illuminate\Http\Response
     */
    public function show(Request $request, $slug)
    {
        $post = $this->client->posts->find($slug);

        return view('posts.show')->with([
            'post' => $post
        ]);
    }
}

Change Log

0.2.0, (*8)

  • Add support for Laravel 5.4

0.1.4, (*9)

  • Return null for empty values

0.1.3, (*10)

  • Add support for Laravel 5.3

0.1.2, (*11)

  • Remove trailing slash

0.1.1, (*12)

  • Bug fixes

0.1.0, (*13)

  • First release

The Versions

29/05 2018

dev-master

9999999-dev

A reusable base API client for use with remote services.

  Sources   Download

BSD 2-Clause

The Requires

 

The Development Requires

laravel api curl api client base64 image

16/05 2017

0.2.1

0.2.1.0

A reusable base API client for use with remote services.

  Sources   Download

BSD 2-Clause

The Requires

 

The Development Requires

laravel api curl api client base64 image

31/01 2017

0.2.0

0.2.0.0

A reusable base API client for use with remote services.

  Sources   Download

BSD 2-Clause

The Requires

 

The Development Requires

laravel api curl api client base64 image

31/01 2017

0.1.x-dev

0.1.9999999.9999999-dev

A reusable base API client for use with remote services.

  Sources   Download

BSD 2-Clause

The Requires

 

The Development Requires

laravel api curl api client base64 image

31/01 2017

0.1.5

0.1.5.0

A reusable base API client for use with remote services.

  Sources   Download

BSD 2-Clause

The Requires

 

The Development Requires

laravel api curl api client base64 image

22/09 2016

0.1.4

0.1.4.0

A reusable base API client for use with remote services.

  Sources   Download

BSD 2-Clause

The Requires

 

The Development Requires

laravel api curl api client base64 image

01/09 2016

0.1.3

0.1.3.0

A reusable base API client for use with remote services.

  Sources   Download

BSD 2-Clause

The Requires

 

The Development Requires

laravel api curl api client base64 image

30/06 2016

0.1.2

0.1.2.0

A reusable base API client for use with remote services.

  Sources   Download

BSD 2-Clause

The Requires

 

The Development Requires

laravel api curl api client base64 image

11/03 2016

0.1.1

0.1.1.0

A reusable base API client for use with remote services.

  Sources   Download

BSD 2-Clause

The Requires

 

The Development Requires

laravel api curl api client base64 image

10/03 2016

0.1.0

0.1.0.0

A reusable base API client for use with remote services.

  Sources   Download

BSD 2-Clause

The Requires

 

The Development Requires

laravel api curl api client base64 image