commit dbde1d5c0451e5fbedd001f88ab5bbe197e6c73f Author: HerrHase Date: Sun Oct 10 17:17:03 2021 +0200 adding diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3e131c0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +vendor +.idea +.vscode \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..d395f8d --- /dev/null +++ b/README.md @@ -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('', [ + 'auth' => new TokenAuth('') +]); +``` + +```php +$results = $pirectus + ->items('pages') + ->fields(['id', 'title', 'content']) + ->filter([ + 'status' => ['_eq' => 'published'] + ]) + ->find(); +``` \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..b5981a1 --- /dev/null +++ b/composer.json @@ -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" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..532906c --- /dev/null +++ b/composer.lock @@ -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" +} diff --git a/src/Auth/TokenAuth.php b/src/Auth/TokenAuth.php new file mode 100644 index 0000000..3b94a88 --- /dev/null +++ b/src/Auth/TokenAuth.php @@ -0,0 +1,40 @@ +token = $token; + } + + /** + * getting token + * + * @return String + * + */ + public function getToken() + { + return $this->token; + } +} \ No newline at end of file diff --git a/src/Pirectus.php b/src/Pirectus.php new file mode 100644 index 0000000..aeb475b --- /dev/null +++ b/src/Pirectus.php @@ -0,0 +1,53 @@ +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); + } +} \ No newline at end of file diff --git a/src/QueryBuilder/AbstractQueryBuilder.php b/src/QueryBuilder/AbstractQueryBuilder.php new file mode 100644 index 0000000..a1939aa --- /dev/null +++ b/src/QueryBuilder/AbstractQueryBuilder.php @@ -0,0 +1,104 @@ +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; + } +} \ No newline at end of file diff --git a/src/QueryBuilder/ItemsQueryBuilder.php b/src/QueryBuilder/ItemsQueryBuilder.php new file mode 100644 index 0000000..1c00901 --- /dev/null +++ b/src/QueryBuilder/ItemsQueryBuilder.php @@ -0,0 +1,242 @@ +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 + * + * [ , - ] + * + * @param array $field + * @return \Pirectus\ItemsQueryBuilder + * + */ + public function sort(array $sort) + { + $this->query['parameters']['sort'] = $sort; + + return $this; + } + + /** + * add sort and merge + * + * [ , - ] + * + * @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] = []; + } + } + } \ No newline at end of file diff --git a/src/Request.php b/src/Request.php new file mode 100644 index 0000000..35340d0 --- /dev/null +++ b/src/Request.php @@ -0,0 +1,187 @@ + '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; + } +} \ No newline at end of file