private function serializeAuthBackend(\JsonSerializable $backend) { $data = $backend->jsonSerialize(); $result = ['name' => $data['name'], 'identifier' => $data['identifier'], 'configuration' => array_map(function (DefinitionParameter $parameter) { return $parameter->getTypeName(); }, $data['configuration'])]; if ($backend instanceof Backend) { $result['storage_class'] = $backend->getStorageClass(); $authBackends = $this->backendService->getAuthMechanismsByScheme(array_keys($backend->getAuthSchemes())); $result['supported_authentication_backends'] = array_keys($authBackends); } return $result; }
/** * Retrieve the synchorinized property with return data by jsonSerialize * * @param JsonSerializable $classInstance * @param array $data * @return array */ public function getSynchronizedProperty(\JsonSerializable $classInstance, array $data) { $keys = array_keys($classInstance->jsonSerialize()); $sync = array(); // Check if all key are there foreach ($keys as $key) { $camelCaseKey = $this->toCamelCase($key); if (array_key_exists($key, $data) === false) { throw new ValidationException(sprintf('Key "%s" does not exist in "%s"', $key, json_encode($data))); } elseif (property_exists($classInstance, $camelCaseKey) === true) { $sync[] = $camelCaseKey; } } return $sync; }
private function serializeAuthBackend(\JsonSerializable $backend) { $data = $backend->jsonSerialize(); $result = ['name' => $data['name'], 'identifier' => $data['identifier'], 'configuration' => $this->formatConfiguration($data['configuration'])]; if ($backend instanceof Backend) { $result['storage_class'] = $backend->getStorageClass(); $authBackends = $this->backendService->getAuthMechanismsByScheme(array_keys($backend->getAuthSchemes())); $result['supported_authentication_backends'] = array_keys($authBackends); $authConfig = array_map(function (AuthMechanism $auth) { return $this->serializeAuthBackend($auth)['configuration']; }, $authBackends); $result['authentication_configuration'] = array_combine(array_keys($authBackends), $authConfig); } return $result; }
/** * @param \JsonSerializable $classInstance * @param array $data * @throws SynchronisationException */ public function exec(\JsonSerializable $classInstance, $data) { if ($this->strict === false) { return; } $classKeys = array_keys($classInstance->jsonSerialize()); foreach ($classKeys as $key) { $camelCaseKey = $this->toCamelCase($key); if (property_exists($classInstance, $camelCaseKey) === false) { throw new SynchronisationException(sprintf('jsonSerialize return a property "%s" that does not exist on "%s"', $key, get_class($classInstance))); } } if (($diff = array_diff(array_keys($data), $classKeys)) !== array()) { throw new SynchronisationException(sprintf('Some keys does not exist in given data "%s"', implode(',', $diff))); } }
/** * Returns the json answer of the web server. * * failure: * { * status: "failure", * message: "unknown api key" * } * * success: * { * status: "success" * } */ private function getJsonResponse($endpoint, \JsonSerializable $object) { $objectJson = json_encode($object->jsonSerialize()); try { $response = $this->httpClient->request('POST', $endpoint, ['body' => $objectJson]); } catch (\Exception $e) { $ex = new KoalamonException('Error sending event to Koalamon server.'); $ex->setPayload($objectJson); $ex->setUrl($endpoint); throw $ex; } $responseStatus = json_decode($response->getBody()); return $responseStatus; }
/** * @param \JsonSerializable|array $request * @return array */ protected function serializeRequest($request) { return $request instanceof \JsonSerializable ? $request->jsonSerialize() : $request; }
/** * Create array-data from an object. * * @param \JsonSerializable $object * @return mixed */ private function createArrayData(\JsonSerializable $object) { $arrayData = $object->jsonSerialize(); $arrayData['json_resolve_class'] = $this->getClassForObject($object); // recursively resolve JsonResolvableInterfaces foreach ($arrayData as $key => $value) { $arrayData[$key] = $this->createPropertyData($value); } return $arrayData; }
/** * @param \JsonSerializable $entity * * @return bool */ public function remove(\JsonSerializable $entity) { $class = new \ReflectionClass($entity); if (!$entity->getId()) { return false; } $entityModel = $this->getEntities()[$class->getShortName()]; $params = ['type' => $entityModel->type, 'index' => $entityModel->index, 'id' => $entity->getId()]; $this->getClient()->delete($params); }
public function it_sends_any_JsonSerializable_that_returns_an_array($client, \JsonSerializable $message, OperationCommand $command, MessageResponse $response) { $message->jsonSerialize()->willReturn([]); $client->getCommand('Send', [])->willReturn($command); $this->send($message)->shouldReturn($response); }