| Total Complexity | 4 |
| Total Lines | 48 |
| Duplicated Lines | 0 % |
| Coverage | 93.33% |
| Changes | 0 | ||
| 1 | <?php |
||
| 11 | class DataConverter implements DataConverterInterface |
||
| 12 | { |
||
| 13 | /** |
||
| 14 | * @param \Xervice\DataProvider\Business\Model\DataProvider\DataProviderInterface $dataProvider |
||
| 15 | * |
||
| 16 | * @return string |
||
| 17 | */ |
||
| 18 | 6 | public function convertTo(DataProviderInterface $dataProvider): string |
|
| 19 | { |
||
| 20 | 6 | return json_encode( |
|
| 21 | [ |
||
| 22 | 6 | 'class' => \get_class($dataProvider), |
|
| 23 | 6 | 'data' => $dataProvider->toArray() |
|
| 24 | ] |
||
| 25 | ); |
||
| 26 | } |
||
| 27 | |||
| 28 | /** |
||
| 29 | * @param string $data |
||
| 30 | * |
||
| 31 | * @return \Xervice\DataProvider\Business\Model\DataProvider\DataProviderInterface |
||
| 32 | * @throws \Xervice\Redis\Business\Exception\ConverterException |
||
| 33 | */ |
||
| 34 | 2 | public function convertFrom(string $data): DataProviderInterface |
|
| 35 | { |
||
| 36 | 2 | $data = json_decode($data, true); |
|
| 37 | |||
| 38 | 2 | if (!isset($data['data'], $data['class'])) { |
|
| 39 | throw new ConverterException('Data have wrong format to convert (No class or data field)'); |
||
| 40 | } |
||
| 41 | |||
| 42 | 2 | $provider = $data['class']; |
|
| 43 | |||
| 44 | 2 | $provider = $this->createDataProvider($provider); |
|
| 45 | 2 | $provider->fromArray($data['data']); |
|
| 46 | |||
| 47 | 2 | return $provider; |
|
| 48 | } |
||
| 49 | |||
| 50 | /** |
||
| 51 | * @param string $provider |
||
| 52 | * |
||
| 53 | * @return \Xervice\DataProvider\Business\Model\DataProvider\DataProviderInterface |
||
| 54 | */ |
||
| 55 | 2 | private function createDataProvider(string $provider): DataProviderInterface |
|
| 59 | } |
||
| 60 | } |
||
| 61 |