Jordi Boggiano 9 роки тому
батько
коміт
75c37161d5

+ 1 - 1
composer.json

@@ -22,7 +22,7 @@
         "sentry/sentry": "^0.13",
         "ruflin/elastica": ">=0.90 <3.0",
         "doctrine/couchdb": "~1.0@dev",
-        "aws/aws-sdk-php": "^2.4.9",
+        "aws/aws-sdk-php": "^2.4.9 || ^3.0",
         "php-amqplib/php-amqplib": "~2.4",
         "swiftmailer/swiftmailer": "~5.3",
         "php-console/php-console": "^3.1.3",

+ 21 - 3
src/Monolog/Handler/DynamoDbHandler.php

@@ -14,6 +14,7 @@ namespace Monolog\Handler;
 use Aws\Common\Aws;
 use Aws\DynamoDb\DynamoDbClient;
 use Monolog\Formatter\FormatterInterface;
+use Aws\DynamoDb\Marshaler;
 use Monolog\Formatter\ScalarFormatter;
 use Monolog\Logger;
 
@@ -37,6 +38,16 @@ class DynamoDbHandler extends AbstractProcessingHandler
      */
     protected $table;
 
+    /**
+     * @var int
+     */
+    protected $version;
+
+    /**
+     * @var Marshaler
+     */
+    protected $marshaler;
+
     /**
      * @param DynamoDbClient $client
      * @param string         $table
@@ -45,8 +56,11 @@ class DynamoDbHandler extends AbstractProcessingHandler
      */
     public function __construct(DynamoDbClient $client, $table, $level = Logger::DEBUG, $bubble = true)
     {
-        if (!defined('Aws\Common\Aws::VERSION') || version_compare('3.0', Aws::VERSION, '<=')) {
-            throw new \RuntimeException('The DynamoDbHandler is only known to work with the AWS SDK 2.x releases');
+        if (defined('Aws\Common\Aws::VERSION') && version_compare(Aws::VERSION, '3.0', '>=')) {
+            $this->version = 3;
+            $this->marshaler = new Marshaler;
+        } else {
+            $this->version = 2;
         }
 
         $this->client = $client;
@@ -61,7 +75,11 @@ class DynamoDbHandler extends AbstractProcessingHandler
     protected function write(array $record)
     {
         $filtered = $this->filterEmptyFields($record['formatted']);
-        $formatted = $this->client->formatAttributes($filtered);
+        if ($this->version === 3) {
+            $formatted = $this->marshaler->marshalItem($filtered);
+        } else {
+            $formatted = $this->client->formatAttributes($filtered);
+        }
 
         $this->client->putItem([
             'TableName' => $this->table,

+ 8 - 4
src/Monolog/Processor/MercurialProcessor.php

@@ -48,9 +48,13 @@ class MercurialProcessor
 
         $result = explode(' ', trim(`hg id -nb`));
 
-        return self::$cache = [
-            'branch' => $result[1],
-            'revision' => $result[2],
-        ];
+        if (count($result) >= 3) {
+            return self::$cache = [
+                'branch' => $result[1],
+                'revision' => $result[2],
+            ];
+        }
+
+        return self::$cache = [];
     }
 }