diff options
author | ArthurHoaro <arthur@hoa.ro> | 2020-10-13 12:26:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-13 12:26:01 +0200 |
commit | 543b16b4f4bbde4e9857490e2175e44b4d941eb3 (patch) | |
tree | ae73131d19ceccf2514f8fa145c9a612c638cdfa /application | |
parent | 8f269b49d7063af5a43021c8775b02d17205a7b5 (diff) | |
parent | b06fc28aa32f477e1785cd998385fdb490bc5ebf (diff) | |
download | Shaarli-543b16b4f4bbde4e9857490e2175e44b4d941eb3.tar.gz Shaarli-543b16b4f4bbde4e9857490e2175e44b4d941eb3.tar.zst Shaarli-543b16b4f4bbde4e9857490e2175e44b4d941eb3.zip |
Merge pull request #1525 from ArthurHoaro/feature/rest-api-bookmark-dates
REST API: allow override of creation and update dates
Diffstat (limited to 'application')
-rw-r--r-- | application/api/ApiUtils.php | 11 | ||||
-rw-r--r-- | application/api/controllers/ApiController.php | 3 | ||||
-rw-r--r-- | application/api/controllers/Links.php | 4 |
3 files changed, 14 insertions, 4 deletions
diff --git a/application/api/ApiUtils.php b/application/api/ApiUtils.php index faebb8f5..4a6326f0 100644 --- a/application/api/ApiUtils.php +++ b/application/api/ApiUtils.php | |||
@@ -94,7 +94,7 @@ class ApiUtils | |||
94 | * | 94 | * |
95 | * @return Bookmark instance. | 95 | * @return Bookmark instance. |
96 | */ | 96 | */ |
97 | public static function buildLinkFromRequest($input, $defaultPrivate) | 97 | public static function buildBookmarkFromRequest($input, $defaultPrivate): Bookmark |
98 | { | 98 | { |
99 | $bookmark = new Bookmark(); | 99 | $bookmark = new Bookmark(); |
100 | $url = ! empty($input['url']) ? cleanup_url($input['url']) : ''; | 100 | $url = ! empty($input['url']) ? cleanup_url($input['url']) : ''; |
@@ -110,6 +110,15 @@ class ApiUtils | |||
110 | $bookmark->setTags(! empty($input['tags']) ? $input['tags'] : []); | 110 | $bookmark->setTags(! empty($input['tags']) ? $input['tags'] : []); |
111 | $bookmark->setPrivate($private); | 111 | $bookmark->setPrivate($private); |
112 | 112 | ||
113 | $created = \DateTime::createFromFormat(\DateTime::ATOM, $input['created'] ?? ''); | ||
114 | if ($created instanceof \DateTimeInterface) { | ||
115 | $bookmark->setCreated($created); | ||
116 | } | ||
117 | $updated = \DateTime::createFromFormat(\DateTime::ATOM, $input['updated'] ?? ''); | ||
118 | if ($updated instanceof \DateTimeInterface) { | ||
119 | $bookmark->setUpdated($updated); | ||
120 | } | ||
121 | |||
113 | return $bookmark; | 122 | return $bookmark; |
114 | } | 123 | } |
115 | 124 | ||
diff --git a/application/api/controllers/ApiController.php b/application/api/controllers/ApiController.php index c4b3d0c3..88a845eb 100644 --- a/application/api/controllers/ApiController.php +++ b/application/api/controllers/ApiController.php | |||
@@ -4,6 +4,7 @@ namespace Shaarli\Api\Controllers; | |||
4 | 4 | ||
5 | use Shaarli\Bookmark\BookmarkServiceInterface; | 5 | use Shaarli\Bookmark\BookmarkServiceInterface; |
6 | use Shaarli\Config\ConfigManager; | 6 | use Shaarli\Config\ConfigManager; |
7 | use Shaarli\History; | ||
7 | use Slim\Container; | 8 | use Slim\Container; |
8 | 9 | ||
9 | /** | 10 | /** |
@@ -31,7 +32,7 @@ abstract class ApiController | |||
31 | protected $bookmarkService; | 32 | protected $bookmarkService; |
32 | 33 | ||
33 | /** | 34 | /** |
34 | * @var HistoryController | 35 | * @var History |
35 | */ | 36 | */ |
36 | protected $history; | 37 | protected $history; |
37 | 38 | ||
diff --git a/application/api/controllers/Links.php b/application/api/controllers/Links.php index 29247950..778097fd 100644 --- a/application/api/controllers/Links.php +++ b/application/api/controllers/Links.php | |||
@@ -116,7 +116,7 @@ class Links extends ApiController | |||
116 | public function postLink($request, $response) | 116 | public function postLink($request, $response) |
117 | { | 117 | { |
118 | $data = $request->getParsedBody(); | 118 | $data = $request->getParsedBody(); |
119 | $bookmark = ApiUtils::buildLinkFromRequest($data, $this->conf->get('privacy.default_private_links')); | 119 | $bookmark = ApiUtils::buildBookmarkFromRequest($data, $this->conf->get('privacy.default_private_links')); |
120 | // duplicate by URL, return 409 Conflict | 120 | // duplicate by URL, return 409 Conflict |
121 | if (! empty($bookmark->getUrl()) | 121 | if (! empty($bookmark->getUrl()) |
122 | && ! empty($dup = $this->bookmarkService->findByUrl($bookmark->getUrl())) | 122 | && ! empty($dup = $this->bookmarkService->findByUrl($bookmark->getUrl())) |
@@ -155,7 +155,7 @@ class Links extends ApiController | |||
155 | $index = index_url($this->ci['environment']); | 155 | $index = index_url($this->ci['environment']); |
156 | $data = $request->getParsedBody(); | 156 | $data = $request->getParsedBody(); |
157 | 157 | ||
158 | $requestBookmark = ApiUtils::buildLinkFromRequest($data, $this->conf->get('privacy.default_private_links')); | 158 | $requestBookmark = ApiUtils::buildBookmarkFromRequest($data, $this->conf->get('privacy.default_private_links')); |
159 | // duplicate URL on a different link, return 409 Conflict | 159 | // duplicate URL on a different link, return 409 Conflict |
160 | if (! empty($requestBookmark->getUrl()) | 160 | if (! empty($requestBookmark->getUrl()) |
161 | && ! empty($dup = $this->bookmarkService->findByUrl($requestBookmark->getUrl())) | 161 | && ! empty($dup = $this->bookmarkService->findByUrl($requestBookmark->getUrl())) |