Cleanup old objects and add serializer
This commit is contained in:
parent
c823696937
commit
44bd43128b
@ -12,7 +12,8 @@
|
||||
"require": {
|
||||
"php": "^8.0",
|
||||
"ext-json": "*",
|
||||
"guzzlehttp/guzzle": "^6.0"
|
||||
"guzzlehttp/guzzle": "^6.0",
|
||||
"symfony/serializer": "^5.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
@ -15,7 +15,7 @@ class GrocyClient
|
||||
|
||||
private function getObjects(string $object, array $query = [], $order = null, $limit = null, $offset = null)
|
||||
{
|
||||
return $this->client->get($object, compact('order', 'limit', 'offset'));
|
||||
return $this->client->get(sprintf('objects/%s', $object), compact('order', 'limit', 'offset'));
|
||||
}
|
||||
|
||||
private function getObject(string $object, int $id)
|
||||
|
@ -6,19 +6,6 @@ namespace Ardent\GrocyApi\Objects;
|
||||
|
||||
class ApiListTransformer
|
||||
{
|
||||
private static function list(string $type): ?string
|
||||
{
|
||||
return match ($type) {
|
||||
Category::getType() => Category::class,
|
||||
SingleArticle::getType() => SingleArticle::class,
|
||||
SingleArticleDetails::getType() => SingleArticleDetails::class,
|
||||
Order::getType() => Order::class,
|
||||
OrderLine::getType() => OrderLine::class,
|
||||
OrderArticle::getType() => OrderArticle::class,
|
||||
Delivery::getType() => Delivery::class,
|
||||
default => null,
|
||||
};
|
||||
}
|
||||
|
||||
public static function getObjects(array $items): array
|
||||
{
|
||||
|
@ -1,57 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Ardent\GrocyApi\Objects;
|
||||
|
||||
|
||||
class Category extends AbstractApiObject
|
||||
{
|
||||
static public function getType(): string
|
||||
{
|
||||
return 'CATEGORY';
|
||||
}
|
||||
|
||||
/**
|
||||
* Category constructor.
|
||||
*/
|
||||
public function __construct(
|
||||
private string $id,
|
||||
private string $name,
|
||||
private array $items,
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
static public function fromApi(array $apiObject): AbstractApiObject
|
||||
{
|
||||
return new self(
|
||||
$apiObject['id'],
|
||||
$apiObject['name'],
|
||||
ApiListTransformer::getObjects($apiObject['items']),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getId(): string
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getName(): string
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return SingleArticle[]
|
||||
*/
|
||||
public function getArticles(): array
|
||||
{
|
||||
return $this->items;
|
||||
}
|
||||
}
|
@ -1,107 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Ardent\GrocyApi\Objects;
|
||||
|
||||
|
||||
class Delivery extends AbstractApiObject
|
||||
{
|
||||
/**
|
||||
* Delivery constructor.
|
||||
*/
|
||||
public function __construct(
|
||||
private string $id,
|
||||
private string $deliveryId,
|
||||
private string $creationTime,
|
||||
private array $slot,
|
||||
private array $eta2,
|
||||
private string $status,
|
||||
private array $deliveryTime,
|
||||
private array $orders,
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
static public function getType(): string
|
||||
{
|
||||
return 'DELIVERY';
|
||||
}
|
||||
|
||||
static public function fromApi(array $apiObject): AbstractApiObject
|
||||
{
|
||||
return new self(
|
||||
$apiObject['id'],
|
||||
$apiObject['delivery_id'],
|
||||
$apiObject['creation_time'],
|
||||
$apiObject['slot'],
|
||||
$apiObject['eta2'],
|
||||
$apiObject['status'],
|
||||
$apiObject['delivery_time'],
|
||||
ApiListTransformer::getObjects($apiObject['orders']),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getId(): string
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getDeliveryId(): string
|
||||
{
|
||||
return $this->deliveryId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getCreationTime(): string
|
||||
{
|
||||
return $this->creationTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getSlot(): array
|
||||
{
|
||||
return $this->slot;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getEta2(): array
|
||||
{
|
||||
return $this->eta2;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getStatus(): string
|
||||
{
|
||||
return $this->status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getDeliveryTime(): array
|
||||
{
|
||||
return $this->deliveryTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Order[]
|
||||
*/
|
||||
public function getOrders(): array
|
||||
{
|
||||
return $this->orders;
|
||||
}
|
||||
}
|
@ -1,97 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Ardent\GrocyApi\Objects;
|
||||
|
||||
|
||||
class Order extends AbstractApiObject
|
||||
{
|
||||
/**
|
||||
* Order constructor.
|
||||
*/
|
||||
public function __construct(
|
||||
private string $id,
|
||||
private array $items,
|
||||
private array $deliverySlots,
|
||||
private array $selectedSlot,
|
||||
private int $totalCount,
|
||||
private int $totalPrice,
|
||||
private int $checkoutTotalPrice,
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
static public function getType(): string
|
||||
{
|
||||
return 'ORDER';
|
||||
}
|
||||
|
||||
static public function fromApi(array $apiObject): AbstractApiObject
|
||||
{
|
||||
return new self(
|
||||
$apiObject['id'],
|
||||
ApiListTransformer::getObjects($apiObject['items']),
|
||||
$apiObject['delivery_slots'] ?? [],
|
||||
$apiObject['selected_slot'] ?? [],
|
||||
$apiObject['total_count'] ?? -1,
|
||||
$apiObject['total_price'],
|
||||
$apiObject['checkout_total_price'],
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getId(): string
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return OrderLine[]
|
||||
*/
|
||||
public function getItems(): array
|
||||
{
|
||||
return $this->items;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getDeliverySlots(): array
|
||||
{
|
||||
return $this->deliverySlots;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getSelectedSlot(): array
|
||||
{
|
||||
return $this->selectedSlot;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getTotalCount(): int
|
||||
{
|
||||
return $this->totalCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getTotalPrice(): int
|
||||
{
|
||||
return $this->totalPrice;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getCheckoutTotalPrice(): int
|
||||
{
|
||||
return $this->checkoutTotalPrice;
|
||||
}
|
||||
}
|
@ -1,93 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Ardent\GrocyApi\Objects;
|
||||
|
||||
|
||||
use Ardent\GrocyApi\Client;
|
||||
|
||||
class OrderArticle extends AbstractApiObject
|
||||
{
|
||||
/**
|
||||
* OrderArticle constructor.
|
||||
*/
|
||||
public function __construct(
|
||||
private string $id,
|
||||
private string $name,
|
||||
private array $imageIds,
|
||||
private string $unitQuantity,
|
||||
private int $price,
|
||||
private int $maxCount,
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
static public function getType(): string
|
||||
{
|
||||
return 'ORDER_ARTICLE';
|
||||
}
|
||||
|
||||
static public function fromApi(array $apiObject): AbstractApiObject
|
||||
{
|
||||
return new self(
|
||||
$apiObject['id'],
|
||||
$apiObject['name'],
|
||||
$apiObject['image_ids'],
|
||||
$apiObject['unit_quantity'],
|
||||
$apiObject['price'],
|
||||
$apiObject['max_count'],
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getId(): string
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getName(): string
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $size one of tiny/small/medium/large/extra-large
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
public function getImageUrls(string $size = 'medium'): array
|
||||
{
|
||||
return array_map(function ($id) use ($size) {
|
||||
return Client::getImageUri($id, $size);
|
||||
}, $this->imageIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getUnitQuantity(): string
|
||||
{
|
||||
return $this->unitQuantity;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getPrice(): int
|
||||
{
|
||||
return $this->price;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getMaxCount(): int
|
||||
{
|
||||
return $this->maxCount;
|
||||
}
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Ardent\GrocyApi\Objects;
|
||||
|
||||
|
||||
class OrderLine extends AbstractApiObject
|
||||
{
|
||||
/**
|
||||
* OrderLine constructor.
|
||||
*/
|
||||
public function __construct(
|
||||
private string $id,
|
||||
private array $items,
|
||||
private int $displayPrice,
|
||||
private int $price,
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
static public function getType(): string
|
||||
{
|
||||
return 'ORDER_LINE';
|
||||
}
|
||||
|
||||
static public function fromApi(array $apiObject): AbstractApiObject
|
||||
{
|
||||
dump($apiObject);
|
||||
return new self(
|
||||
$apiObject['id'],
|
||||
ApiListTransformer::getObjects($apiObject['items']),
|
||||
$apiObject['display_price'],
|
||||
$apiObject['price'],
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getId(): string
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return OrderArticle[]
|
||||
*/
|
||||
public function getItems(): array
|
||||
{
|
||||
return $this->items;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getDisplayPrice(): int
|
||||
{
|
||||
return $this->displayPrice;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getPrice(): int
|
||||
{
|
||||
return $this->price;
|
||||
}
|
||||
}
|
@ -1,124 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Ardent\GrocyApi\Objects;
|
||||
|
||||
|
||||
use Ardent\GrocyApi\Client;
|
||||
|
||||
class SingleArticle extends AbstractApiObject
|
||||
{
|
||||
static public function getType(): string
|
||||
{
|
||||
return 'SINGLE_ARTICLE';
|
||||
}
|
||||
|
||||
/**
|
||||
* SingleArticle constructor.
|
||||
*/
|
||||
public function __construct(
|
||||
private string $id,
|
||||
private string $name,
|
||||
private int $price,
|
||||
private int $displayPrice,
|
||||
private string $imageId,
|
||||
private int $maxCount,
|
||||
private string $unitQuantity,
|
||||
private string $unitQuantitySub,
|
||||
private array $decorators,
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
static public function fromApi(array $apiObject): self
|
||||
{
|
||||
return new self(
|
||||
$apiObject['id'],
|
||||
$apiObject['name'],
|
||||
$apiObject['price'] ?? 0,
|
||||
$apiObject['display_price'],
|
||||
$apiObject['image_id'],
|
||||
$apiObject['max_count'],
|
||||
$apiObject['unit_quantity'],
|
||||
$apiObject['unit_quantity_sub'] ?? 'n/a',
|
||||
$apiObject['decorators']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getId(): string
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getName(): string
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getPrice(): float
|
||||
{
|
||||
return $this->price / 100.0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getDisplayPrice(): float
|
||||
{
|
||||
return $this->displayPrice / 100.0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getImageId(): string
|
||||
{
|
||||
return $this->imageId;
|
||||
}
|
||||
|
||||
public function getImageUrl(string $size = 'medium'): string
|
||||
{
|
||||
return Client::getImageUri($this->imageId, $size);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getMaxCount(): int
|
||||
{
|
||||
return $this->maxCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getUnitQuantity(): string
|
||||
{
|
||||
return $this->unitQuantity;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getUnitQuantitySub(): string
|
||||
{
|
||||
return $this->unitQuantitySub;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getDecorators(): array
|
||||
{
|
||||
return $this->decorators;
|
||||
}
|
||||
}
|
@ -1,153 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Ardent\GrocyApi\Objects;
|
||||
|
||||
|
||||
use Ardent\GrocyApi\Client;
|
||||
|
||||
class SingleArticleDetails extends AbstractApiObject
|
||||
{
|
||||
static public function getType(): string
|
||||
{
|
||||
return 'SINGLE_ARTICLE_DETAILS';
|
||||
}
|
||||
|
||||
public function __construct(
|
||||
private string $id,
|
||||
private string $name,
|
||||
private int $price,
|
||||
private int $displayPrice,
|
||||
private int $deposit,
|
||||
private string $imageId,
|
||||
private array $imageIds,
|
||||
private int $maxCount,
|
||||
private string $unitQuantity,
|
||||
private string $unitQuantitySub,
|
||||
private array $decorators,
|
||||
private array $nutritionalValues,
|
||||
private string $ingredientsBlob,
|
||||
private string $additionalInfo,
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
static public function fromApi(array $apiObject): self
|
||||
{
|
||||
return new self(
|
||||
$apiObject['id'],
|
||||
$apiObject['name'],
|
||||
$apiObject['price'] ?? 0,
|
||||
$apiObject['display_price'],
|
||||
$apiObject['deposit'] ?? 0,
|
||||
$apiObject['image_id'],
|
||||
$apiObject['image_ids'],
|
||||
$apiObject['max_count'],
|
||||
$apiObject['unit_quantity'],
|
||||
$apiObject['unit_quantity_sub'] ?? 'n/a',
|
||||
$apiObject['decorators'],
|
||||
$apiObject['nutritional_values'],
|
||||
$apiObject['ingredients_blob'],
|
||||
$apiObject['additional_info'],
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getId(): string
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getName(): string
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
public function getPrice(): float
|
||||
{
|
||||
return $this->price / 100.0;
|
||||
}
|
||||
|
||||
public function getDisplayPrice(): float
|
||||
{
|
||||
return $this->displayPrice / 100.0;
|
||||
}
|
||||
|
||||
public function getDeposit(): float
|
||||
{
|
||||
return $this->deposit / 100.0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getImageId(): string
|
||||
{
|
||||
return $this->imageId;
|
||||
}
|
||||
|
||||
public function getImageUrl(string $size = 'medium'): string
|
||||
{
|
||||
return Client::getImageUri($this->imageId, $size);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getImageIds(): array
|
||||
{
|
||||
return $this->imageIds;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $size one of tiny/small/medium/large/extra-large
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
public function getImageUrls(string $size = 'medium'): array
|
||||
{
|
||||
return array_map(function ($id) use ($size) {
|
||||
return Client::getImageUri($id, $size);
|
||||
}, $this->imageIds);
|
||||
}
|
||||
|
||||
public function getMaxCount(): int
|
||||
{
|
||||
return $this->maxCount;
|
||||
}
|
||||
|
||||
public function getUnitQuantity(): string
|
||||
{
|
||||
return $this->unitQuantity;
|
||||
}
|
||||
|
||||
public function getUnitQuantitySub(): string
|
||||
{
|
||||
return $this->unitQuantitySub;
|
||||
}
|
||||
|
||||
public function getDecorators(): array
|
||||
{
|
||||
return $this->decorators;
|
||||
}
|
||||
|
||||
public function getNutritionalValues(): array
|
||||
{
|
||||
return $this->nutritionalValues;
|
||||
}
|
||||
|
||||
public function getIngredientsBlob(): string
|
||||
{
|
||||
return $this->ingredientsBlob;
|
||||
}
|
||||
|
||||
public function getAdditionalInfo(): string
|
||||
{
|
||||
return $this->additionalInfo;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user