Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
 /**
  * @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)));
     }
 }
Ejemplo n.º 5
0
 /**
  * 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;
 }
Ejemplo n.º 6
0
 /**
  * @param   \JsonSerializable|array     $request
  * @return  array
  */
 protected function serializeRequest($request)
 {
     return $request instanceof \JsonSerializable ? $request->jsonSerialize() : $request;
 }
Ejemplo n.º 7
0
 /**
  * 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;
 }
Ejemplo n.º 8
0
 /**
  * @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);
 }
Ejemplo n.º 9
0
 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);
 }