/** * Handles the requests and returns the json for the response body * @param Request $request * @param Repository $repository * @param string $action * * @return string * @throws InvalidArgumentException */ public function handleRequest(Request $request, Repository $repository, $action) { $commitSize = $this->manager->getBulkCommitSize(); $documents = $this->requestSerializer->deserializeRequest($request); switch ($action) { case 'create': return $this->create($documents, $repository, $commitSize); break; case 'update': return $this->update($documents, $repository, $commitSize); break; case 'delete': return $this->delete($documents, $repository, $commitSize); break; default: throw new InvalidArgumentException('handleRequest method can only handle `create`, `update` and `delete` actions.'); } }