/** * Create a new short link * @param Request $request request object * @return json Response */ public function create(Request $request) { if (empty($request) || empty(trim($request->url))) { $result = $this->getResult(self::ERROR, self::BAD_REQUEST, null, 'Invalid parameter sent'); return response()->json($result, self::BAD_REQUEST); } if (!filter_var($request->url, FILTER_VALIDATE_URL)) { $result = $this->getResult(self::ERROR, self::BAD_REQUEST, null, 'Please provide a valid URL'); return response()->json($result, self::BAD_REQUEST); } $url = $request->url; $link = Links::whereUrl($url)->first(); if (!$link) { $code = ""; $link = Links::create(['url' => $request->url, 'code' => $code]); $code = base_convert($link->id + rand(10000, 100000), 10, 36); $link = Links::whereUrl($url)->update(['code' => $code]); } $code = isset($code) ? $code : $link->code; $data = ['link' => ['hash' => $code, 'url' => env('BASE_URL') . "/" . $code, 'long_url' => $url]]; $result = $this->getResult(self::SUCCESS, self::CREATED, $data); return response()->json($result, self::CREATED); }