authorize('viewAny', Bookmark::class); return new BookmarkCollection(request()->user()->bookmarks); } public function store(BookmarkRequest $request) { $this->authorize('create', Bookmark::class); $metas = $this->getMeta($request->url); $request['name'] = (empty($request->name)) ? $metas['title'] : $request->name; $request['favicon'] = $metas['favicon']; $bookmark = request()->user()->bookmarks()->create($request->all()); return (new BookmarkResource($bookmark)) ->response() ->setStatusCode(201); } public function show(Bookmark $bookmark) { $this->authorize('view', $bookmark); return new BookmarkResource($bookmark); } public function update(BookmarkRequest $request, Bookmark $bookmark) { $this->authorize('update', $bookmark); $bookmark->update($request->all()); return (new BookmarkResource($bookmark)) ->response() ->setStatusCode(200); } public function destroy(Bookmark $bookmark) { $this->authorize('delete', $bookmark); $bookmark->delete(); return response([], 204); } private function getMeta($url) { $metas = []; $client = new \GuzzleHttp\Client(); $promise = $client->requestAsync('GET', $url); $response = $promise->wait(); $page = $response->getBody()->getContents(); preg_match("/\