From 05936033f7c03532ccaff7ec89f3faa52e7d5742 Mon Sep 17 00:00:00 2001 From: Adam Nicholson Date: Mon, 29 Sep 2014 20:51:07 +0100 Subject: [PATCH] Removed Guzzle dependency from Mandrill handler. API calls are now done via cURL --- composer.json | 3 +-- src/Monolog/Handler/MandrillHandler.php | 27 ++++++++++++++----------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/composer.json b/composer.json index e67bb0ba..62297d3c 100644 --- a/composer.json +++ b/composer.json @@ -34,8 +34,7 @@ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", "ext-mongo": "Allow sending log messages to a MongoDB server", "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "guzzlehttp/guzzle": "Allow sending log messages to Mandrill" + "rollbar/rollbar": "Allow sending log messages to Rollbar" }, "autoload": { "psr-4": {"Monolog\\": "src/Monolog"} diff --git a/src/Monolog/Handler/MandrillHandler.php b/src/Monolog/Handler/MandrillHandler.php index 1e994b05..cb20b2f5 100644 --- a/src/Monolog/Handler/MandrillHandler.php +++ b/src/Monolog/Handler/MandrillHandler.php @@ -12,10 +12,9 @@ namespace Monolog\Handler; use Monolog\Logger; -use GuzzleHttp\Client; /** - * MandrillHandler uses GuzzleHttp to send the emails to the Mandrill API + * MandrillHandler uses cURL to send the emails to the Mandrill API * * @author Adam Nicholson */ @@ -25,16 +24,15 @@ class MandrillHandler extends MailHandler protected $message; /** - * @param \GuzzleHttp\Client $client The Guzzle client * @oaram string $apiKey A valid Mandrill API key * @param callable|\Swift_Message $message An example message for real messages, only the body will be replaced * @param integer $level The minimum logging level at which this handler will be triggered * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not */ - public function __construct(Client $client, $apiKey, $message, $level = Logger::ERROR, $bubble = true) + public function __construct($apiKey, $message, $level = Logger::ERROR, $bubble = true) { parent::__construct($level, $bubble); - $this->client = $client; + if (!$message instanceof \Swift_Message && is_callable($message)) { $message = call_user_func($message); } @@ -53,12 +51,17 @@ class MandrillHandler extends MailHandler $message = clone $this->message; $message->setBody($content); - $this->client->post('https://mandrillapp.com/api/1.0/messages/send-raw.json', [ - 'body' => [ - 'key' => $this->apiKey, - 'raw_message' => (string) $message, - 'async' => false, - ], - ]); + $ch = curl_init(); + + curl_setopt($ch, CURLOPT_URL, 'https://mandrillapp.com/api/1.0/messages/send-raw.json'); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array( + 'key' => $this->apiKey, + 'raw_message' => (string) $message, + 'async' => false, + ))); + + curl_exec($ch); + curl_close ($ch); } } \ No newline at end of file