From 85e51a6dd779c324fe89943deaa130dd1f295e9e Mon Sep 17 00:00:00 2001
From: Maxwell Salzberg <maxwell@joindiaspora.com>
Date: Wed, 5 Oct 2011 10:01:55 -0700
Subject: [PATCH] wip

---
 Gemfile                              |  3 ++
 Gemfile.lock                         |  7 ++++
 config/environments/development.rb   |  2 +-
 config/initializers/mailer_config.rb | 63 +++++++++++++++-------------
 lib/messagebus/mailer.rb             | 46 ++++++++++++++++++++
 5 files changed, 90 insertions(+), 31 deletions(-)
 create mode 100644 lib/messagebus/mailer.rb

diff --git a/Gemfile b/Gemfile
index ad45991dcb..72490dbfcd 100644
--- a/Gemfile
+++ b/Gemfile
@@ -77,6 +77,9 @@ gem 'SystemTimer', '1.2.1', :platforms => :ruby_18
 gem 'hoptoad_notifier'
 gem 'newrelic_rpm', :require => false
 
+#mail
+gem 'messagebus_ruby_api', :git => 'https://github.com/messagebus/messagebus_ruby_api.git'
+
 # tags
 
 gem 'acts-as-taggable-on', :git => 'git://github.com/diaspora/acts-as-taggable-on.git'
diff --git a/Gemfile.lock b/Gemfile.lock
index b09c943413..2bfff4f17e 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -56,6 +56,12 @@ GIT
       addressable (>= 2.1.1)
       eventmachine (>= 0.12.9)
 
+GIT
+  remote: https://github.com/messagebus/messagebus_ruby_api.git
+  revision: 02b3d04730f3a72f636c0b4ddbbcd660bba6a75e
+  specs:
+    messagebus_ruby_api (0.4.8)
+
 GEM
   remote: http://rubygems.org/
   specs:
@@ -505,6 +511,7 @@ DEPENDENCIES
   json (= 1.4.6)
   jwt (= 0.1.3)
   linecache (= 0.43)
+  messagebus_ruby_api!
   mini_magick (= 3.2)
   mobile-fu
   mock_redis
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 18345ee444..c4a3525894 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -1,7 +1,6 @@
 #   Copyright (c) 2010-2011, Diaspora Inc.  This file is
 #   licensed under the Affero General Public License version 3 or later.  See
 #   the COPYRIGHT file.
-
 Diaspora::Application.configure do
   # Settings specified here will take precedence over those in config/environment.rb
 
@@ -17,6 +16,7 @@ Diaspora::Application.configure do
   config.consider_all_requests_local       = true
   config.action_controller.perform_caching = false
 
+  
   # Don't care if the mailer can't send
   config.action_mailer.raise_delivery_errors = false
   config.active_support.deprecation = :log
diff --git a/config/initializers/mailer_config.rb b/config/initializers/mailer_config.rb
index 786a825577..2f5a3d3664 100644
--- a/config/initializers/mailer_config.rb
+++ b/config/initializers/mailer_config.rb
@@ -2,36 +2,39 @@
 #   licensed under the Affero General Public License version 3 or later.  See
 #   the COPYRIGHT file.
 
+require File.join(Rails.root, 'lib/messagebus/mailer')
 Diaspora::Application.configure do
   config.action_mailer.default_url_options = {:host => AppConfig[:pod_uri].authority }
-  unless Rails.env == 'test' || AppConfig[:mailer_on] != true
-    if AppConfig[:mailer_method] == "sendmail"
-      config.action_mailer.delivery_method = :sendmail
-      config.action_mailer.sendmail_settings = {
-        :location => AppConfig[:sendmail_location]
-      }
-    else
-      config.action_mailer.delivery_method = :smtp
-      if AppConfig[:smtp_authentication] == "none"
-        config.action_mailer.smtp_settings = {
-          :address => AppConfig[:smtp_address],
-          :port => AppConfig[:smtp_port],
-          :domain => AppConfig[:smtp_domain],
-          :enable_starttls_auto => false,
-          :openssl_verify_mode => AppConfig[:smtp_openssl_verify_mode]
-        }
-      else
-        config.action_mailer.smtp_settings = {
-          :address => AppConfig[:smtp_address],
-          :port => AppConfig[:smtp_port],
-          :domain => AppConfig[:smtp_domain],
-          :authentication => AppConfig[:smtp_authentication],
-          :user_name => AppConfig[:smtp_username],
-          :password => AppConfig[:smtp_password],
-          :enable_starttls_auto => AppConfig[:smtp_starttls_auto],
-          :openssl_verify_mode => AppConfig[:smtp_openssl_verify_mode]
-        }
-      end
-    end
-  end
+  # unless Rails.env == 'test' || AppConfig[:mailer_on] != true
+  #   if AppConfig[:mailer_method] == "sendmail"
+  #     config.action_mailer.delivery_method = :sendmail
+  #     config.action_mailer.sendmail_settings = {
+  #       :location => AppConfig[:sendmail_location]
+  #     }
+  #   else
+  #     config.action_mailer.delivery_method = :smtp
+  #     if AppConfig[:smtp_authentication] == "none"
+  #       config.action_mailer.smtp_settings = {
+  #         :address => AppConfig[:smtp_address],
+  #         :port => AppConfig[:smtp_port],
+  #         :domain => AppConfig[:smtp_domain],
+  #         :enable_starttls_auto => false,
+  #         :openssl_verify_mode => AppConfig[:smtp_openssl_verify_mode]
+  #       }
+  #     else
+  #       config.action_mailer.smtp_settings = {
+  #         :address => AppConfig[:smtp_address],
+  #         :port => AppConfig[:smtp_port],
+  #         :domain => AppConfig[:smtp_domain],
+  #         :authentication => AppConfig[:smtp_authentication],
+  #         :user_name => AppConfig[:smtp_username],
+  #         :password => AppConfig[:smtp_password],
+  #         :enable_starttls_auto => AppConfig[:smtp_starttls_auto],
+  #         :openssl_verify_mode => AppConfig[:smtp_openssl_verify_mode]
+  #       }
+  #     end
+  #   end
+  # end
+
+  config.action_mailer.delivery_method = Messagebus::Mailer.new('986071AEF15FBE380E75A9805C77E733')
 end
diff --git a/lib/messagebus/mailer.rb b/lib/messagebus/mailer.rb
new file mode 100644
index 0000000000..72ea03241c
--- /dev/null
+++ b/lib/messagebus/mailer.rb
@@ -0,0 +1,46 @@
+module Messagebus
+  class Mailer
+
+    def initialize(api_key)
+      @client = MessagebusRubyApi::Client.new(api_key)
+    end
+
+    attr_accessor :settings
+
+    def new(*settings)
+      self
+    end
+
+    def deliver!(message)
+      deliver(message)
+    end
+
+    private
+
+    def deliver(message)
+      puts "dslkfjasd;lfkjasd;lkfjasd;lkfjasd;lkfjasd;lfjkasd;lkfjasd;lfkjasd;lfkjasd;lkfjas;ldkfj;alsdkjf;lasdjkf;lasdkjf;alsdjkfls"
+      @client.common_info = {:fromEmail => message.from.first}
+      message.to.each do |addressee|
+        m = {:toEmail => addressee, :subject => message.subject}
+
+        if message.multipart?
+          m[:plaintextBody] = message.text_part.body.to_s if message.text_part
+          m[:htmlBody]      = message.html_part.body.to_s if message.html_part
+        else
+          m[:plaintextBody] = message.body.to_s
+        end
+
+        @client.add_message(m)
+      end
+
+      status = @client.flush
+
+      if status[:failureCount] && status[:failureCount] > 0
+        raise "Messagebus failure.  failureCount=#{failureCount}, message=#{message.inspect}"
+      end
+
+    end
+    
+  end
+
+end
-- 
GitLab