Compare commits

...
3 Commits
Author SHA1 Message Date
KKlochko 8dcb580393 Add the authenticated API fetcher and sender.
continuous-integration/drone/push Build is passing
2023-06-22 11:04:42 +03:00
KKlochko e178d1c8b4 Update the ApiFetcher to have option to get a field or get the JSON. 2023-06-22 10:59:10 +03:00
KKlochko 6c13fe7d7d Add the method to get cart items as the JSON array. 2023-06-22 10:58:21 +03:00
4 changed files with 105 additions and 3 deletions
+5 -3
View File
@@ -6,7 +6,7 @@ use GuzzleHttp\Client;
class ApiFetcher
{
public function get($endpoint) {
public function get($endpoint, $field = 'items') {
$client = new Client();
$baseUrl = config('dotsapi.base_url');
@@ -31,8 +31,10 @@ class ApiFetcher
);
$data = json_decode($response->getBody()->getContents(), true);
$items = $data['items'];
return $items;
if($field == '')
return $data;
return $data[$field];
}
}
+42
View File
@@ -0,0 +1,42 @@
<?php
namespace App\DotsAPI\Fetcher\v2;
use GuzzleHttp\Client;
class AuthApiFetcher
{
public function get($endpoint, $field = 'items') {
$client = new Client();
$baseUrl = config('dotsapi.base_url');
$apiToken = config('dotsapi.api_token');
$apiAccountToken = config('dotsapi.api_account_token');
$apiAuthToken = config('dotsapi.api_auth_token');
$apiUrl = $baseUrl . $endpoint;
$response = $client->get(
$apiUrl,
[
'headers' => [
'Api-Auth-Token' => $apiAuthToken,
'Api-Token' => $apiToken,
'Api-Account-Token' => $apiAccountToken,
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'v'=> '2.0.0',
],
]
);
$data = json_decode($response->getBody()->getContents(), true);
if($field == '')
return $data;
return $data[$field];
}
}
+44
View File
@@ -0,0 +1,44 @@
<?php
namespace App\DotsAPI\Fetcher\v2;
use GuzzleHttp;
use GuzzleHttp\Client;
class AuthApiSender
{
public function get($endpoint, $json, $field = 'id') {
$client = new Client();
$baseUrl = config('dotsapi.base_url');
$apiToken = config('dotsapi.api_token');
$apiAccountToken = config('dotsapi.api_account_token');
$apiAuthToken = config('dotsapi.api_auth_token');
$apiUrl = $baseUrl . $endpoint;
$response = $client->post(
$apiUrl,
[
GuzzleHttp\RequestOptions::JSON => $json,
'headers' => [
'Api-Auth-Token' => $apiAuthToken,
'Api-Token' => $apiToken,
'Api-Account-Token' => $apiAccountToken,
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'v'=> '2.0.0',
],
]
);
$data = json_decode($response->getBody()->getContents(), true);
if($field == '')
return $data;
return $data[$field];
}
}
+14
View File
@@ -56,6 +56,20 @@ class Cart extends Model
return $item;
}
public function getItemJSON()
{
$items = $this->items;
$itemJSON = [];
foreach($items as $item)
array_push($itemJSON, [
'id' =>$item->uuid,
'count'=> $item->count
]);
return $itemJSON;
}
public function getItemIds(): array
{
return $this->items()->pluck('item_id')->toArray();