/** * @param RestClient $client */ public function authenticateClient(RestClient $client) { $subscribers = [['subscriber' => new UrlSignature(), 'definitions' => $this->query], ['subscriber' => new HeaderSignature(), 'definitions' => $this->headers]]; $authorization = ['clientId' => $this->clientId, 'nonce' => substr(sha1(uniqid(microtime(), true)), 0, 16), 'timestamp' => time()]; if (!is_scalar($this->data)) { $authorization = array_merge($authorization, Utils::flattenArray(Utils::objectToArray($this->data), 'data.')); } else { $authorization['data'] = $this->data; } foreach ($subscribers as $subscriber) { if (empty($subscriber['definitions'])) { continue; } $this->addGenerator($subscriber['subscriber'], $subscriber['definitions'], $authorization); $client->getClient()->getEmitter()->attach($subscriber['subscriber']); } }