omnihooks-sendgrid-parse 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.rspec +2 -0
- data/.ruby-gemsets +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/README.md +43 -0
- data/Rakefile +6 -0
- data/lib/omnihooks/strategies/sendgrid_parse.rb +42 -0
- data/lib/omnihooks-sendgrid-parse/version.rb +5 -0
- data/lib/omnihooks_sendgrid_parse.rb +1 -0
- data/omnihooks-sendgrid.gemspec +34 -0
- metadata +145 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 626a2e5e08fc64db6709f2800b09170c2720df4f
|
4
|
+
data.tar.gz: 8ba0fdca310d1813e5fd6313c0e0f4bb00bca3b0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 68b9ae1716a808ea05bdd12dc619e3a7a168ed44cd4abd508107d0d25eeab5bb72da1cf0a109f52a41b84abc03a8c6f6a2b45a34dda17c69f8821efb72b201e2
|
7
|
+
data.tar.gz: eb9513903693c001b66a48a5681ff17834c4656d82da75a36209b06b57ad622e54633dc496bc9da67c2be7a5f95e75b9284eb93a5064f7997674bc283f83e1c8
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.ruby-gemsets
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
omnihooks-sendgrid-parse
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.2.3
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# Omnihooks::SendgridParse
|
2
|
+
|
3
|
+
This gem implements a [Sendgrid Parse Webhook](https://sendgrid.com/docs/API_Reference/Webhooks/parse.html) strategy for [OmniHooks](https://github.com/dropstream/omnihooks).
|
4
|
+
|
5
|
+
The strategy will accept the HTTP POST message from Sendgrid, using the email subject as the event type.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'omnihooks-sendgrid-parse'
|
13
|
+
```
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
$ gem install omnihooks-sendgrid-parse
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
|
26
|
+
````ruby
|
27
|
+
Rack::Builder.new do
|
28
|
+
use OmniHooks::Builder do
|
29
|
+
provider :sendgrid_parse do
|
30
|
+
configure do |c|
|
31
|
+
c.subscribe 'email subject', Proc.new { |event| nil }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
````
|
37
|
+
|
38
|
+
See [Omnihooks Usage](https://github.com/dropstream/omnihooks#usage) for additional usage options for subscribing to events.
|
39
|
+
|
40
|
+
## Contributing
|
41
|
+
|
42
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/dropstream/omnihooks-sendgrid.
|
43
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'omnihooks'
|
2
|
+
require 'mail'
|
3
|
+
|
4
|
+
module OmniHooks
|
5
|
+
module Strategies
|
6
|
+
class SendgridParse
|
7
|
+
include OmniHooks::Strategy
|
8
|
+
option :name, 'sendgrid-parse'
|
9
|
+
|
10
|
+
event do
|
11
|
+
raw_info
|
12
|
+
end
|
13
|
+
|
14
|
+
event_type do
|
15
|
+
raw_info['subject']
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def raw_info
|
21
|
+
return @raw_info if instance_variable_defined?(:@raw_info)
|
22
|
+
|
23
|
+
parts = Rack::Multipart.parse_multipart(env)
|
24
|
+
|
25
|
+
@raw_info = Mail.new do
|
26
|
+
header parts['headers']
|
27
|
+
text_part { parts['text'] }
|
28
|
+
html_part { parts['html'] }
|
29
|
+
end
|
30
|
+
|
31
|
+
parts['attachments'].to_i.times do |i|
|
32
|
+
attachment = parts["attachment#{i+1}"]
|
33
|
+
attachment[:tempfile].rewind
|
34
|
+
@raw_info.attachments[attachment[:filename]] = { mime_type: attachment[:type],
|
35
|
+
content: attachment[:tempfile].read }
|
36
|
+
end
|
37
|
+
|
38
|
+
@raw_info
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'omnihooks/strategies/sendgrid_parse'
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'omnihooks-sendgrid-parse/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "omnihooks-sendgrid-parse"
|
8
|
+
spec.version = Omnihooks::SendgridParse::VERSION
|
9
|
+
spec.authors = ["Karl Falconer"]
|
10
|
+
spec.email = ["karl@getdropstream.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Omnihooks Strategy for Sendgrid Parse API Webhooks}
|
13
|
+
spec.description = %q{Omnihooks Strategy for Sendgrid Parse API Webhooks}
|
14
|
+
spec.homepage = "https://github.com/dropstream/omnihooks-sendgrid-parse"
|
15
|
+
|
16
|
+
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
17
|
+
# delete this section to allow pushing this gem to any host.
|
18
|
+
if spec.respond_to?(:metadata)
|
19
|
+
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
20
|
+
else
|
21
|
+
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
22
|
+
end
|
23
|
+
|
24
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
25
|
+
spec.require_paths = ["lib"]
|
26
|
+
|
27
|
+
spec.add_dependency 'omnihooks', '~> 0.0.2'
|
28
|
+
spec.add_dependency 'multi_json', '>= 1.3'
|
29
|
+
spec.add_dependency 'mail', '~>2.0', '>= 2.0.3'
|
30
|
+
|
31
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
32
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
33
|
+
spec.add_development_dependency "rspec"
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: omnihooks-sendgrid-parse
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Karl Falconer
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-10-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: omnihooks
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.0.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.0.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: multi_json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mail
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.0'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 2.0.3
|
51
|
+
type: :runtime
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - "~>"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '2.0'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 2.0.3
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: bundler
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '1.10'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '1.10'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: rake
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '10.0'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '10.0'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: rspec
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
description: Omnihooks Strategy for Sendgrid Parse API Webhooks
|
104
|
+
email:
|
105
|
+
- karl@getdropstream.com
|
106
|
+
executables: []
|
107
|
+
extensions: []
|
108
|
+
extra_rdoc_files: []
|
109
|
+
files:
|
110
|
+
- ".gitignore"
|
111
|
+
- ".rspec"
|
112
|
+
- ".ruby-gemsets"
|
113
|
+
- ".ruby-version"
|
114
|
+
- Gemfile
|
115
|
+
- README.md
|
116
|
+
- Rakefile
|
117
|
+
- lib/omnihooks-sendgrid-parse/version.rb
|
118
|
+
- lib/omnihooks/strategies/sendgrid_parse.rb
|
119
|
+
- lib/omnihooks_sendgrid_parse.rb
|
120
|
+
- omnihooks-sendgrid.gemspec
|
121
|
+
homepage: https://github.com/dropstream/omnihooks-sendgrid-parse
|
122
|
+
licenses: []
|
123
|
+
metadata:
|
124
|
+
allowed_push_host: https://rubygems.org
|
125
|
+
post_install_message:
|
126
|
+
rdoc_options: []
|
127
|
+
require_paths:
|
128
|
+
- lib
|
129
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - ">="
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
requirements: []
|
140
|
+
rubyforge_project:
|
141
|
+
rubygems_version: 2.4.5.1
|
142
|
+
signing_key:
|
143
|
+
specification_version: 4
|
144
|
+
summary: Omnihooks Strategy for Sendgrid Parse API Webhooks
|
145
|
+
test_files: []
|