aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/ImportBundle
diff options
context:
space:
mode:
authorJeremy Benoist <jeremy.benoist@gmail.com>2016-09-17 07:40:56 +0200
committerJeremy Benoist <jeremy.benoist@gmail.com>2016-09-17 07:40:56 +0200
commit59b97fae996d8307b9d957d210d46200f6d206bf (patch)
tree9481859d10fafed91067ac7736480e91cd6eb4bb /src/Wallabag/ImportBundle
parentfbb319f064e6336a3b44bda12cdc51c93c51f379 (diff)
downloadwallabag-59b97fae996d8307b9d957d210d46200f6d206bf.tar.gz
wallabag-59b97fae996d8307b9d957d210d46200f6d206bf.tar.zst
wallabag-59b97fae996d8307b9d957d210d46200f6d206bf.zip
Avoid losing entry when fetching fail
Instead of just say “Failed to save entry” we’ll save the entry at all cost and try to fetch content. If fetching content failed, the entry will still be saved at least, but without content.
Diffstat (limited to 'src/Wallabag/ImportBundle')
-rw-r--r--src/Wallabag/ImportBundle/Import/AbstractImport.php6
-rw-r--r--src/Wallabag/ImportBundle/Import/PocketImport.php19
-rw-r--r--src/Wallabag/ImportBundle/Import/ReadabilityImport.php16
-rw-r--r--src/Wallabag/ImportBundle/Import/WallabagImport.php16
4 files changed, 18 insertions, 39 deletions
diff --git a/src/Wallabag/ImportBundle/Import/AbstractImport.php b/src/Wallabag/ImportBundle/Import/AbstractImport.php
index 2af0e69b..a1a14576 100644
--- a/src/Wallabag/ImportBundle/Import/AbstractImport.php
+++ b/src/Wallabag/ImportBundle/Import/AbstractImport.php
@@ -79,20 +79,20 @@ abstract class AbstractImport implements ImportInterface
79 79
80 /** 80 /**
81 * Fetch content from the ContentProxy (using graby). 81 * Fetch content from the ContentProxy (using graby).
82 * If it fails return false instead of the updated entry. 82 * If it fails return the given entry to be saved in all case (to avoid user to loose the content).
83 * 83 *
84 * @param Entry $entry Entry to update 84 * @param Entry $entry Entry to update
85 * @param string $url Url to grab content for 85 * @param string $url Url to grab content for
86 * @param array $content An array with AT LEAST keys title, html, url, language & content_type to skip the fetchContent from the url 86 * @param array $content An array with AT LEAST keys title, html, url, language & content_type to skip the fetchContent from the url
87 * 87 *
88 * @return Entry|false 88 * @return Entry
89 */ 89 */
90 protected function fetchContent(Entry $entry, $url, array $content = []) 90 protected function fetchContent(Entry $entry, $url, array $content = [])
91 { 91 {
92 try { 92 try {
93 return $this->contentProxy->updateEntry($entry, $url, $content); 93 return $this->contentProxy->updateEntry($entry, $url, $content);
94 } catch (\Exception $e) { 94 } catch (\Exception $e) {
95 return false; 95 return $entry;
96 } 96 }
97 } 97 }
98 98
diff --git a/src/Wallabag/ImportBundle/Import/PocketImport.php b/src/Wallabag/ImportBundle/Import/PocketImport.php
index 1bf22d68..e00eb44b 100644
--- a/src/Wallabag/ImportBundle/Import/PocketImport.php
+++ b/src/Wallabag/ImportBundle/Import/PocketImport.php
@@ -199,24 +199,16 @@ class PocketImport extends AbstractImport
199 } 199 }
200 200
201 $entry = new Entry($this->user); 201 $entry = new Entry($this->user);
202 $entry = $this->fetchContent($entry, $url); 202 $entry->setUrl($url);
203
204 // jump to next entry in case of problem while getting content
205 if (false === $entry) {
206 ++$this->skippedEntries;
207 203
208 return; 204 // update entry with content (in case fetching failed, the given entry will be return)
209 } 205 $entry = $this->fetchContent($entry, $url);
210 206
211 // 0, 1, 2 - 1 if the item is archived - 2 if the item should be deleted 207 // 0, 1, 2 - 1 if the item is archived - 2 if the item should be deleted
212 if ($importedEntry['status'] == 1 || $this->markAsRead) { 208 $entry->setArchived($importedEntry['status'] == 1 || $this->markAsRead);
213 $entry->setArchived(true);
214 }
215 209
216 // 0 or 1 - 1 If the item is starred 210 // 0 or 1 - 1 If the item is starred
217 if ($importedEntry['favorite'] == 1) { 211 $entry->setStarred($importedEntry['favorite'] == 1);
218 $entry->setStarred(true);
219 }
220 212
221 $title = 'Untitled'; 213 $title = 'Untitled';
222 if (isset($importedEntry['resolved_title']) && $importedEntry['resolved_title'] != '') { 214 if (isset($importedEntry['resolved_title']) && $importedEntry['resolved_title'] != '') {
@@ -226,7 +218,6 @@ class PocketImport extends AbstractImport
226 } 218 }
227 219
228 $entry->setTitle($title); 220 $entry->setTitle($title);
229 $entry->setUrl($url);
230 221
231 // 0, 1, or 2 - 1 if the item has images in it - 2 if the item is an image 222 // 0, 1, or 2 - 1 if the item has images in it - 2 if the item is an image
232 if (isset($importedEntry['has_image']) && $importedEntry['has_image'] > 0 && isset($importedEntry['images'][1])) { 223 if (isset($importedEntry['has_image']) && $importedEntry['has_image'] > 0 && isset($importedEntry['images'][1])) {
diff --git a/src/Wallabag/ImportBundle/Import/ReadabilityImport.php b/src/Wallabag/ImportBundle/Import/ReadabilityImport.php
index b852f8f0..fa2b7053 100644
--- a/src/Wallabag/ImportBundle/Import/ReadabilityImport.php
+++ b/src/Wallabag/ImportBundle/Import/ReadabilityImport.php
@@ -103,18 +103,12 @@ class ReadabilityImport extends AbstractImport
103 'created_at' => $importedEntry['date_added'], 103 'created_at' => $importedEntry['date_added'],
104 ]; 104 ];
105 105
106 $entry = $this->fetchContent( 106 $entry = new Entry($this->user);
107 new Entry($this->user), 107 $entry->setUrl($data['url']);
108 $data['url'], 108 $entry->setTitle($data['title']);
109 $data
110 );
111
112 // jump to next entry in case of problem while getting content
113 if (false === $entry) {
114 ++$this->skippedEntries;
115 109
116 return; 110 // update entry with content (in case fetching failed, the given entry will be return)
117 } 111 $entry = $this->fetchContent($entry, $data['url'], $data);
118 112
119 $entry->setArchived($data['is_archived']); 113 $entry->setArchived($data['is_archived']);
120 $entry->setStarred($data['is_starred']); 114 $entry->setStarred($data['is_starred']);
diff --git a/src/Wallabag/ImportBundle/Import/WallabagImport.php b/src/Wallabag/ImportBundle/Import/WallabagImport.php
index 969a6a04..043bb0a2 100644
--- a/src/Wallabag/ImportBundle/Import/WallabagImport.php
+++ b/src/Wallabag/ImportBundle/Import/WallabagImport.php
@@ -101,18 +101,12 @@ abstract class WallabagImport extends AbstractImport
101 101
102 $data = $this->prepareEntry($importedEntry); 102 $data = $this->prepareEntry($importedEntry);
103 103
104 $entry = $this->fetchContent( 104 $entry = new Entry($this->user);
105 new Entry($this->user), 105 $entry->setUrl($data['url']);
106 $importedEntry['url'], 106 $entry->setTitle($data['title']);
107 $data
108 );
109
110 // jump to next entry in case of problem while getting content
111 if (false === $entry) {
112 ++$this->skippedEntries;
113 107
114 return; 108 // update entry with content (in case fetching failed, the given entry will be return)
115 } 109 $entry = $this->fetchContent($entry, $data['url'], $data);
116 110
117 if (array_key_exists('tags', $data)) { 111 if (array_key_exists('tags', $data)) {
118 $this->contentProxy->assignTagsToEntry( 112 $this->contentProxy->assignTagsToEntry(