/** * @param RequestForm $model * @return ResponseRecord */ protected function send(RequestForm $model) { $this->module->trigger(Module::EVENT_ON_REQUEST, new RequestEvent(['form' => $model])); /** @var \yii\httpclient\Client $client */ $client = Yii::createObject($this->module->clientConfig); $client->baseUrl = $this->module->baseUrl; $begin = microtime(true); $response = $client->createRequest()->setMethod($model->method)->setUrl($model->getUri())->setData($model->getBodyParams())->setHeaders($model->getHeaders())->send(); $duration = microtime(true) - $begin; $record = new ResponseRecord(); $record->status = $response->getStatusCode(); $record->duration = $duration; foreach ($response->getHeaders() as $name => $values) { $name = str_replace(' ', '-', ucwords(str_replace('-', ' ', $name))); $record->headers[$name] = $values; } $record->content = $response->getContent(); $this->module->trigger(Module::EVENT_ON_RESPONSE, new ResponseEvent(['form' => $model, 'record' => $record])); return $record; }