username = $username; $this->password = $password; } public function endpoint(string $endpoint) { $this->endpoint = $endpoint; return $this; } public function start() { $data = [ 'email' => $this->username, 'password' => $this->password, ]; $body = Body::json($data); try { $response = Request::post($this->getUrl(), $this->getHeaders(), $body); $this->isSuccessful = true; $this->token = $response->body->data[0]->token->token; if (in_array($response->code, [401, 422, 500])) { $this->isSuccessful = false; $this->processErrors($response->body); } } catch (\Exception $e) { info($e->getMessage()); $this->isSuccessful = false; $this->errors = [trans('texts.migration_went_wrong')]; } return $this; } public function isSuccessful() { return $this->isSuccessful; } public function getAccountToken() { if ($this->isSuccessful) { return $this->token; } return null; } public function getErrors() { return $this->errors; } private function getHeaders() { return [ 'X-Requested-With' => 'XMLHttpRequest', 'Content-Type' => 'application/json', ]; } private function getUrl() { return $this->endpoint . $this->uri; } private function processErrors($errors) { $array = (array) $errors; $this->errors = $array; } }