Skip to content

Bringing the power of the CakePHP ORM to your favourite webservices

License

Notifications You must be signed in to change notification settings

sanisoft/Webservice

This branch is 206 commits behind UseMuffin/Webservice:master.

Folders and files

NameName
Last commit message
Last commit date
Oct 15, 2015
Apr 3, 2016
Feb 16, 2016
Apr 30, 2015
Apr 30, 2015
Apr 30, 2015
Apr 30, 2015
Feb 26, 2016
Apr 30, 2015
May 29, 2016
Apr 3, 2016
Feb 23, 2016
Feb 9, 2016

Repository files navigation

Webservice

Build Status Coverage Total Downloads License

Bringing the power of the CakePHP ORM to your favourite webservices.

Install

Using Composer:

composer require muffin/webservice:dev-master

You then need to load the plugin. You can use the shell command:

bin/cake plugin load Muffin/Webservice

or by manually adding statement shown below to boostrap.php:

Plugin::load('Muffin/Webservice', ['bootstrap' => true]);

Usage

As an ORM

Create driver

<?php

namespace App\Webservice\Driver;

use Cake\Network\Http\Client;
use Muffin\Webservice\AbstractDriver;

class Articles extends AbstractDriver
{

    /**
     * {@inheritDoc}
     */
    public function initialize()
    {
        $this->client(new Client([
            'host' => 'example.com'
        ]));
    }
}

Create a webservice

<?php

namespace App\Webservice;

use Cake\Network\Http\Client;
use Muffin\Webservice\Query;
use Muffin\Webservice\Webservice\Webservice;

class ArticlesWebservice extends Webservice
{

    /**
     * {@inheritDoc}
     */
    protected function _executeReadQuery(Query $query, array $options = [])
    {
        $response = $this->driver()->client()->get('/articles.json');

        if (!$response->isOk()) {
            return false;
        }

        $resources = $this->_transformResults($query->endpoint(), $response->json['articles']);

        return new ResultSet($resources, count($resources));
    }
}

Create an endpoint (optional)

<?php

namespace App\Model\Endpoint;

use Muffin\Webservice\Model\Endpoint;

class ArticlesEndpoint extends Endpoint
{

}

Create a resource (optional)

<?php

namespace App\Model\Resource;

use Muffin\Webservice\Model\Resource;

class Article extends Resource
{

}

Use it

<?php

namespace App\Controller;

use Cake\Event\Event;

class ArticlesController extends AppController
{

    public function beforeFilter(Event $event)
    {
        $this->loadModel('Articles', 'Endpoint');
    }

    public function index()
    {
        $articles = $this->Articles->find();
    }

}

As base for a driver

You can also use this plugin as a base to a separate plugin or to manage custom webservice drivers connections.

Until official documentation is written, David Yell wrote a good post to get you started.

Implementations of webservices

As an ORM

The following plugins use the Webservice ORM to give you easy access to all kinds of webservices:

  • GitHub plugin - Provides access to the GitHub REST APIs.
  • NS plugin - Provides access to the NS (Nederlandse Spoorwegen) APIs.
  • Stagemarkt plugin - Provides access to the SBB Stagemarkt REST APIs.
  • Twitter plugin - Provides access to the Twitter REST and streaming APIs.

As a driver

The following plugins implement a Webservice driver with their own methods:

Patches & Features

  • Fork
  • Mod, fix
  • Test - this is important, so it's not unintentionally broken
  • Commit - do not mess with license, todo, version, etc. (if you do change any, bump them into commits of their own that I can ignore when I pull)
  • Pull request - bonus point for topic branches

To ensure your PRs are considered for upstream, you MUST follow the CakePHP coding standards.

Bugs & Feedback

http://github.com/usemuffin/webservice/issues

License

Copyright (c) 2015, [Use Muffin] and licensed under The MIT License.

About

Bringing the power of the CakePHP ORM to your favourite webservices

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%