Browse Source

adding

master
HerrHase 3 years ago
commit
dbde1d5c04
9 changed files with 1210 additions and 0 deletions
  1. +3
    -0
      .gitignore
  2. +34
    -0
      README.md
  3. +22
    -0
      composer.json
  4. +525
    -0
      composer.lock
  5. +40
    -0
      src/Auth/TokenAuth.php
  6. +53
    -0
      src/Pirectus.php
  7. +104
    -0
      src/QueryBuilder/AbstractQueryBuilder.php
  8. +242
    -0
      src/QueryBuilder/ItemsQueryBuilder.php
  9. +187
    -0
      src/Request.php

+ 3
- 0
.gitignore View File

@ -0,0 +1,3 @@
vendor
.idea
.vscode

+ 34
- 0
README.md View File

@ -0,0 +1,34 @@
# Pirectus - a small Client for Directus 9
This Client Supports Directus 9, it is written in PHP and use Guzzle for handling requests.
In this Version
## Installation
```php
```
## Quickstart
```php
require('vendor/autoload.php');
use Pirectus\Pirectus;
use Pirectus\Auth\TokenAuth;
$pirectus = new Pirectus('<directus-url>', [
'auth' => new TokenAuth('<directus-authtoken>')
]);
```
```php
$results = $pirectus
->items('pages')
->fields(['id', 'title', 'content'])
->filter([
'status' => ['_eq' => 'published']
])
->find();
```

+ 22
- 0
composer.json View File

@ -0,0 +1,22 @@
{
"name": "tentakelfabrik/pirectus",
"version": "0.1.0",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Björn Hase",
"email": "me@tentakelfabrik.de",
"homepage": "https://tentakelfabrik.de"
}
],
"minimum-stability": "stable",
"autoload": {
"psr-4": {
"Pirectus\\": "src/"
}
},
"require": {
"guzzlehttp/guzzle": "^7.0"
}
}

+ 525
- 0
composer.lock View File

@ -0,0 +1,525 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "16a7f8e2a84fcbee8da3fa43f25eb246",
"packages": [
{
"name": "guzzlehttp/guzzle",
"version": "7.3.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "7008573787b430c1c1f650e3722d9bba59967628"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/7008573787b430c1c1f650e3722d9bba59967628",
"reference": "7008573787b430c1c1f650e3722d9bba59967628",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.4",
"guzzlehttp/psr7": "^1.7 || ^2.0",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0"
},
"provide": {
"psr/http-client-implementation": "1.0"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.4.1",
"ext-curl": "*",
"php-http/client-integration-tests": "^3.0",
"phpunit/phpunit": "^8.5.5 || ^9.3.5",
"psr/log": "^1.1"
},
"suggest": {
"ext-curl": "Required for CURL handler support",
"ext-intl": "Required for Internationalized Domain Name (IDN) support",
"psr/log": "Required for using the Log middleware"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "7.3-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
},
{
"name": "Márk Sági-Kazár",
"email": "mark.sagikazar@gmail.com",
"homepage": "https://sagikazarmark.hu"
}
],
"description": "Guzzle is a PHP HTTP client library",
"homepage": "http://guzzlephp.org/",
"keywords": [
"client",
"curl",
"framework",
"http",
"http client",
"psr-18",
"psr-7",
"rest",
"web service"
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.3.0"
},
"funding": [
{
"url": "https://github.com/GrahamCampbell",
"type": "github"
},
{
"url": "https://github.com/Nyholm",
"type": "github"
},
{
"url": "https://github.com/alexeyshockov",
"type": "github"
},
{
"url": "https://github.com/gmponos",
"type": "github"
}
],
"time": "2021-03-23T11:33:13+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "136a635e2b4a49b9d79e9c8fee267ffb257fdba0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/136a635e2b4a49b9d79e9c8fee267ffb257fdba0",
"reference": "136a635e2b4a49b9d79e9c8fee267ffb257fdba0",
"shasum": ""
},
"require": {
"php": ">=5.5"
},
"require-dev": {
"symfony/phpunit-bridge": "^4.4 || ^5.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.5-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\Promise\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Graham Campbell",
"email": "hello@gjcampbell.co.uk",
"homepage": "https://github.com/GrahamCampbell"
},
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
},
{
"name": "Tobias Nyholm",
"email": "tobias.nyholm@gmail.com",
"homepage": "https://github.com/Nyholm"
},
{
"name": "Tobias Schultze",
"email": "webmaster@tubo-world.de",
"homepage": "https://github.com/Tobion"
}
],
"description": "Guzzle promises library",
"keywords": [
"promise"
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/1.5.0"
},
"funding": [
{
"url": "https://github.com/GrahamCampbell",
"type": "github"
},
{
"url": "https://github.com/Nyholm",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
"type": "tidelift"
}
],
"time": "2021-10-07T13:05:22+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72",
"reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.0",
"ralouphie/getallheaders": "^3.0"
},
"provide": {
"psr/http-factory-implementation": "1.0",
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.4.1",
"http-interop/http-factory-tests": "^0.9",
"phpunit/phpunit": "^8.5.8 || ^9.3.10"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.1-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\Psr7\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Graham Campbell",
"email": "hello@gjcampbell.co.uk",
"homepage": "https://github.com/GrahamCampbell"
},
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
},
{
"name": "George Mponos",
"email": "gmponos@gmail.com",
"homepage": "https://github.com/gmponos"
},
{
"name": "Tobias Nyholm",
"email": "tobias.nyholm@gmail.com",
"homepage": "https://github.com/Nyholm"
},
{
"name": "Márk Sági-Kazár",
"email": "mark.sagikazar@gmail.com",
"homepage": "https://github.com/sagikazarmark"
},
{
"name": "Tobias Schultze",
"email": "webmaster@tubo-world.de",
"homepage": "https://github.com/Tobion"
},
{
"name": "Márk Sági-Kazár",
"email": "mark.sagikazar@gmail.com",
"homepage": "https://sagikazarmark.hu"
}
],
"description": "PSR-7 message implementation that also provides common utility methods",
"keywords": [
"http",
"message",
"psr-7",
"request",
"response",
"stream",
"uri",
"url"
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.1.0"
},
"funding": [
{
"url": "https://github.com/GrahamCampbell",
"type": "github"
},
{
"url": "https://github.com/Nyholm",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
"type": "tidelift"
}
],
"time": "2021-10-06T17:43:30+00:00"
},
{
"name": "psr/http-client",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-client.git",
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
"shasum": ""
},
"require": {
"php": "^7.0 || ^8.0",
"psr/http-message": "^1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Client\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP clients",
"homepage": "https://github.com/php-fig/http-client",
"keywords": [
"http",
"http-client",
"psr",
"psr-18"
],
"support": {
"source": "https://github.com/php-fig/http-client/tree/master"
},
"time": "2020-06-29T06:28:15+00:00"
},
{
"name": "psr/http-factory",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-factory.git",
"reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
"reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
"shasum": ""
},
"require": {
"php": ">=7.0.0",
"psr/http-message": "^1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interfaces for PSR-7 HTTP message factories",
"keywords": [
"factory",
"http",
"message",
"psr",
"psr-17",
"psr-7",
"request",
"response"
],
"support": {
"source": "https://github.com/php-fig/http-factory/tree/master"
},
"time": "2019-04-30T12:38:16+00:00"
},
{
"name": "psr/http-message",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-message.git",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP messages",
"homepage": "https://github.com/php-fig/http-message",
"keywords": [
"http",
"http-message",
"psr",
"psr-7",
"request",
"response"
],
"support": {
"source": "https://github.com/php-fig/http-message/tree/master"
},
"time": "2016-08-06T14:39:51+00:00"
},
{
"name": "ralouphie/getallheaders",
"version": "3.0.3",
"source": {
"type": "git",
"url": "https://github.com/ralouphie/getallheaders.git",
"reference": "120b605dfeb996808c31b6477290a714d356e822"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
"reference": "120b605dfeb996808c31b6477290a714d356e822",
"shasum": ""
},
"require": {
"php": ">=5.6"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.1",
"phpunit/phpunit": "^5 || ^6.5"
},
"type": "library",
"autoload": {
"files": [
"src/getallheaders.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ralph Khattar",
"email": "ralph.khattar@gmail.com"
}
],
"description": "A polyfill for getallheaders.",
"support": {
"issues": "https://github.com/ralouphie/getallheaders/issues",
"source": "https://github.com/ralouphie/getallheaders/tree/develop"
},
"time": "2019-03-08T08:55:37+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
"plugin-api-version": "2.1.0"
}

+ 40
- 0
src/Auth/TokenAuth.php View File

@ -0,0 +1,40 @@
<?php
namespace Pirectus\Auth;
/**
*
*
* @author Björn Hase
* @license http://opensource.org/licenses/MIT The MIT License
* @link https://gitea.tentakelfabrik.de/tentakelfabrik/pirectus Gitea Repository
*
*/
class TokenAuth
{
/** */
private $token = NULL;
/**
* setting token
*
* @param String $token
*
*/
public function __construct(String $token)
{
$this->token = $token;
}
/**
* getting token
*
* @return String
*
*/
public function getToken()
{
return $this->token;
}
}

+ 53
- 0
src/Pirectus.php View File

@ -0,0 +1,53 @@
<?php
namespace Pirectus;
use Pirectus\QueryBuilder\ItemsQueryBuilder;
/**
* Client for Directus Api 9
*
* @author Björn Hase, Tentakelfabrik
* @license http://opensource.org/licenses/MIT The MIT License
* @link https://gitea.tentakelfabrik.de/tentakelfabrik/pirectus
*
*/
class Pirectus
{
/** url of api */
private $url;
/** options for client */
private $options;
/**
*
*
* @param string $url
* @param Array $options
*
*/
public function __construct(string $url, array $options = [])
{
$this->url = $url;
$this->options = $options;
}
/**
* set name for items-collection and create ItemsQueryBuilder
*
* @param string $name
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function items(string $name)
{
$query = [
'endpoint' => '/items/'.$name,
'parameters' => []
];
return new ItemsQueryBuilder($query, $this->url, $this->options);
}
}

+ 104
- 0
src/QueryBuilder/AbstractQueryBuilder.php View File

@ -0,0 +1,104 @@
<?php
namespace Pirectus\QueryBuilder;
use Pirectus\Request;
/**
* Abstract Builder for Query to Directus
*
* @author Björn Hase, Tentakelfabrik
* @license http://opensource.org/licenses/MIT The MIT License
* @link https://gitea.tentakelfabrik.de/tentakelfabrik/pirectus
*
*/
abstract class AbstractQueryBuilder
{
/** query ad array */
protected $query;
/** url to directus api */
protected $url;
/** request object with guzzle/client */
protected $request;
/**
*
*
* @param array $query
* @param array $url
* @param array $options
*
*/
public function __construct(array $query, string $url, array $options)
{
$this->query = $query;
$this->url = $url;
$this->request = new Request($url, $options);
}
/**
* request get
*
*
* @return array
*
*/
public function find()
{
$results = $this->request->get($this->query);
return $results;
}
/**
* request get, getting first result
*
*
* @return array
*
*/
public function findOne()
{
$results = $this->request->get($this->query);
// if result has data, reduce to one
if (isset($results['data']) && isset($results['data'][0])) {
$results['data'] = $results['data'][0];
}
return $result;
}
/**
* request post, send data to create
*
*
* @param array $data
* @return array
*
*/
public function post(array $data)
{
$response = $this->request->post($this->query, $data);
return $response;
}
/**
* request patch, send data to update
*
*
* @param string $id
* @param array $data
* @return
*
*/
public function patch(string $id, array $data)
{
$response = $this->request->patch($id, $this->query, $data);
return $response;
}
}

+ 242
- 0
src/QueryBuilder/ItemsQueryBuilder.php View File

@ -0,0 +1,242 @@
<?php
namespace Pirectus\QueryBuilder;
use Pirectus\QueryBuilder\AbstractQueryBuilder;
/**
* Building Query for Items
*
*
* @author Björn Hase, Tentakelfabrik
* @license http://opensource.org/licenses/MIT The MIT License
* @link https://gitea.tentakelfabrik.de/tentakelfabrik/pirectus
*
*/
class ItemsQueryBuilder extends AbstractQueryBuilder
{
/**
* set fields
*
* @param array $fields
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function fields(array $fields)
{
$this->query['parameters']['fields'] = $fields;
return $this;
}
/**
* adding fields and merge
*
* @param array $fields
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function addFields(array $fields)
{
$this->fillParameter('fields');
$this->query['parameters']['fields'] = array_merge($this->query['parameters']['fields'], $fields);
return $this;
}
/**
* set filter
*
*
* @param array $filter
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function filter(array $filter)
{
$this->query['parameters']['filter'] = $filter;
return $this;
}
/**
* adding filter and merge
*
*
* @param array $filter
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function addFilter(array $filter)
{
$this->fillParameter('filter');
$this->query['parameters']['filter'] = array_merge_recursive($this->query['parameters']['filter'], $filter);
return $this;
}
/**
* set limit
*
* @param int $value
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function limit(int $value)
{
$this->query['parameters']['limit'] = $value;
return $this;
}
/**
* add offset
*
* @param int $value
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function offset(int $value)
{
$this->query['parameters']['offset'] = $value;
return $this;
}
/**
* set GroupBy
*
* @param array $field
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function groupBy(array $groupBy)
{
$this->query['parameters']['groupBy'] = $groupBy;
return $this;
}
/**
* add offset
*
* @param string $field
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function addGroupBy(string $field)
{
$this->fillParameter('groupBy');
$this->query['parameters']['groupBy'][] = $field;
return $this;
}
/**
* set aggregate
*
* count, countDistinct, sum, sumDistinct,
* avg, avgDistinct, min, max
*
* @param string $aggregate
* @param string $field
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function aggregate(string $aggregate, string $field)
{
$this->fillParameter('aggregate');
$this->query['parameters']['aggregate'][$aggregate] = $field;
return $this;
}
/**
* sort
*
* [ <field-name>, -<field-name> ]
*
* @param array $field
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function sort(array $sort)
{
$this->query['parameters']['sort'] = $sort;
return $this;
}
/**
* add sort and merge
*
* [ <field-name>, -<field-name> ]
*
* @param array $field
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function addSort(array $sort)
{
$this->fillParameter('sort');
$this->query['parameters']['sort'] = array_merge($this->query['parameters']['sort'], $sort);
return $this;
}
/**
* search
*
* @param string $value
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function search(string $value)
{
$this->query['parameters']['search'] = $value;
return $this;
}
/**
* meta
*
* total_count, filter_count, *
*
* @param string $value
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function meta(string $value)
{
$this->query['parameters']['meta'] = $value;
return $this;
}
/**
* set aliases
*
*
* @param string $value
* @return \Pirectus\ItemsQueryBuilder
*
*/
public function aliases(string $field, string $alias)
{
$this->query['parameters']['alias'][$field] = $alias;
return $this;
}
/**
* if fields not set, add empty array
*
* @param string $field
*
*/
private function fill(string $field)
{
if (!isset($this->query['parameters'][$field])) {
$this->query['parameters'][$field] = [];
}
}
}

+ 187
- 0
src/Request.php View File

@ -0,0 +1,187 @@
<?php
namespace Pirectus;
use Pirectus\Auth\TokenAuth;
use GuzzleHttp\Client;
/**
* Crete Requests, Parse Parameters and Response with Guzzle to Api
*
*
* @author Björn Hase, Tentakelfabrik
* @license http://opensource.org/licenses/MIT The MIT License
* @link https://gitea.tentakelfabrik.de/tentakelfabrik/pirectus
*
*/
class Request
{
/** client guzzle */
private $client;
/** options */
private $options;
/** headers */
private $headers = [
'Accept' => 'application/json',
'Content-Type' => 'application/json'
];
/**
*
*
* @param string $url
* @param array $options
*
*/
public function __construct(atring $url, array $options)
{
$this->options = $options;
// create client with base url
$this->client = new Client([
'base_uri' => $url
]);
}
/**
* building http headers for request
*
* @return array
*
*/
public function buildHeaders()
{
if (isset($this->options['auth']) && $this->options['auth'] instanceof TokenAuth) {
$headers = array_merge($this->headers, [
'Authorization' => 'Bearer '.$this->options['auth']->getToken()
]);
}
return $headers;
}
/**
* build parameters for query
*
* @param array $query
* @return string
*
*/
public function buildParameters(Array $query)
{
//
$parameters = [];
//
$result = '';
if (isset($query['parameters']['filter'])) {
$parameters['filter'] = json_encode($query['parameters']['filter']);
}
if (isset($query['parameters']['fields'])) {
$parameters['fields'] = implode(',', $query['parameters']['fields']);
}
if (isset($query['parameters']['limit'])) {
$parameters['limit'] = intval($query['parameters']['limit']);
}
if (isset($query['parameters']['offset'])) {
$parameters['offset'] = intval($query['parameters']['offset']);
}
if (isset($query['parameters']['sort'])) {
$parameters['sort'] = implode(',', $query['parameters']['sort']);
}
if (isset($query['parameters']['meta'])) {
$parameters['meta'] = $query['parameters']['meta'];
}
if (isset($query['parameters']['search'])) {
$parameters['search'] = $query['parameters']['search'];
}
if (isset($query['parameters']['groupBy'])) {
$parameters['groupBy'] = intval($query['parameters']['sort']);
}
if (isset($query['parameters']['aggregate'])) {
$parameters['meta'] = $query['parameters']['aggregate'];
}
if (isset($query['parameters']['alias'])) {
$parameters['alias'] = $query['parameters']['alias'];
}
if (count($parameters) > 0) {
$result = http_build_query($parameters);
}
return $result;
}
/**
* get entites in Directus Api
*
* @param array $query
* @return mixed
*
*/
public function get(array $query)
{
$response = $this->client->request('get', $query['endpoint'], [
'query' => $this->buildParameters($query),
'headers' => $this->buildHeaders()
]);
$results = json_decode($response->getBody(), true);
return $results;
}
/**
* post single entity in Directus Api
*
* @param array $query
* @param array $data
* @return mixed
*
*/
public function post(array $query, array $data)
{
$response = $this->client->request('post', $query['endpoint'], [
'headers' => $this->buildHeaders(),
'body' => json_encode($data)
]);
$results = json_decode($response->getBody(), true);
return $results;
}
/**
* patch single entity in Directus Api
*
* @param string $id
* @param array $query
* @param array $data
* @return mixed
*
*/
public function patch(string $id, array $query, array $data)
{
$response = $this->client->request('patch', $query['endpoint'].'/'.$id, [
'headers' => $this->buildHeaders(),
'body' => json_encode($data)
]);
$results = json_decode($response->getBody(), true);
return $results;
}
}

Loading…
Cancel
Save