diff --git a/src/Endpoints/AbstractEndpoint.php b/src/Endpoints/AbstractEndpoint.php index 1cc91b9..00b397f 100644 --- a/src/Endpoints/AbstractEndpoint.php +++ b/src/Endpoints/AbstractEndpoint.php @@ -66,6 +66,36 @@ protected function restCreate(array $body) return ResourceFactory::createFromApiResult($result, $this->getResourceObject(), $this->getSingleResourceKey()); } + /** + * @param array $body + * @return AbstractCollection + * @throws ApiException + */ + protected function restCreateCollection(array $body) + { + $result = $this->client->performHttpCall( + self::REST_CREATE, + $this->getResourcePath(), + $this->parseRequestBody($body) + ); + + /** @var AbstractCollection $collection */ + $collection = $this->getResourceCollectionObject( + null, + null + ); + + if (is_object($result)) { + $result = $result->{$collection->getCollectionResourceName()}; + } + + foreach ($result as $dataResult) { + $collection[] = ResourceFactory::createFromApiResult($dataResult, $this->getResourceObject()); + } + + return $collection; + } + /** * @param $id * @param array $filters diff --git a/src/Endpoints/ParcelMultiEndpoint.php b/src/Endpoints/ParcelMultiEndpoint.php new file mode 100644 index 0000000..f959a08 --- /dev/null +++ b/src/Endpoints/ParcelMultiEndpoint.php @@ -0,0 +1,44 @@ +client); + } + + /** + * @param $previous + * @param $next + * @return ParcelCollection + */ + protected function getResourceCollectionObject($previous, $next): ParcelCollection + { + return new ParcelCollection($this->client, $previous, $next); + } + + /** + * @param array $data + * @return ParcelCollection + * @throws ApiException + */ + public function create(array $data = []): ParcelCollection + { + return $this->restCreateCollection($data); + } +} diff --git a/src/Endpoints/ShippingProductsEndpoint.php b/src/Endpoints/ShippingProductsEndpoint.php new file mode 100644 index 0000000..7c9775b --- /dev/null +++ b/src/Endpoints/ShippingProductsEndpoint.php @@ -0,0 +1,53 @@ +client); + } + + /** + * @return ShippingProductCollection + */ + protected function getResourceCollectionObject(): ShippingProductCollection + { + return new ShippingProductCollection(null, null); + } + + /** + * @param $id + * @param array $filters + * @return AbstractResource + * @throws ApiException + */ + public function get($id, array $filters = []) + { + return $this->list($filters)->getArrayCopy()->get($id); + } + + /** + * @param $filters + * @return array|AbstractCollection + * @throws ApiException + */ + public function list(array $filters = []) + { + return $this->restList($filters); + }} diff --git a/src/Resources/AvailableShippingFunctionality.php b/src/Resources/AvailableShippingFunctionality.php new file mode 100644 index 0000000..68f58e3 --- /dev/null +++ b/src/Resources/AvailableShippingFunctionality.php @@ -0,0 +1,135 @@ +client); + } +} diff --git a/src/Resources/Parcel.php b/src/Resources/Parcel.php index bdc869b..2923cda 100644 --- a/src/Resources/Parcel.php +++ b/src/Resources/Parcel.php @@ -78,4 +78,6 @@ class Parcel extends AbstractResource public $tracking_url; /** @var string */ public $country_state; + /** @var int */ + public $quantity; } diff --git a/src/Resources/ShippingProduct.php b/src/Resources/ShippingProduct.php new file mode 100644 index 0000000..e5f74a5 --- /dev/null +++ b/src/Resources/ShippingProduct.php @@ -0,0 +1,27 @@ +parcels = new ParcelEndpoint($this); + $this->parcelsMulti = new ParcelMultiEndpoint($this); $this->parcelStatuses = new ParcelStatusEndpoint($this); $this->shippingMethods = new ShippingMethodEndpoint($this); + $this->shippingProducts = new ShippingProductsEndpoint($this); $this->senderAddresses = new SenderAddressEndpoint($this); $this->labels = new LabelEndpoint($this); $this->invoices = new InvoiceEndpoint($this);