noc-vissor / papi
php api client library
v1.1
2023-01-27 10:22 UTC
Requires
- php: >=7.4.0
This package is auto-updated.
Last update: 2025-07-05 11:44:29 UTC
README
papi is a client library for working with API in an object oriented style
install: composer require noc-vissor/papi
Request
Authorization
Api
Cache
Request object
create Request object:<?php use NocVissor\Papi\Request; $request = new Request([ "headers" => [ "token" => "..." ], "post" => [ "data" => "somedata" ], "get" => [ "page" => "2" ], ]);
Request constructor accepts an associative array with subarrays: headers, post, get (any of these subarrays may not be passed, then an empty array will be set for it)
<?php use NocVissor\Papi\Request; $request = new Request([ "headers" => [ "token" => "..." ], "post" => [ "data" => "somedata" ] ]);
Request object has get, post, headers propertyies, they can be changed after initializations:
<?php use NocVissor\Papi\Request; $request = new Request(); $request->post['data'] = 'somebody';
Request methods:
merge
static function, accept an unlimited request objects and combines their properties, if several objects have the same properties, the properties of the object passed earlier are accepted<?php use NocVissor\Papi\Request; $request1 = new Request([ 'post' => [ 'par1' => 'val1', 'par2' => 'val2' ] ]); $request2 = new Request([ 'post' => [ 'par2' => 'newVal2', 'par3' => 'val3' ] ]); // request2 passed by first parametr, so request2 has hightly priotity than request1 $new_request = Request::merge($request2, $request1); print_r($new_request); // [post] => Array // ( // [par2] => newVal2 // [par3] => val3 // [par1] => val1 // )
Authorization
Authorization is abstract class, use a ready-made class, or create a new class that inherits the class Auth (see examples/telegram.php)Methods
link
accept Api object, and called from Api object when it is called auth method, Api object pass itself to Auth, for Auth using Api object<?php use NocVissor\Papi\Request; use NocVissor\Papi\Auth\Auth; use NocVissor\Papi\Api; class TokenAuth extends Auth{ private $token; function __construct($token) { parent::__construct(); $this->token = $token; $this->request = new Request([ 'headers' => [ 'token' => $token ] ]); } protected function link(Api $api){ parent::link($api); $api->base_url = "https://site.com/api/$this->token" } } $api = new Api(); $token = 'token'; $auth = new TokenAuth($token); $api->auth($auth);
Api
Api is the general object, through it call api queries. Api constructor accept base_url param<?php use NocVissor\Papi\Request; use NocVissor\Papi\Auth\BearerAuth; use NocVissor\Papi\Api; $api = new Api('https://example.com/api'); // create bearer token auth $auth = new BearerAuth('token'); // link auth object to api object $api->auth($auth); // set base request $api->setBase(new Request(['get'=>[ 'a' => 'b' ]])); // merge base request (original base request has priotity on passed request) $api->mergeBase(new Request(['get'=>[ 'a' => 'c', '222' => 'ttt' ]])); // result $api->based_request->get['a'] - b // put, post, get, patch, delete methods accept url relative base_url and request object $api->put('/items/add', new Request([ 'post' => [ 'name' => 'test_name' ] ]));
Api also method query for detailed query
accept data array, items:
url, method, is_absolute, ch, request
required: url, method
<?php use NocVissor\Papi\Request; use NocVissor\Papi\Api; $api = new Api('https://example.com/api'); $custom_ch = curl_init(); curl_setopt($custom_ch, CURLOPT_EXPECT_100_TIMEOUT_MS, 100000); $api->query([ 'url' => 'https://example.com/api2/items/add', // required 'method' => 'put', // required, valid values: put, post, patch, get, delete 'is_absolute' => true, // bool 'request' => new Request([ // request object 'post' => [ 'name' => 'test_name' ] ]), 'ch' => $custom_ch ]);
Cache
Api oject property default path: './cache'<?php use NocVissor\Papi\Api; $api = new Api(); $api->cache->setPath('../../path'); $api->cache->put('token.json', json_encode([ 'access' => 'aaa', 'refresh' => 'bbb' ])); $file = $api->cache->get('token.json');
can be used in auth for save token or other data (see Auth/SkorozvonAuth.php)