/** * Creates a new lease and returns some basic details about it. * Request might also contain optional $_GET['duration'] parameter, otherwise a default value will be used. * * @param $string * @param Request $request * @return mixed */ public function lease($string, Request $request) { $picker = $this->pickResource($string); if ($picker['error']) { return $this->respondWithError($picker['error']); } $resource = Resource::find($picker['resourceId']); $leaseParams = Lease::stub($resource->id, null, $request->duration); $lease = Lease::create($leaseParams); $response = ['leased_at' => Carbon::now(), 'links' => ['rel' => 'details', 'uri' => '/leases/' . $lease->uuid]]; return $this->respond($response, 201); }