/** * @param array $registrationIds * @param $collapseKey * @param array $data * @param int $ttl * @return array */ public function sendMessage(array $registrationIds, $collapseKey, array $data = [], $ttl = 604800) { $result = ['success' => 0, 'failure' => 0]; $this->registrationIds = $registrationIds; $this->setScope(ScopesEnum::GOOGLE_CLOUD_MESSAGING); $request = new Model\Request($registrationIds, $collapseKey, $data, $ttl); $request->setDryRun($this->isDebug); $options = ['headers' => ['Content-Type' => 'application/json', 'Authorization' => 'key=' . $this->authorizationKey], 'body' => json_encode($request->toArray())]; try { $response = $this->post(ScopesEnum::GOOGLE_CLOUD_MESSAGING, $options); $result = $this->handleResponse($response, $request); } catch (ClientException $e) { $response = $e->getResponse(); $request = $e->getRequest(); $context = []; $context['request']['body'] = $request->getBody(); $context['response'] = $response->json(); $this->callback(EventsEnum::ON_CLIENT_EXCEPTION, [$e, $context]); } return $result; }
/** * @param Request $request * @return array */ private function prepareBaseContext(Request $request) { $context = []; $data = $request->getData(); $context['data'] = var_export($data, true); foreach (['hostUid', 'login'] as $field) { if (isset($data[$field])) { $context[$field] = $data[$field]; } } return $context; }