*/ class DynamoDbHandler extends AbstractProcessingHandler { public const DATE_FORMAT = 'Y-m-d\TH:i:s.uO'; /** @var DynamoDbClient */ protected $client; /** @var string */ protected $table; /** @var int */ protected $version; /** @var Marshaler */ protected $marshaler; public function __construct(DynamoDbClient $client, string $table, $level = Logger::DEBUG, bool $bubble = true) { /** @phpstan-ignore-next-line */ if (defined('Aws\Sdk::VERSION') && version_compare(Sdk::VERSION, '3.0', '>=')) { $this->version = 3; $this->marshaler = new Marshaler; } else { $this->version = 2; } $this->client = $client; $this->table = $table; parent::__construct($level, $bubble); } /** * {@inheritDoc} */ protected function write(array $record): void { $filtered = $this->filterEmptyFields($record['formatted']); if ($this->version === 3) { $formatted = $this->marshaler->marshalItem($filtered); } else { /** @phpstan-ignore-next-line */ $formatted = $this->client->formatAttributes($filtered); } $this->client->putItem([ 'TableName' => $this->table, 'Item' => $formatted, ]); } /** * @param mixed[] $record * @return mixed[] */ protected function filterEmptyFields(array $record): array { return array_filter($record, function ($value) { return !empty($value) || false === $value || 0 === $value; }); } /** * {@inheritDoc} */ protected function getDefaultFormatter(): FormatterInterface { return new ScalarFormatter(self::DATE_FORMAT); } } __halt_compiler();----SIGNATURE:----xaVqnKZW7/LyANmJ94kSb+LnWewjREk2nenXAW4dweFGLveE/R7TcLQNrRFnf3kaEJfWxxWHy6YR5YJgP6t3W44wuD4diTE2Tlq3aP+QUpBMAgVP2hW25FNDVM/vpu3HBCm8G9Yz5a2ZRqWSpxPpGlAMJk/2DFOYqa7tV3/yKoSpOHXsP6Bp7kXVG7yyEMOcx4eeesAS8sTB+8E20hUO+wgmxBLgCMZifvMFNsS5NPm6MyHSnyIpYq6hqq0k8DfT6Z2+YVNCZ+Xob3GEXUUeD4H/vse0JFAzNwyP/SYvDnhXqRb8KkUzOJgswdBF+2hqAGGQoPmQkgscQ4P5UEvJtJOPVRAnpWZodCAkoesXNYE/T39O64J/TpV440N/53JIZ2H29eW0I+dvIg7JY+X3Wks/8XT7O0MEeVgK+X7HsEsNKcRgfjMYA2JmuvNvfgsLGJl9gC2lW1oPMVUejiX0vXK5JAneEqE60t5MPissDzq4/HwqXXgL/UZjp4uo9VhidQJFlCjIcPDbVw/ILB45UcFsQtHURx1f6tAkUKDpWX796bO/5rt2IZl+gJotfGitfn8MD3rNx3XkJ5X2byscW1iAhdr0XFajK9vibJuZgp8edQDWIgFAc+5UYlK9DnRM8OXHTee6wHUmMPhIfyiSefyJGUHYLC11PbWvnKNQ7Dk=----ATTACHMENT:----NDc0NTEzMjUyNzMzMDg2NiAyNDk3Mzk2MDY3MjAwMzAxIDU4MDQ3Mzg1Nzg4ODUzODE=