Skip to content

Commit 1cb0e16

Browse files
committed
Factory refactoring.
1 parent 4ce24ed commit 1cb0e16

File tree

9 files changed

+230
-244
lines changed

9 files changed

+230
-244
lines changed

src/Factories/Sync/ParameterFactory.php

Lines changed: 0 additions & 231 deletions
This file was deleted.

src/PrintfulProducts.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace Printful;
44

5-
use Printful\Factories\Sync\ParameterFactory;
65
use Printful\Structures\Sync\Requests\SyncVariantRequest;
76
use Printful\Structures\Sync\Responses\SyncProductRequestResponse;
87
use Printful\Structures\Sync\Responses\SyncProductResponse;
@@ -108,7 +107,7 @@ public function getVariant($id)
108107
*/
109108
public function createProduct(SyncProductCreationParameters $request)
110109
{
111-
$params = ParameterFactory::buildSyncProductPostParams($request);
110+
$params = $request->toPostArray();
112111
$result = $this->printfulClient->post(PrintfulProducts::ENDPOINT_PRODUCTS, $params);
113112

114113
$syncProduct = SyncProductResponse::fromArray($result);
@@ -128,7 +127,7 @@ public function createProduct(SyncProductCreationParameters $request)
128127
*/
129128
public function createVariant($productId, SyncVariantRequest $syncVariantRequest)
130129
{
131-
$params = ParameterFactory::buildSyncVariantPostParams($syncVariantRequest);
130+
$params = $syncVariantRequest->toPostArray();
132131
$result = $this->printfulClient->post(PrintfulProducts::ENDPOINT_PRODUCTS . '/' . $productId . '/variants', $params);
133132

134133
$syncVariant = SyncVariantResponse::fromArray($result);
@@ -148,7 +147,7 @@ public function createVariant($productId, SyncVariantRequest $syncVariantRequest
148147
*/
149148
public function updateProduct($productId, SyncProductUpdateParameters $request)
150149
{
151-
$params = ParameterFactory::buildSyncProductPutParams($request);
150+
$params = $request->toPutArray();
152151
$result = $this->printfulClient->put(PrintfulProducts::ENDPOINT_PRODUCTS . '/' . $productId, $params);
153152

154153
$syncProduct = SyncProductResponse::fromArray($result);
@@ -168,7 +167,7 @@ public function updateProduct($productId, SyncProductUpdateParameters $request)
168167
*/
169168
public function updateVariant($variantId, SyncVariantRequest $request)
170169
{
171-
$params = ParameterFactory::buildSyncVariantPutParams($request);
170+
$params = $request->toPutArray();
172171
$result = $this->printfulClient->put(PrintfulProducts::ENDPOINT_VARIANTS . '/' . $variantId, $params);
173172

174173
$syncVariant = SyncVariantResponse::fromArray($result);

src/Structures/Sync/Requests/SyncVariantRequest.php

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace Printful\Structures\Sync\Requests;
44

5+
use Printful\Exceptions\PrintfulSdkException;
6+
57
class SyncVariantRequest
68
{
79
/** @var int|null */
@@ -98,4 +100,85 @@ public static function fromArray(array $array)
98100

99101
return $syncVariantRequest;
100102
}
103+
104+
/**
105+
* Builds POST request array
106+
*
107+
* @return array
108+
* @throws PrintfulSdkException
109+
*/
110+
public function toPostArray()
111+
{
112+
if (!$this->variantId) {
113+
throw new PrintfulSdkException('Missing variant_id');
114+
}
115+
116+
$files = $this->getFiles();
117+
if (empty($files)) {
118+
throw new PrintfulSdkException('Missing files');
119+
}
120+
121+
$syncVariantParams = [];
122+
123+
$syncVariantParams['external_id'] = $this->externalId;
124+
$syncVariantParams['retail_price'] = $this->retailPrice;
125+
$syncVariantParams['variant_id'] = $this->variantId;
126+
127+
$syncVariantParams['files'] = [];
128+
foreach ($files as $file) {
129+
$syncVariantParams['files'][] = $file->toArray();
130+
}
131+
132+
$syncVariantParams['options'] = [];
133+
foreach ($this->getOptions() as $option) {
134+
$syncVariantParams['options'][] = $option->toArray();
135+
}
136+
137+
return $syncVariantParams;
138+
}
139+
140+
/**
141+
* Builds PUT request array
142+
*
143+
* @return array
144+
* @throws PrintfulSdkException
145+
*/
146+
public function toPutArray()
147+
{
148+
$syncVariantParams = [];
149+
150+
if (!is_null($this->externalId)) {
151+
$syncVariantParams['external_id'] = $this->externalId;
152+
}
153+
154+
if (!is_null($this->retailPrice)) {
155+
$syncVariantParams['retail_price'] = $this->retailPrice;
156+
}
157+
158+
if (!is_null($this->variantId)) {
159+
if (!$this->variantId) {
160+
throw new PrintfulSdkException('Variant id is required');
161+
}
162+
163+
$syncVariantParams['variant_id'] = $this->variantId;
164+
}
165+
166+
$files = $this->getFiles();
167+
if (!is_null($files)) {
168+
$syncVariantParams['files'] = [];
169+
foreach ($files as $file){
170+
$syncVariantParams['files'][] = $file->toArray();
171+
}
172+
}
173+
174+
$options = $this->getOptions();
175+
if (!is_null($options)) {
176+
$syncVariantParams['options'] = [];
177+
foreach ($options as $option) {
178+
$syncVariantParams['options'][] = $option->toArray();
179+
}
180+
}
181+
182+
return $syncVariantParams;
183+
}
101184
}

0 commit comments

Comments
 (0)