mirror of
https://github.com/wallabag/wallabag.git
synced 2025-09-15 18:57:05 +00:00
Allow other fields to be send using API
Entry API can now have these new fields: - content - language - preview_picture - published_at Re-use the ContentProxy to be able to do the same using the web UI (in the future). htmLawed is used to clean stuff from content, I hope it’ll be enough to avoid security breach. Lower content validation when we want to update an entry with content already defined. Before, language & content_type were required. If there weren’t provided, we re-fetched the content using graby. I think these fields aren’t required for an entry to be created. So I removed them. Which means some import from the v1 export won’t be re-fetched since they provide content, url & title. Also, remove liberation link from Readability import to avoid overlaping import (from wallabag v1, which had the same link)
This commit is contained in:
parent
4423b88c5b
commit
e668a8124c
7 changed files with 74 additions and 43 deletions
|
@ -280,6 +280,10 @@ class EntryRestController extends WallabagRestController
|
|||
* {"name"="tags", "dataType"="string", "required"=false, "format"="tag1,tag2,tag3", "description"="a comma-separated list of tags."},
|
||||
* {"name"="starred", "dataType"="integer", "required"=false, "format"="1 or 0", "description"="entry already starred"},
|
||||
* {"name"="archive", "dataType"="integer", "required"=false, "format"="1 or 0", "description"="entry already archived"},
|
||||
* {"name"="content", "dataType"="string", "required"=false, "description"="Content of the entry"},
|
||||
* {"name"="language", "dataType"="string", "required"=false, "description"="Language of the entry"},
|
||||
* {"name"="preview_picture", "dataType"="string", "required"=false, "description"="Preview picture of the entry"},
|
||||
* {"name"="published_at", "dataType"="datetime", "format"="YYYY-MM-DDTHH:II:SS+TZ", "required"=false, "description"="Published date of the entry"},
|
||||
* }
|
||||
* )
|
||||
*
|
||||
|
@ -293,30 +297,42 @@ class EntryRestController extends WallabagRestController
|
|||
$title = $request->request->get('title');
|
||||
$isArchived = $request->request->get('archive');
|
||||
$isStarred = $request->request->get('starred');
|
||||
$content = $request->request->get('content');
|
||||
$language = $request->request->get('language');
|
||||
$picture = $request->request->get('preview_picture');
|
||||
$publishedAt = $request->request->get('published_at');
|
||||
|
||||
$entry = $this->get('wallabag_core.entry_repository')->findByUrlAndUserId($url, $this->getUser()->getId());
|
||||
|
||||
if (false === $entry) {
|
||||
$entry = new Entry($this->getUser());
|
||||
try {
|
||||
$entry = $this->get('wallabag_core.content_proxy')->updateEntry(
|
||||
$entry,
|
||||
$url
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
$this->get('logger')->error('Error while saving an entry', [
|
||||
'exception' => $e,
|
||||
'entry' => $entry,
|
||||
]);
|
||||
$entry->setUrl($url);
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_null($title)) {
|
||||
$entry->setTitle($title);
|
||||
try {
|
||||
$entry = $this->get('wallabag_core.content_proxy')->updateEntry(
|
||||
$entry,
|
||||
$url,
|
||||
[
|
||||
'title' => $title,
|
||||
'html' => $content,
|
||||
'url' => $url,
|
||||
'language' => $language,
|
||||
'date' => $publishedAt,
|
||||
// faking the preview picture
|
||||
'open_graph' => [
|
||||
'og_image' => $picture,
|
||||
],
|
||||
]
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
$this->get('logger')->error('Error while saving an entry', [
|
||||
'exception' => $e,
|
||||
'entry' => $entry,
|
||||
]);
|
||||
$entry->setUrl($url);
|
||||
}
|
||||
|
||||
$tags = $request->request->get('tags', '');
|
||||
$tags = $request->request->get('tags', []);
|
||||
if (!empty($tags)) {
|
||||
$this->get('wallabag_core.tags_assigner')->assignTagsToEntry($entry, $tags);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue