1818use Akeneo \Pim \ApiClient \Api \ProductApi ;
1919use Akeneo \Pim \ApiClient \Api \ProductMediaFileApi ;
2020use Akeneo \Pim \ApiClient \Api \ProductModelApi ;
21+ use Akeneo \Pim \ApiClient \Cache \LRUCache ;
2122use Akeneo \Pim \ApiClient \Client \AuthenticatedHttpClient ;
23+ use Akeneo \Pim \ApiClient \Client \CachedResourceClient ;
2224use Akeneo \Pim \ApiClient \Client \HttpClient ;
2325use Akeneo \Pim \ApiClient \Client \ResourceClient ;
2426use Akeneo \Pim \ApiClient \FileSystem \FileSystemInterface ;
@@ -60,6 +62,8 @@ class AkeneoPimClientBuilder
6062 /** @var FileSystemInterface */
6163 protected $ fileSystem ;
6264
65+ protected bool $ cacheEnabled = false ;
66+
6367 /**
6468 * @param string $baseUri Base uri to request the API
6569 */
@@ -146,6 +150,28 @@ public function buildAuthenticatedByToken(string $clientId, string $secret, stri
146150 return $ this ->buildAuthenticatedClient ($ authentication );
147151 }
148152
153+ /**
154+ * Enable Caching
155+ * Disabled by default
156+ */
157+ public function enableCache (): self
158+ {
159+ $ this ->cacheEnabled = true ;
160+
161+ return $ this ;
162+ }
163+
164+ /**
165+ * Disable Caching
166+ * Disabled by default
167+ */
168+ public function disableCache (): self
169+ {
170+ $ this ->cacheEnabled = false ;
171+
172+ return $ this ;
173+ }
174+
149175 /**
150176 * @param Authentication $authentication
151177 *
@@ -155,26 +181,26 @@ protected function buildAuthenticatedClient(Authentication $authentication): Ake
155181 {
156182 [$ resourceClient , $ pageFactory , $ cursorFactory , $ fileSystem ] = $ this ->setUp ($ authentication );
157183
158- $ client = new AkeneoPimClient (
184+ $ resourceClientWithCache = !$ this ->cacheEnabled ? $ resourceClient : new CachedResourceClient ($ resourceClient , new Cache ());
185+
186+ return new AkeneoPimClient (
159187 $ authentication ,
160188 new ProductApi ($ resourceClient , $ pageFactory , $ cursorFactory ),
161- new CategoryApi ($ resourceClient , $ pageFactory , $ cursorFactory ),
162- new AttributeApi ($ resourceClient , $ pageFactory , $ cursorFactory ),
163- new AttributeOptionApi ($ resourceClient , $ pageFactory , $ cursorFactory ),
164- new AttributeGroupApi ($ resourceClient , $ pageFactory , $ cursorFactory ),
165- new FamilyApi ($ resourceClient , $ pageFactory , $ cursorFactory ),
189+ new CategoryApi ($ resourceClientWithCache , $ pageFactory , $ cursorFactory ),
190+ new AttributeApi ($ resourceClientWithCache , $ pageFactory , $ cursorFactory ),
191+ new AttributeOptionApi ($ resourceClientWithCache , $ pageFactory , $ cursorFactory ),
192+ new AttributeGroupApi ($ resourceClientWithCache , $ pageFactory , $ cursorFactory ),
193+ new FamilyApi ($ resourceClientWithCache , $ pageFactory , $ cursorFactory ),
166194 new ProductMediaFileApi ($ resourceClient , $ pageFactory , $ cursorFactory , $ fileSystem ),
167- new LocaleApi ($ resourceClient , $ pageFactory , $ cursorFactory ),
168- new ChannelApi ($ resourceClient , $ pageFactory , $ cursorFactory ),
169- new CurrencyApi ($ resourceClient , $ pageFactory , $ cursorFactory ),
170- new MeasureFamilyApi ($ resourceClient , $ pageFactory , $ cursorFactory ),
171- new MeasurementFamilyApi ($ resourceClient ),
172- new AssociationTypeApi ($ resourceClient , $ pageFactory , $ cursorFactory ),
173- new FamilyVariantApi ($ resourceClient , $ pageFactory , $ cursorFactory ),
195+ new LocaleApi ($ resourceClientWithCache , $ pageFactory , $ cursorFactory ),
196+ new ChannelApi ($ resourceClientWithCache , $ pageFactory , $ cursorFactory ),
197+ new CurrencyApi ($ resourceClientWithCache , $ pageFactory , $ cursorFactory ),
198+ new MeasureFamilyApi ($ resourceClientWithCache , $ pageFactory , $ cursorFactory ),
199+ new MeasurementFamilyApi ($ resourceClientWithCache ),
200+ new AssociationTypeApi ($ resourceClientWithCache , $ pageFactory , $ cursorFactory ),
201+ new FamilyVariantApi ($ resourceClientWithCache , $ pageFactory , $ cursorFactory ),
174202 new ProductModelApi ($ resourceClient , $ pageFactory , $ cursorFactory )
175203 );
176-
177- return $ client ;
178204 }
179205
180206 /**
0 commit comments