2017 © Pedro Peláez
 

project image

API to consume resources for apigility project as statics image and files management

image

notafacil/image

API to consume resources for apigility project as statics image and files management

  • Monday, February 19, 2018
  • by sergiohermes
  • Repository
  • 1 Watchers
  • 0 Stars
  • 2 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

notafacil/image for Apigility

Images API Handler

This module is purposed to handle image for an API (create/upload, read, update, delete). It use MySQL with Doctrine ORM. This module is extendable to use another database adapter., (*1)

Currently this module has support these resources with required OAuth2 Authentication, (*2)

  • POST /v1.0/image
  • GET /v1.0/image/id
  • PATCH /v1.0/image/id
  • DELETE /v1.0/image/id

To retrieve the access token, you can use this resource POST /oauth by use some params:, (*3)

  • grant_type
  • client_secret
  • client_id
  • username
  • password

Dependencies

Installation

This is a ZF2/Apigility module, so to use it on your ZF2/Apigility project, need to add repositories and require on composer.json., (*4)

  "require": {
    .
    .
    .
    "notafacil/image": "1.1"
  }

Run composer update then enable the module on config/application.config.php, (*5)

return array(
    'modules' => array(
       .
       .
       .
       'Notafacil\\Image',
       'ZF\\OAuth2\\Doctrine',
       'DoctrineDataFixtureModule'
    )
)

Configuration

Because of this module use doctrine/doctrine-orm-module, we just need to configure database credential using configuration file. I prepare the config file here config/doctrine.local.php.dst. Just copy this file to config/autoload/doctrine.local.php and change the connection params, (*6)

    'connection' => array(
        'orm_default' => array(
            'driverClass' => 'Doctrine\\DBAL\\Driver\\PDOMySql\\Driver',
            'params' => array(
                'host'     => '127.0.0.1',
                'dbname'   => 'apigility',
                'user'     => 'apigility',
                'password' => 'apigility',
            ),
        ),
    ),

After that, we need to configure the image path, thumbnail path, original file path and Asset Manager path. The configuration file is here config/notafacil.image.local.php.dist. Copy this file to config/autoload/notafacil.image.local.php and adjust these configuration, (*7)

    'asset_manager' => array(
        'resolver_configs' => array(
            'paths' => array(
                'data/upload',
            ),
        ),
    ),
    'images' => array(
        'asset_manager_resolver_path' => 'data/upload',
        'target' => 'data/upload/images/img',
        'thumb_path' => 'data/upload/images/thumbs',
        'ori_path'   => 'data/upload/images/ori',
    ),

Make sure those paths are exists and writeable by Web Server, but if you just use PHP built in web server for development you don't need to change their permissions., (*8)

OAuth2

To enable OAuth2 Authentication, just copy default configuration files (config/oauth2.doctrine-orm.local.php.dist, config/oauth2.local.php.dist) to config/autoload/oauth2.doctrine-orm.local.php and config/autoload/oauth2.local.php., (*9)

We also able to configure authorization based on Scope. Currently ACL by Scope just supported by Client Credentials Grant Type. This is caused by limitation from ZF-OAUTH2. To add another Grant Type we should extend the ZF-OAUTH2 code. For configuration, just add configuration mentioned above (config/autoload/notafacil.image.local.php), (*10)

    'authorization' => array(
        'scopes' => array(
            'post' => array(
                'resource' => 'Notafacil\Image\V1\Rest\Image\Controller::collection',
                'method' => 'POST',
            ),
            'update' => array(
                'resource' => 'Notafacil\Image\V1\Rest\Image\Controller::entity',
                'method' => 'PATCH',
            ),
            'delete' => array(
                'resource' => 'Notafacil\Image\V1\Rest\Image\Controller::entity',
                'method' => 'DELETE',
            )
        )
    ),

Define Scope name as key, and define resource and method wanna be authorized., (*11)

Database

This module use a tables image, user and another tables for OAuth2. Currently it use MySQL, but you can change it based on your need easily as long as the database is supported by Doctrine ORM. If you have follow instructions above, it mean just remain creating the database table., (*12)

To do that just run this command from app skeleton working directory, (*13)

vendor/bin/doctrine-module orm:schema-tool:create

Table will be created and if you wanna try the API with sample data. I have prepare them on the source code. Please run this command, (*14)

vendor/bin/doctrine-module data-fixture:import

Then run the API, (*15)

php -S 0.0.0.0:8080 -t public public/index.php

Example

Here are some screenshots I made while trying the API. I use Postman Chrome Extension as REST Client. You can use the same data with the screenshots, because I make it same in Data Fixtures., (*16)

Request Access Token From OAuth Using Credential, Client ID and Client Secret

Request Access Token From OAuth Using Credential, Client ID and Client Secret, (*17)

Then use the access token on Authorization Header while send Request to API, (*18)

Upload Image Using POST MethodUpload Image Using POST Method

Retrieve The Uploaded Image Using GET MethodRetrieve The Uploaded Image Using GET Method

Update Image Using PATCH MethodUpdate Image Using PATCH Method

Retrieve Images Collection Using GET MethodRetrieve Images Collection Using GET Method

Retrieve Images Collection Using GET Method, (*19)

Delete Image Using DELETE MethodDelete Image Using DELETE Method

The Versions

19/02 2018

dev-master

9999999-dev

API to consume resources for apigility project as statics image and files management

  Sources   Download

MIT

The Requires

 

The Development Requires

api framework apigility image zf3

19/02 2018

0.1.1

0.1.1.0

API to consume resources for apigility project as statics image and files management

  Sources   Download

MIT

The Requires

 

The Development Requires

api framework apigility image zf3

19/02 2018

dev-dev-develop

dev-dev-develop

API to consume resources for apigility project as statics image and files management

  Sources   Download

MIT

The Requires

 

The Development Requires

api framework apigility image zf3

19/02 2018

0.1.0

0.1.0.0

API to consume resources for apigility project as statics image and files management

  Sources   Download

MIT

The Requires

 

The Development Requires

api framework apigility image zf3