action-gmailer 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/Gemfile +24 -0
- data/LICENSE.txt +20 -0
- data/README.md +64 -0
- data/Rakefile +34 -0
- data/TODO.md +4 -0
- data/VERSION +1 -0
- data/action-gmailer.gemspec +72 -0
- data/lib/action_gmailer.rb +75 -0
- data/lib/ext/check_delivery_params.rb +38 -0
- data/test/helper.rb +35 -0
- data/test/test_action_gmailer.rb +105 -0
- metadata +190 -0
data/.document
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
gem "activesupport"
|
4
|
+
gem "actionmailer"
|
5
|
+
gem "gmail_xoauth"
|
6
|
+
|
7
|
+
group :test, :development do
|
8
|
+
gem "pry"
|
9
|
+
gem "pry-debugger"
|
10
|
+
gem "awesome_print"
|
11
|
+
end
|
12
|
+
|
13
|
+
group :test do
|
14
|
+
gem "mail"
|
15
|
+
gem "minitest", "~> 4.2.0"
|
16
|
+
gem "minitest-reporters", "~> 0.12.0"
|
17
|
+
gem "mocha", :require => false
|
18
|
+
end
|
19
|
+
|
20
|
+
group :development do
|
21
|
+
gem "jeweler", "~> 1.8.4"
|
22
|
+
gem "reek", "~> 1.2.8"
|
23
|
+
end
|
24
|
+
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2013 Joel Larsson
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
# ActionMailer delivery method for oauth2/smtp
|
2
|
+
|
3
|
+
Get access to [Gmail IMAP and STMP via OAuth2](https://developers.google.com/google-apps/gmail/xoauth2_protocol) using [ActionMailer](https://github.com/rails/rails/tree/master/actionmailer) or just a plain [Mail::Message](https://github.com/mikel/mail)
|
4
|
+
|
5
|
+
It's using the [gmail_xauth gem](https://github.com/nfo/gmail_xoauth) so it can be extended to support a few other auth variants pretty simple.
|
6
|
+
|
7
|
+
# Installation
|
8
|
+
|
9
|
+
Add the following to your Gemfile:
|
10
|
+
|
11
|
+
gem 'action-gmailer'
|
12
|
+
|
13
|
+
# Configuration
|
14
|
+
|
15
|
+
You need to set oauth2_token and account to send mail with `ActionGmailer`. For more information, check [SASL XOAUTH2](https://developers.google.com/google-apps/gmail/xoauth2_protocol)
|
16
|
+
|
17
|
+
## Using Rails and ActionMailer:
|
18
|
+
|
19
|
+
settings = {
|
20
|
+
smtp_host: 'FIXME', # default: 'smtp.gmail.com'
|
21
|
+
smtp_port: 'FIXME', # default: 587
|
22
|
+
helo_domain: 'FIXME', # default:'gmail.com'
|
23
|
+
auth_type: 'FIXME', # default: :xoauth2
|
24
|
+
oauth2_token: 'FIXME',
|
25
|
+
account: 'FIXME'
|
26
|
+
}
|
27
|
+
|
28
|
+
config.action_mailer.delivery_method = :action_gmailer
|
29
|
+
config.action_mailer.action_gmailer_settings = settings
|
30
|
+
|
31
|
+
## Using a plain Mail::Message
|
32
|
+
|
33
|
+
mail = Mail.new {
|
34
|
+
from "from@example.com"
|
35
|
+
to "to@example.com
|
36
|
+
subject "test subject"
|
37
|
+
body 'test mail body'
|
38
|
+
}
|
39
|
+
mail.delivery_method ActionGmailer::DeliveryMethod, settings
|
40
|
+
|
41
|
+
# Testing/Development
|
42
|
+
|
43
|
+
Run all tests
|
44
|
+
|
45
|
+
rake
|
46
|
+
|
47
|
+
Run all tests with sending a live email, uncomment the skips and set some secret env variables.
|
48
|
+
|
49
|
+
ACTION_GMAILER_ACCOUNT='joel@example.com' ACTION_MAILER_OAUTH2_TOKEN='FIXME' rake
|
50
|
+
|
51
|
+
# Contributing to action_gmailer
|
52
|
+
|
53
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
|
54
|
+
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
|
55
|
+
* Fork the project.
|
56
|
+
* Start a feature/bugfix branch.
|
57
|
+
* Commit and push until you are happy with your contribution.
|
58
|
+
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
59
|
+
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
60
|
+
|
61
|
+
# Copyright
|
62
|
+
|
63
|
+
Copyright (c) 2013 Joel Larsson. See LICENSE.txt for
|
64
|
+
further details.
|
data/Rakefile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
require 'rake'
|
13
|
+
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
gem.name = "action-gmailer"
|
17
|
+
gem.homepage = "http://github.com/popgiro/action-gmailer"
|
18
|
+
gem.license = "MIT"
|
19
|
+
gem.summary = %Q{ActionGmailer, oauth/gmail delivery method}
|
20
|
+
gem.description = %Q{ActionGmailer, oauth/gmail delivery method}
|
21
|
+
gem.email = "tilljoel@gmail.com"
|
22
|
+
gem.authors = ["Joel Larsson"]
|
23
|
+
end
|
24
|
+
Jeweler::RubygemsDotOrgTasks.new
|
25
|
+
|
26
|
+
require 'rake/testtask'
|
27
|
+
Rake::TestTask.new(:test) do |test|
|
28
|
+
test.libs << 'lib' << 'test'
|
29
|
+
test.pattern = 'test/**/test_*.rb'
|
30
|
+
test.verbose = true
|
31
|
+
end
|
32
|
+
|
33
|
+
task :default => :test
|
34
|
+
|
data/TODO.md
ADDED
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "action-gmailer"
|
8
|
+
s.version = "0.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Joel Larsson"]
|
12
|
+
s.date = "2013-02-23"
|
13
|
+
s.description = "ActionGmailer, oauth/gmail delivery method"
|
14
|
+
s.email = "tilljoel@gmail.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.md"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
"Gemfile",
|
22
|
+
"LICENSE.txt",
|
23
|
+
"README.md",
|
24
|
+
"Rakefile",
|
25
|
+
"TODO.md",
|
26
|
+
"VERSION",
|
27
|
+
"action-gmailer.gemspec",
|
28
|
+
"lib/action_gmailer.rb",
|
29
|
+
"lib/ext/check_delivery_params.rb",
|
30
|
+
"test/helper.rb",
|
31
|
+
"test/test_action_gmailer.rb"
|
32
|
+
]
|
33
|
+
s.homepage = "http://github.com/popgiro/action-gmailer"
|
34
|
+
s.licenses = ["MIT"]
|
35
|
+
s.require_paths = ["lib"]
|
36
|
+
s.rubygems_version = "1.8.24"
|
37
|
+
s.summary = "ActionGmailer, oauth/gmail delivery method"
|
38
|
+
|
39
|
+
if s.respond_to? :specification_version then
|
40
|
+
s.specification_version = 3
|
41
|
+
|
42
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
43
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
44
|
+
s.add_runtime_dependency(%q<actionmailer>, [">= 0"])
|
45
|
+
s.add_runtime_dependency(%q<gmail_xoauth>, [">= 0"])
|
46
|
+
s.add_development_dependency(%q<pry>, [">= 0"])
|
47
|
+
s.add_development_dependency(%q<pry-debugger>, [">= 0"])
|
48
|
+
s.add_development_dependency(%q<awesome_print>, [">= 0"])
|
49
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
50
|
+
s.add_development_dependency(%q<reek>, ["~> 1.2.8"])
|
51
|
+
else
|
52
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
53
|
+
s.add_dependency(%q<actionmailer>, [">= 0"])
|
54
|
+
s.add_dependency(%q<gmail_xoauth>, [">= 0"])
|
55
|
+
s.add_dependency(%q<pry>, [">= 0"])
|
56
|
+
s.add_dependency(%q<pry-debugger>, [">= 0"])
|
57
|
+
s.add_dependency(%q<awesome_print>, [">= 0"])
|
58
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
59
|
+
s.add_dependency(%q<reek>, ["~> 1.2.8"])
|
60
|
+
end
|
61
|
+
else
|
62
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
63
|
+
s.add_dependency(%q<actionmailer>, [">= 0"])
|
64
|
+
s.add_dependency(%q<gmail_xoauth>, [">= 0"])
|
65
|
+
s.add_dependency(%q<pry>, [">= 0"])
|
66
|
+
s.add_dependency(%q<pry-debugger>, [">= 0"])
|
67
|
+
s.add_dependency(%q<awesome_print>, [">= 0"])
|
68
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
69
|
+
s.add_dependency(%q<reek>, ["~> 1.2.8"])
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'action_mailer'
|
3
|
+
require 'active_support'
|
4
|
+
require 'gmail_xoauth'
|
5
|
+
require_relative 'ext/check_delivery_params'
|
6
|
+
|
7
|
+
module ActionGmailer
|
8
|
+
|
9
|
+
class DeliveryError < StandardError
|
10
|
+
end
|
11
|
+
|
12
|
+
class DeliveryMethod
|
13
|
+
include Mail::CheckDeliveryParams # for check_params(...)
|
14
|
+
|
15
|
+
attr_reader :settings
|
16
|
+
|
17
|
+
attr_accessor :smtp_host, :smtp_port
|
18
|
+
attr_accessor :helo_domain, :auth_type
|
19
|
+
attr_accessor :account, :oauth2_token
|
20
|
+
|
21
|
+
def initialize(settings)
|
22
|
+
self.settings = settings
|
23
|
+
end
|
24
|
+
|
25
|
+
def settings=(settings)
|
26
|
+
@settings = settings
|
27
|
+
set_accessors_from_settings!
|
28
|
+
end
|
29
|
+
|
30
|
+
def deliver!(mail)
|
31
|
+
envelope_from, destinations, message = check_params(mail)
|
32
|
+
|
33
|
+
smtp = Net::SMTP.new(smtp_host, smtp_port)
|
34
|
+
smtp.enable_starttls_auto
|
35
|
+
smtp.start(helo_domain, account, oauth2_token, auth_type) do
|
36
|
+
smtp.sendmail(message, envelope_from, destinations)
|
37
|
+
end
|
38
|
+
rescue StandardError => exp
|
39
|
+
raise DeliveryError, exp.message
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def default_smtp_host
|
45
|
+
'smtp.gmail.com'
|
46
|
+
end
|
47
|
+
|
48
|
+
def default_smtp_port
|
49
|
+
587
|
50
|
+
end
|
51
|
+
|
52
|
+
def default_helo_domain
|
53
|
+
'gmail.com'
|
54
|
+
end
|
55
|
+
|
56
|
+
def default_auth_type
|
57
|
+
:xoauth2
|
58
|
+
end
|
59
|
+
|
60
|
+
def set_accessors_from_settings!
|
61
|
+
@smtp_host = settings[:smtp_host] || default_smtp_host
|
62
|
+
@smtp_port = settings[:smtp_port] || default_smtp_port
|
63
|
+
@helo_domain = settings[:helo_domain] || default_helo_domain
|
64
|
+
@auth_type = settings[:auth_type] || default_auth_type
|
65
|
+
@oauth2_token = settings.fetch(:oauth2_token)
|
66
|
+
@account = settings.fetch(:account)
|
67
|
+
rescue KeyError
|
68
|
+
raise DeliveryError, 'Missing required setting'
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
ActionMailer::Base.add_delivery_method(:action_gmailer,
|
75
|
+
ActionGmailer::DeliveryMethod)
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Use until we use a newer mail gem
|
3
|
+
# This is from '/mail/check_delivery_params.rb'
|
4
|
+
module Mail
|
5
|
+
|
6
|
+
module CheckDeliveryParams
|
7
|
+
|
8
|
+
def self.included(klass)
|
9
|
+
klass.class_eval do
|
10
|
+
|
11
|
+
def check_params(mail)
|
12
|
+
envelope_from = mail.return_path ||
|
13
|
+
mail.sender ||
|
14
|
+
mail.from_addrs.first
|
15
|
+
if envelope_from.blank?
|
16
|
+
err = 'A sender (Return-Path, Sender or From) required'
|
17
|
+
raise ArgumentError.new(err)
|
18
|
+
end
|
19
|
+
|
20
|
+
destinations = mail.destinations if mail.respond_to?(:destinations)
|
21
|
+
if destinations.blank?
|
22
|
+
err = 'At least one recipient (To, Cc or Bcc) is required'
|
23
|
+
raise ArgumentError.new(err)
|
24
|
+
end
|
25
|
+
|
26
|
+
message ||= mail.encoded if mail.respond_to?(:encoded)
|
27
|
+
if message.blank?
|
28
|
+
err = 'A encoded content is required'
|
29
|
+
raise ArgumentError.new(err)
|
30
|
+
end
|
31
|
+
|
32
|
+
[envelope_from, destinations, message]
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'rubygems'
|
3
|
+
require 'bundler'
|
4
|
+
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts 'Run `bundle install` to install missing gems'
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'minitest/unit'
|
14
|
+
require 'minitest/mock'
|
15
|
+
require 'minitest/spec'
|
16
|
+
require 'minitest/autorun'
|
17
|
+
require 'minitest/reporters'
|
18
|
+
require 'mocha/setup'
|
19
|
+
|
20
|
+
MiniTest::Reporters.use! MiniTest::Reporters::SpecReporter.new
|
21
|
+
#MiniTest::Reporters.use! MiniTest::Reporters::DefaultReporter.new
|
22
|
+
|
23
|
+
#MiniTest::Unit.runner = MiniTest::Unit.new
|
24
|
+
#MiniTest::Unit.runner.reporters << MiniTest::Reporters::ProgressReporter.new
|
25
|
+
#MiniTest::Unit.runner.reporters << MiniTest::Reporters::DefaultReporter.new
|
26
|
+
#MiniTest::Unit.runner.reporters << MiniTest::Reporters::SpecReporter.new
|
27
|
+
|
28
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
29
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
30
|
+
require 'action_gmailer'
|
31
|
+
|
32
|
+
class MiniTest::Unit::TestCase
|
33
|
+
end
|
34
|
+
|
35
|
+
MiniTest::Unit.autorun
|
@@ -0,0 +1,105 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'helper'
|
3
|
+
require_relative '../lib/action_gmailer.rb'
|
4
|
+
|
5
|
+
describe ActionGmailer do
|
6
|
+
|
7
|
+
let(:account) { ENV['ACTION_GMAILER_ACCOUNT'] || 'not-set@example.com' }
|
8
|
+
let(:oauth2_token) { ENV['ACTION_MAILER_OAUTH2_TOKEN'] || 'not-set' }
|
9
|
+
let(:settings) { { account: account, oauth2_token: oauth2_token } }
|
10
|
+
subject { ActionGmailer::DeliveryMethod.new(settings) }
|
11
|
+
|
12
|
+
describe '#deliver!' do
|
13
|
+
|
14
|
+
describe 'live mail' do
|
15
|
+
describe 'with valid mail' do
|
16
|
+
let(:mail) do
|
17
|
+
email = account
|
18
|
+
Mail.new do
|
19
|
+
from "#{email}"
|
20
|
+
to "#{email}"
|
21
|
+
subject "test subject from #{email} to: #{email}"
|
22
|
+
body 'test mail body'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'you must set ENV[ACTION_GMAILER_*]' do
|
27
|
+
skip
|
28
|
+
account.wont_equal 'not-set@example.com'
|
29
|
+
oauth2_token.wont_equal 'not-set'
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should deliver the mail' do
|
33
|
+
skip
|
34
|
+
subject.deliver!(mail)
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should deliver the mail, with delivery_method' do
|
38
|
+
skip
|
39
|
+
mail.delivery_method ActionGmailer::DeliveryMethod, settings
|
40
|
+
mail.deliver
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe 'with invalid mail' do
|
46
|
+
let(:mail) { Mail.new { body'test mail body' } }
|
47
|
+
it 'should raise DeliveryError' do
|
48
|
+
-> { subject.deliver!(mail) }.must_raise ActionGmailer::DeliveryError
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#initialize' do
|
54
|
+
describe 'with valid settings' do
|
55
|
+
|
56
|
+
specify { subject.account.must_equal account }
|
57
|
+
specify { subject.oauth2_token.must_equal oauth2_token }
|
58
|
+
specify { subject.smtp_host.must_equal 'smtp.gmail.com' }
|
59
|
+
specify { subject.smtp_port.must_equal 587 }
|
60
|
+
specify { subject.helo_domain.must_equal 'gmail.com' }
|
61
|
+
specify { subject.auth_type.must_equal :xoauth2 }
|
62
|
+
|
63
|
+
describe 'with no default accessors' do
|
64
|
+
let(:smtp_host) { 'smtp.example.com' }
|
65
|
+
let(:smtp_port) { 42 }
|
66
|
+
let(:helo_domain) { 'example.com' }
|
67
|
+
let(:auth_type) { :example }
|
68
|
+
let(:settings) do
|
69
|
+
{ account: account,
|
70
|
+
oauth2_token: oauth2_token,
|
71
|
+
smtp_port: smtp_port,
|
72
|
+
smtp_host: smtp_host,
|
73
|
+
helo_domain: helo_domain,
|
74
|
+
auth_type: auth_type
|
75
|
+
}
|
76
|
+
end
|
77
|
+
|
78
|
+
specify { subject.smtp_host.must_equal 'smtp.example.com' }
|
79
|
+
specify { subject.smtp_port.must_equal 42 }
|
80
|
+
specify { subject.helo_domain.must_equal 'example.com' }
|
81
|
+
specify { subject.auth_type.must_equal :example }
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe 'with invalid settings' do
|
86
|
+
describe 'with no account' do
|
87
|
+
let(:settings) { { account: account } }
|
88
|
+
it 'raises DeliveryError' do
|
89
|
+
-> {
|
90
|
+
ActionGmailer::DeliveryMethod.new(settings)
|
91
|
+
}.must_raise ActionGmailer::DeliveryError
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe 'with no oauth2_token' do
|
96
|
+
let(:settings) { { oauth2_token: oauth2_token } }
|
97
|
+
it 'raises DeliveryError' do
|
98
|
+
-> {
|
99
|
+
ActionGmailer::DeliveryMethod.new(settings)
|
100
|
+
}.must_raise ActionGmailer::DeliveryError
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
metadata
ADDED
@@ -0,0 +1,190 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: action-gmailer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Joel Larsson
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-02-23 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: actionmailer
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: gmail_xoauth
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: pry
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: pry-debugger
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: awesome_print
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: jeweler
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.8.4
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 1.8.4
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: reek
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 1.2.8
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 1.2.8
|
142
|
+
description: ActionGmailer, oauth/gmail delivery method
|
143
|
+
email: tilljoel@gmail.com
|
144
|
+
executables: []
|
145
|
+
extensions: []
|
146
|
+
extra_rdoc_files:
|
147
|
+
- LICENSE.txt
|
148
|
+
- README.md
|
149
|
+
files:
|
150
|
+
- .document
|
151
|
+
- Gemfile
|
152
|
+
- LICENSE.txt
|
153
|
+
- README.md
|
154
|
+
- Rakefile
|
155
|
+
- TODO.md
|
156
|
+
- VERSION
|
157
|
+
- action-gmailer.gemspec
|
158
|
+
- lib/action_gmailer.rb
|
159
|
+
- lib/ext/check_delivery_params.rb
|
160
|
+
- test/helper.rb
|
161
|
+
- test/test_action_gmailer.rb
|
162
|
+
homepage: http://github.com/popgiro/action-gmailer
|
163
|
+
licenses:
|
164
|
+
- MIT
|
165
|
+
post_install_message:
|
166
|
+
rdoc_options: []
|
167
|
+
require_paths:
|
168
|
+
- lib
|
169
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ! '>='
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
segments:
|
176
|
+
- 0
|
177
|
+
hash: 1185003157797333558
|
178
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
|
+
none: false
|
180
|
+
requirements:
|
181
|
+
- - ! '>='
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: '0'
|
184
|
+
requirements: []
|
185
|
+
rubyforge_project:
|
186
|
+
rubygems_version: 1.8.24
|
187
|
+
signing_key:
|
188
|
+
specification_version: 3
|
189
|
+
summary: ActionGmailer, oauth/gmail delivery method
|
190
|
+
test_files: []
|