aqilixapi / image
Apigility Module For Handling Image
Requires
- php: >=5.3.3
- doctrine/doctrine-orm-module: =0.8.0
- hounddog/doctrine-data-fixture-module: 0.0.4
- zfcampus/zf-oauth2-doctrine: 0.3.5
Requires (Dev)
- phpmd/phpmd: 2.*
- phpunit/phpunit: 4.*
- squizlabs/php_codesniffer: 1.4.*
- zend/zend-studio-development-mode: ~1.0
- zendframework/zendframework: >=2.3.2,<3.0.0
- zfcampus/zf-apigility: 1.0.3
This package is not auto-updated.
Last update: 2025-01-08 10:57:56 UTC
README
#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.
Currently this module has support these resources with required OAuth2 Authentication
- 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:
- 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
.
"require": {
.
.
.
"aqilixapi/image": "1.1"
}
Run composer update
then enable the module on config/application.config.php
return array(
'modules' => array(
.
.
.
'AqilixAPI\\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
'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/aqilixapi.image.local.php.dist
. Copy this file to config/autoload/aqilixapi.image.local.php
and adjust these configuration
'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.
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
.
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/aqilixapi.image.local.php
)
'authorization' => array(
'scopes' => array(
'post' => array(
'resource' => 'AqilixAPI\Image\V1\Rest\Image\Controller::collection',
'method' => 'POST',
),
'update' => array(
'resource' => 'AqilixAPI\Image\V1\Rest\Image\Controller::entity',
'method' => 'PATCH',
),
'delete' => array(
'resource' => 'AqilixAPI\Image\V1\Rest\Image\Controller::entity',
'method' => 'DELETE',
)
)
),
Define Scope
name as key, and define resource
and method
wanna be authorized.
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.
To do that just run this command from app skeleton
working directory
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
vendor/bin/doctrine-module data-fixture:import
Then run the API
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
.
####Request Access Token From OAuth Using Credential, Client ID and Client Secret
Then use the access token on Authorization Header
while send Request
to API
####Upload Image Using POST Method
####Retrieve The Uploaded Image Using GET Method
####Update Image Using PATCH Method