All Projects → UseMuffin → Webservice

UseMuffin / Webservice

Licence: mit
Bringing the power of the CakePHP ORM to your favourite webservices

Projects that are alternatives of or similar to Webservice

queue
A queue-interop compatible Queueing library
Stars: ✭ 25 (-68.35%)
Mutual labels:  cakephp, cakephp-plugin
Aclmanager
Plugin to manage Acl for CakePHP 2.x
Stars: ✭ 59 (-25.32%)
Mutual labels:  cakephp, cakephp-plugin
crud-users
CakePHP: Users plugin based on the CRUD action classes
Stars: ✭ 17 (-78.48%)
Mutual labels:  cakephp, cakephp-plugin
Debug kit
Debug Toolbar for CakePHP applications.
Stars: ✭ 858 (+986.08%)
Mutual labels:  cakephp, cakephp-plugin
Cakepdf
CakePHP plugin for creating and/or rendering PDFs, supporting several popular PDF engines.
Stars: ✭ 360 (+355.7%)
Mutual labels:  cakephp, cakephp-plugin
crud-view
CakePHP: Automated admin backend based on your CRUD configuration
Stars: ✭ 45 (-43.04%)
Mutual labels:  cakephp, cakephp-plugin
Bootstrap Ui
CakePHP: Transparently use Bootstrap
Stars: ✭ 293 (+270.89%)
Mutual labels:  cakephp, cakephp-plugin
cakephp-mailgun
Mailgun plugin for CakePHP 3
Stars: ✭ 23 (-70.89%)
Mutual labels:  cakephp, cakephp-plugin
Flypie
Flysystem plugin for CakePHP
Stars: ✭ 35 (-55.7%)
Mutual labels:  cakephp, cakephp-plugin
Crud
Production-grade rapid controller development with built in love for API and Search
Stars: ✭ 339 (+329.11%)
Mutual labels:  cakephp, cakephp-plugin
Authorization
PSR7 Middleware for authorization
Stars: ✭ 50 (-36.71%)
Mutual labels:  cakephp, cakephp-plugin
Users
Users Plugin for CakePHP
Stars: ✭ 488 (+517.72%)
Mutual labels:  cakephp, cakephp-plugin
mixerapi
A CakePHP Plugin for RESTful API Development [READ-ONLY]
Stars: ✭ 26 (-67.09%)
Mutual labels:  cakephp, cakephp-plugin
cakephp-rest
CakePHP REST Plugin - Easily build REST API endpoints in your CakePHP application.
Stars: ✭ 23 (-70.89%)
Mutual labels:  cakephp, cakephp-plugin
cakephp-api-pagination
📑 CakePHP 4 plugin that injects pagination information into API responses.
Stars: ✭ 39 (-50.63%)
Mutual labels:  cakephp, cakephp-plugin
Enum
Enumeration list for CakePHP 3
Stars: ✭ 27 (-65.82%)
Mutual labels:  cakephp, cakephp-plugin
cakephp-glide
CakePHP plugin for using Glide image manipulation library
Stars: ✭ 34 (-56.96%)
Mutual labels:  cakephp, cakephp-plugin
cakephp-sequence
CakePHP plugin for maintaining a contiguous sequence of records
Stars: ✭ 41 (-48.1%)
Mutual labels:  cakephp, cakephp-plugin
Cakephp Tools
A CakePHP Tools plugin containing lots of useful helpers, behaviors, components, shells, ...
Stars: ✭ 325 (+311.39%)
Mutual labels:  cakephp, cakephp-plugin
Asset compress
An asset compression plugin for CakePHP. Provides file concatenation and a flexible filter system for preprocessing and minification.
Stars: ✭ 370 (+368.35%)
Mutual labels:  cakephp, cakephp-plugin

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

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

bin/cake plugin load Muffin/Webservice

Usage

As an ORM

Create driver

<?php
namespace App\Webservice\Driver;

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

class Articles extends AbstractDriver
{
    /**
     * Initialize is used to easily extend the constructor.
     */
    public function initialize()
    {
        $this->setClient(new Client([
            'host' => 'example.com'
        ]));
    }
}

Create a webservice

<?php
namespace App\Webservice;

use Muffin\Webservice\Query;
use Muffin\Webservice\ResultSet;
use Muffin\Webservice\Webservice\Webservice;

class ArticlesWebservice extends Webservice
{
    /**
     * Executes a query with the read action using the Cake HTTP Client
     */
    protected function _executeReadQuery(Query $query, array $options = [])
    {
        $response = $this->getDriver()->getClient()->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;
use Muffin\Webservice\Model\EndpointLocator;

class ArticlesController extends AppController
{
    // Either set the default model type to "Endpoint" or explicitly specify
    // model type in loadModel() call as shown below.
    protected $_modelType = 'Endpoint';

    public function index()
    {
        // This is required only if you haven't set `$_modelType` property to
        // "Endpoint" as shown above.
        $this->loadModel('Articles', 'Endpoint');

        $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-Present, [Use Muffin] and licensed under The MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].