CoremediaFactory   A
last analyzed

Complexity

Total Complexity 29

Size/Duplication

Total Lines 277
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 61
dl 0
loc 277
rs 10
c 0
b 0
f 0
wmc 29

29 Methods

Rating   Name   Duplication   Size   Complexity  
A createApiResponsePreparator() 0 4 1
A getApiResponseResolvers() 0 4 1
A createPlaceholderPostProcessor() 0 5 1
A createProductPriceFormatter() 0 4 1
A getCategoryStorageClient() 0 3 1
A createCategoryUrlPlaceholderReplacementRenderer() 0 5 1
A createKeywordsMetadataReplacer() 0 3 1
A getUtilEncodingService() 0 3 1
A createPlaceholderParser() 0 5 1
A createPlaceholderReplacer() 0 3 1
A createCmsSlotContentReader() 0 6 1
A createDescriptionMetadataReplacer() 0 3 1
A getPriceProductStorageClient() 0 3 1
A getUrlGenerator() 0 3 1
A createProductPricePlaceholderReplacementRenderer() 0 7 1
A getMetadataReplacers() 0 7 1
A getPlaceholderReplacementRenderers() 0 8 1
A createTitleMetadataReplacer() 0 3 1
A createPlaceholderResolver() 0 6 1
A createPageMetadataPlaceholderReplacementRenderer() 0 4 1
A getMoneyClient() 0 3 1
A getStoreClient() 0 3 1
A createApiContextMapper() 0 3 1
A createCustomPageUrlPlaceholderReplacementRenderer() 0 4 1
A createProductUrlPlaceholderReplacementRenderer() 0 4 1
A createPageNameMetadataReplacer() 0 3 1
A getPriceProductClient() 0 3 1
A getProductStorageClient() 0 3 1
A createIncorrectPlaceholderDataExecutor() 0 3 1
1
<?php
2
3
/**
4
 * Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Yves\Coremedia;
9
10
use Spryker\Yves\Kernel\AbstractFactory;
11
use SprykerEco\Yves\Coremedia\ApiResponse\ApiResponsePreparator;
12
use SprykerEco\Yves\Coremedia\ApiResponse\ApiResponsePreparatorInterface;
13
use SprykerEco\Yves\Coremedia\ApiResponse\Executor\IncorrectPlaceholderDataExecutor;
14
use SprykerEco\Yves\Coremedia\ApiResponse\Executor\IncorrectPlaceholderDataExecutorInterface;
15
use SprykerEco\Yves\Coremedia\ApiResponse\Parser\PlaceholderParser;
16
use SprykerEco\Yves\Coremedia\ApiResponse\Parser\PlaceholderParserInterface;
17
use SprykerEco\Yves\Coremedia\ApiResponse\PostProcessor\PlaceholderPostProcessor;
18
use SprykerEco\Yves\Coremedia\ApiResponse\PostProcessor\PlaceholderPostProcessorInterface;
19
use SprykerEco\Yves\Coremedia\ApiResponse\Renderer\CategoryUrlPlaceholderReplacementRenderer;
20
use SprykerEco\Yves\Coremedia\ApiResponse\Renderer\CustomPageUrlPlaceholderReplacementRenderer;
21
use SprykerEco\Yves\Coremedia\ApiResponse\Renderer\PageMetadataPlaceholderReplacementRenderer;
22
use SprykerEco\Yves\Coremedia\ApiResponse\Renderer\PlaceholderReplacementRendererInterface;
23
use SprykerEco\Yves\Coremedia\ApiResponse\Renderer\ProductPricePlaceholderReplacementRenderer;
24
use SprykerEco\Yves\Coremedia\ApiResponse\Renderer\ProductUrlPlaceholderReplacementRenderer;
25
use SprykerEco\Yves\Coremedia\ApiResponse\Replacer\Metadata\DescriptionMetadataReplacer;
26
use SprykerEco\Yves\Coremedia\ApiResponse\Replacer\Metadata\KeywordsMetadataReplacer;
27
use SprykerEco\Yves\Coremedia\ApiResponse\Replacer\Metadata\MetadataReplacerInterface;
28
use SprykerEco\Yves\Coremedia\ApiResponse\Replacer\Metadata\PageNameMetadataReplacer;
29
use SprykerEco\Yves\Coremedia\ApiResponse\Replacer\Metadata\TitleMetadataReplacer;
30
use SprykerEco\Yves\Coremedia\ApiResponse\Replacer\PlaceholderReplacer;
31
use SprykerEco\Yves\Coremedia\ApiResponse\Replacer\PlaceholderReplacerInterface;
32
use SprykerEco\Yves\Coremedia\ApiResponse\Resolver\ApiResponseResolverInterface;
33
use SprykerEco\Yves\Coremedia\ApiResponse\Resolver\PlaceholderResolver;
34
use SprykerEco\Yves\Coremedia\Dependency\Client\CoremediaToCategoryStorageClientInterface;
35
use SprykerEco\Yves\Coremedia\Dependency\Client\CoremediaToMoneyClientInterface;
36
use SprykerEco\Yves\Coremedia\Dependency\Client\CoremediaToPriceProductClientInterface;
37
use SprykerEco\Yves\Coremedia\Dependency\Client\CoremediaToPriceProductStorageClientInterface;
38
use SprykerEco\Yves\Coremedia\Dependency\Client\CoremediaToProductStorageClientInterface;
39
use SprykerEco\Yves\Coremedia\Dependency\Client\CoremediaToStoreClientInterface;
40
use SprykerEco\Yves\Coremedia\Dependency\Service\CoremediaToUtilEncodingServiceInterface;
41
use SprykerEco\Yves\Coremedia\Formatter\ProductPriceFormatter;
42
use SprykerEco\Yves\Coremedia\Formatter\ProductPriceFormatterInterface;
43
use SprykerEco\Yves\Coremedia\Mapper\ApiContextMapper;
44
use SprykerEco\Yves\Coremedia\Mapper\ApiContextMapperInterface;
45
use SprykerEco\Yves\Coremedia\Reader\CmsSlotContent\CmsSlotContentReader;
46
use SprykerEco\Yves\Coremedia\Reader\CmsSlotContent\CmsSlotContentReaderInterface;
47
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
48
49
/**
50
 * @method \SprykerEco\Yves\Coremedia\CoremediaConfig getConfig()
51
 * @method \SprykerEco\Client\Coremedia\CoremediaClientInterface getClient()
52
 */
53
class CoremediaFactory extends AbstractFactory
54
{
55
    /**
56
     * @return \SprykerEco\Yves\Coremedia\Reader\CmsSlotContent\CmsSlotContentReaderInterface
57
     */
58
    public function createCmsSlotContentReader(): CmsSlotContentReaderInterface
59
    {
60
        return new CmsSlotContentReader(
61
            $this->getClient(),
62
            $this->createApiContextMapper(),
63
            $this->createApiResponsePreparator()
64
        );
65
    }
66
67
    /**
68
     * @return \SprykerEco\Yves\Coremedia\Mapper\ApiContextMapperInterface
69
     */
70
    public function createApiContextMapper(): ApiContextMapperInterface
71
    {
72
        return new ApiContextMapper();
73
    }
74
75
    /**
76
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\ApiResponsePreparatorInterface
77
     */
78
    public function createApiResponsePreparator(): ApiResponsePreparatorInterface
79
    {
80
        return new ApiResponsePreparator(
81
            $this->getApiResponseResolvers()
82
        );
83
    }
84
85
    /**
86
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Resolver\ApiResponseResolverInterface[]
87
     */
88
    public function getApiResponseResolvers(): array
89
    {
90
        return [
91
            $this->createPlaceholderResolver(),
92
        ];
93
    }
94
95
    /**
96
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Resolver\ApiResponseResolverInterface
97
     */
98
    public function createPlaceholderResolver(): ApiResponseResolverInterface
99
    {
100
        return new PlaceholderResolver(
101
            $this->createPlaceholderParser(),
102
            $this->createPlaceholderPostProcessor(),
103
            $this->createPlaceholderReplacer()
104
        );
105
    }
106
107
    /**
108
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Parser\PlaceholderParserInterface
109
     */
110
    public function createPlaceholderParser(): PlaceholderParserInterface
111
    {
112
        return new PlaceholderParser(
113
            $this->getUtilEncodingService(),
114
            $this->getConfig()
115
        );
116
    }
117
118
    /**
119
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Replacer\PlaceholderReplacerInterface
120
     */
121
    public function createPlaceholderReplacer(): PlaceholderReplacerInterface
122
    {
123
        return new PlaceholderReplacer();
124
    }
125
126
    /**
127
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\PostProcessor\PlaceholderPostProcessorInterface
128
     */
129
    public function createPlaceholderPostProcessor(): PlaceholderPostProcessorInterface
130
    {
131
        return new PlaceholderPostProcessor(
132
            $this->getPlaceholderReplacementRenderers(),
133
            $this->createIncorrectPlaceholderDataExecutor()
134
        );
135
    }
136
137
    /**
138
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Renderer\PlaceholderReplacementRendererInterface
139
     */
140
    public function createProductUrlPlaceholderReplacementRenderer(): PlaceholderReplacementRendererInterface
141
    {
142
        return new ProductUrlPlaceholderReplacementRenderer(
143
            $this->getProductStorageClient()
144
        );
145
    }
146
147
    /**
148
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Renderer\PlaceholderReplacementRendererInterface
149
     */
150
    public function createCategoryUrlPlaceholderReplacementRenderer(): PlaceholderReplacementRendererInterface
151
    {
152
        return new CategoryUrlPlaceholderReplacementRenderer(
153
            $this->getCategoryStorageClient(),
154
            $this->getStoreClient()
155
        );
156
    }
157
158
    /**
159
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Renderer\PlaceholderReplacementRendererInterface
160
     */
161
    public function createPageMetadataPlaceholderReplacementRenderer(): PlaceholderReplacementRendererInterface
162
    {
163
        return new PageMetadataPlaceholderReplacementRenderer(
164
            $this->getMetadataReplacers()
165
        );
166
    }
167
168
    /**
169
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Renderer\PlaceholderReplacementRendererInterface
170
     */
171
    public function createProductPricePlaceholderReplacementRenderer(): PlaceholderReplacementRendererInterface
172
    {
173
        return new ProductPricePlaceholderReplacementRenderer(
174
            $this->getProductStorageClient(),
175
            $this->getPriceProductStorageClient(),
176
            $this->getPriceProductClient(),
177
            $this->createProductPriceFormatter()
178
        );
179
    }
180
181
    /**
182
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Renderer\PlaceholderReplacementRendererInterface
183
     */
184
    public function createCustomPageUrlPlaceholderReplacementRenderer(): PlaceholderReplacementRendererInterface
185
    {
186
        return new CustomPageUrlPlaceholderReplacementRenderer(
187
            $this->getUrlGenerator()
188
        );
189
    }
190
191
    /**
192
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Renderer\PlaceholderReplacementRendererInterface[]
193
     */
194
    public function getPlaceholderReplacementRenderers(): array
195
    {
196
        return [
197
            $this->createProductUrlPlaceholderReplacementRenderer(),
198
            $this->createCategoryUrlPlaceholderReplacementRenderer(),
199
            $this->createPageMetadataPlaceholderReplacementRenderer(),
200
            $this->createProductPricePlaceholderReplacementRenderer(),
201
            $this->createCustomPageUrlPlaceholderReplacementRenderer(),
202
        ];
203
    }
204
205
    /**
206
     * @return \SprykerEco\Yves\Coremedia\Formatter\ProductPriceFormatterInterface
207
     */
208
    public function createProductPriceFormatter(): ProductPriceFormatterInterface
209
    {
210
        return new ProductPriceFormatter(
211
            $this->getMoneyClient()
212
        );
213
    }
214
215
    /**
216
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Replacer\Metadata\MetadataReplacerInterface[]
217
     */
218
    public function getMetadataReplacers(): array
219
    {
220
        return [
221
            $this->createTitleMetadataReplacer(),
222
            $this->createDescriptionMetadataReplacer(),
223
            $this->createKeywordsMetadataReplacer(),
224
            $this->createPageNameMetadataReplacer(),
225
        ];
226
    }
227
228
    /**
229
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Replacer\Metadata\MetadataReplacerInterface
230
     */
231
    public function createTitleMetadataReplacer(): MetadataReplacerInterface
232
    {
233
        return new TitleMetadataReplacer($this->getConfig());
234
    }
235
236
    /**
237
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Replacer\Metadata\MetadataReplacerInterface
238
     */
239
    public function createDescriptionMetadataReplacer(): MetadataReplacerInterface
240
    {
241
        return new DescriptionMetadataReplacer($this->getConfig());
242
    }
243
244
    /**
245
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Replacer\Metadata\MetadataReplacerInterface
246
     */
247
    public function createKeywordsMetadataReplacer(): MetadataReplacerInterface
248
    {
249
        return new KeywordsMetadataReplacer($this->getConfig());
250
    }
251
252
    /**
253
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Replacer\Metadata\MetadataReplacerInterface
254
     */
255
    public function createPageNameMetadataReplacer(): MetadataReplacerInterface
256
    {
257
        return new PageNameMetadataReplacer($this->getConfig());
258
    }
259
260
    /**
261
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Executor\IncorrectPlaceholderDataExecutorInterface
262
     */
263
    public function createIncorrectPlaceholderDataExecutor(): IncorrectPlaceholderDataExecutorInterface
264
    {
265
        return new IncorrectPlaceholderDataExecutor($this->getConfig());
266
    }
267
268
    /**
269
     * @return \SprykerEco\Yves\Coremedia\Dependency\Service\CoremediaToUtilEncodingServiceInterface
270
     */
271
    public function getUtilEncodingService(): CoremediaToUtilEncodingServiceInterface
272
    {
273
        return $this->getProvidedDependency(CoremediaDependencyProvider::SERVICE_UTIL_ENCODING);
274
    }
275
276
    /**
277
     * @return \SprykerEco\Yves\Coremedia\Dependency\Client\CoremediaToProductStorageClientInterface
278
     */
279
    public function getProductStorageClient(): CoremediaToProductStorageClientInterface
280
    {
281
        return $this->getProvidedDependency(CoremediaDependencyProvider::CLIENT_PRODUCT_STORAGE);
282
    }
283
284
    /**
285
     * @return \SprykerEco\Yves\Coremedia\Dependency\Client\CoremediaToCategoryStorageClientInterface
286
     */
287
    public function getCategoryStorageClient(): CoremediaToCategoryStorageClientInterface
288
    {
289
        return $this->getProvidedDependency(CoremediaDependencyProvider::CLIENT_CATEGORY_STORAGE);
290
    }
291
292
    /**
293
     * @return \SprykerEco\Yves\Coremedia\Dependency\Client\CoremediaToPriceProductStorageClientInterface
294
     */
295
    public function getPriceProductStorageClient(): CoremediaToPriceProductStorageClientInterface
296
    {
297
        return $this->getProvidedDependency(CoremediaDependencyProvider::CLIENT_PRICE_PRODUCT_STORAGE);
298
    }
299
300
    /**
301
     * @return \SprykerEco\Yves\Coremedia\Dependency\Client\CoremediaToPriceProductClientInterface
302
     */
303
    public function getPriceProductClient(): CoremediaToPriceProductClientInterface
304
    {
305
        return $this->getProvidedDependency(CoremediaDependencyProvider::CLIENT_PRICE_PRODUCT);
306
    }
307
308
    /**
309
     * @return \SprykerEco\Yves\Coremedia\Dependency\Client\CoremediaToMoneyClientInterface
310
     */
311
    public function getMoneyClient(): CoremediaToMoneyClientInterface
312
    {
313
        return $this->getProvidedDependency(CoremediaDependencyProvider::CLIENT_MONEY);
314
    }
315
316
    /**
317
     * @return \SprykerEco\Yves\Coremedia\Dependency\Client\CoremediaToStoreClientInterface
318
     */
319
    public function getStoreClient(): CoremediaToStoreClientInterface
320
    {
321
        return $this->getProvidedDependency(CoremediaDependencyProvider::CLIENT_STORE);
322
    }
323
324
    /**
325
     * @return \Symfony\Component\Routing\Generator\UrlGeneratorInterface
326
     */
327
    public function getUrlGenerator(): UrlGeneratorInterface
328
    {
329
        return $this->getProvidedDependency(CoremediaDependencyProvider::URL_GENERATOR);
330
    }
331
}
332