aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/ImportBundle/Import/PocketImport.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Wallabag/ImportBundle/Import/PocketImport.php')
-rw-r--r--src/Wallabag/ImportBundle/Import/PocketImport.php35
1 files changed, 27 insertions, 8 deletions
diff --git a/src/Wallabag/ImportBundle/Import/PocketImport.php b/src/Wallabag/ImportBundle/Import/PocketImport.php
index a6f905b1..b02894f0 100644
--- a/src/Wallabag/ImportBundle/Import/PocketImport.php
+++ b/src/Wallabag/ImportBundle/Import/PocketImport.php
@@ -2,6 +2,8 @@
2 2
3namespace Wallabag\ImportBundle\Import; 3namespace Wallabag\ImportBundle\Import;
4 4
5use OldSound\RabbitMqBundle\RabbitMq\Producer;
6use Psr\Log\LoggerInterface;
5use Psr\Log\NullLogger; 7use Psr\Log\NullLogger;
6use Doctrine\ORM\EntityManager; 8use Doctrine\ORM\EntityManager;
7use GuzzleHttp\Client; 9use GuzzleHttp\Client;
@@ -20,14 +22,18 @@ class PocketImport extends AbstractImport
20 private $importedEntries = 0; 22 private $importedEntries = 0;
21 private $markAsRead; 23 private $markAsRead;
22 protected $accessToken; 24 protected $accessToken;
25 private $producer;
26 private $rabbitMQ;
23 27
24 public function __construct(TokenStorageInterface $tokenStorage, EntityManager $em, ContentProxy $contentProxy, Config $craueConfig) 28 public function __construct(TokenStorageInterface $tokenStorage, EntityManager $em, ContentProxy $contentProxy, Config $craueConfig, $rabbitMQ, Producer $producer)
25 { 29 {
26 $this->user = $tokenStorage->getToken()->getUser(); 30 $this->user = $tokenStorage->getToken()->getUser();
27 $this->em = $em; 31 $this->em = $em;
28 $this->contentProxy = $contentProxy; 32 $this->contentProxy = $contentProxy;
29 $this->consumerKey = $craueConfig->get('pocket_consumer_key'); 33 $this->consumerKey = $craueConfig->get('pocket_consumer_key');
30 $this->logger = new NullLogger(); 34 $this->logger = new NullLogger();
35 $this->rabbitMQ = $rabbitMQ;
36 $this->producer = $producer;
31 } 37 }
32 38
33 /** 39 /**
@@ -197,7 +203,7 @@ class PocketImport extends AbstractImport
197 { 203 {
198 $i = 1; 204 $i = 1;
199 205
200 foreach ($entries as $pocketEntry) { 206 foreach ($entries as &$pocketEntry) {
201 $url = isset($pocketEntry['resolved_url']) && $pocketEntry['resolved_url'] != '' ? $pocketEntry['resolved_url'] : $pocketEntry['given_url']; 207 $url = isset($pocketEntry['resolved_url']) && $pocketEntry['resolved_url'] != '' ? $pocketEntry['resolved_url'] : $pocketEntry['given_url'];
202 208
203 $existingEntry = $this->em 209 $existingEntry = $this->em
@@ -210,12 +216,15 @@ class PocketImport extends AbstractImport
210 } 216 }
211 217
212 $entry = new Entry($this->user); 218 $entry = new Entry($this->user);
213 $entry = $this->fetchContent($entry, $url);
214 219
215 // jump to next entry in case of problem while getting content 220 if (!$this->rabbitMQ) {
216 if (false === $entry) { 221 $entry = $this->fetchContent($entry, $url);
217 ++$this->skippedEntries; 222
218 continue; 223 // jump to next entry in case of problem while getting content
224 if (false === $entry) {
225 ++$this->skippedEntries;
226 continue;
227 }
219 } 228 }
220 229
221 // 0, 1, 2 - 1 if the item is archived - 2 if the item should be deleted 230 // 0, 1, 2 - 1 if the item is archived - 2 if the item should be deleted
@@ -236,6 +245,7 @@ class PocketImport extends AbstractImport
236 } 245 }
237 246
238 $entry->setTitle($title); 247 $entry->setTitle($title);
248 $entry->setUrl($url);
239 249
240 // 0, 1, or 2 - 1 if the item has images in it - 2 if the item is an image 250 // 0, 1, or 2 - 1 if the item has images in it - 2 if the item is an image
241 if (isset($pocketEntry['has_image']) && $pocketEntry['has_image'] > 0 && isset($pocketEntry['images'][1])) { 251 if (isset($pocketEntry['has_image']) && $pocketEntry['has_image'] > 0 && isset($pocketEntry['images'][1])) {
@@ -249,6 +259,9 @@ class PocketImport extends AbstractImport
249 ); 259 );
250 } 260 }
251 261
262 $pocketEntry['url'] = $url;
263 $pocketEntry['userId'] = $this->user->getId();
264
252 $this->em->persist($entry); 265 $this->em->persist($entry);
253 ++$this->importedEntries; 266 ++$this->importedEntries;
254 267
@@ -256,10 +269,16 @@ class PocketImport extends AbstractImport
256 if (($i % 20) === 0) { 269 if (($i % 20) === 0) {
257 $this->em->flush(); 270 $this->em->flush();
258 } 271 }
272
259 ++$i; 273 ++$i;
260 } 274 }
261 275
262 $this->em->flush(); 276 $this->em->flush();
263 $this->em->clear(); 277
278 if ($this->rabbitMQ) {
279 foreach ($entries as $entry) {
280 $this->producer->publish(serialize($entry));
281 }
282 }
264 } 283 }
265} 284}