fluent-plugin-sendgrid-event 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: af4ed2dd208e0d2ee36d2a06ff960dd1456cc82d
4
- data.tar.gz: db3a6d8ce63603e354f3248168f8f0214170f1c1
3
+ metadata.gz: 2ffe235b5621c727bcfa07587de682d13f2ebf1d
4
+ data.tar.gz: b79173a1dc1c3134351ef4ec494de4c693e9b751
5
5
  SHA512:
6
- metadata.gz: b9d8efaf4a385570a44231b0a244a21d3aaa94e23637a19acc58e511e365b8d0e5e605345fb3b23a7a01d222fe7e75f3fd4db2357c6c027a039d13f3899b1f09
7
- data.tar.gz: 89a2bb97ba30d6dec52de424e5b80dbf31bdd0a2e11ffa73539389189b48be9250c41834076803bdbec3e06b3dd094ecad909f2f3dc029ddf34020aa47dc813d
6
+ metadata.gz: b4e2e92312512a50bfd916057c6bc7cf2b90b4485659051e5210ebc7a6da2f7d51c487218fa80a6c46502c97b97445057dc8e9350a1d68f19445350ae2d3eceb
7
+ data.tar.gz: 04034943a93378947169bd27a4b5ecca4c90e5c835233ba4f32f24cdb3de6379a495fb420568370a026d509f87d16d74678c7a3918fbc2def87f8671b653fd4d
data/README.md CHANGED
@@ -34,6 +34,21 @@ The following is an example of configuration.
34
34
  </source>
35
35
  ```
36
36
 
37
+ If you would like to use ssl, you can enable as below.
38
+
39
+ ```
40
+ <source>
41
+ type sendgrid_event
42
+ host 127.0.0.1
43
+ port 9191
44
+ tag sendgrid
45
+
46
+ ssl true
47
+ certificate /path/to/certificate.pem
48
+ private_key /path/to/private_key.key
49
+ </source>
50
+ ```
51
+
37
52
  ## Contributing
38
53
 
39
54
  1. Fork it ( http://github.com/hiroakis/fluent-plugin-sendgrid-event/fork )
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "fluent-plugin-sendgrid-event"
7
- spec.version = "0.0.1"
7
+ spec.version = "0.0.2"
8
8
  spec.authors = ["Hiroaki Sano"]
9
9
  spec.email = ["hiroaki.sano.9stories@gmail.com"]
10
10
 
@@ -1,3 +1,5 @@
1
+ require 'webrick/https'
2
+
1
3
  module Fluent
2
4
  class SendGridEventInput < Input
3
5
  Plugin.register_input('sendgrid_event', self)
@@ -5,6 +7,9 @@ module Fluent
5
7
  config_param :tag, :string, :default => nil
6
8
  config_param :host, :string, :default => "0.0.0.0"
7
9
  config_param :port, :integer, :default => 9191
10
+ config_param :ssl, :bool, :default => false
11
+ config_param :certificate, :string, :default => nil
12
+ config_param :private_key, :string, :default => nil
8
13
  config_param :request_uri, :string, :default => "/"
9
14
 
10
15
  unless method_defined?(:log)
@@ -45,6 +50,15 @@ module Fluent
45
50
  :BindAddress => @host,
46
51
  :Port => @port
47
52
  }
53
+ if @ssl
54
+ if File.exists?(@certificate) && File.exists?(@private_key)
55
+ listen[:SSLEnable] = @ssl
56
+ listen[:SSLCertificate] = OpenSSL::X509::Certificate.new(open(@certificate).read)
57
+ listen[:SSLPrivateKey] = OpenSSL::PKey::RSA.new(open(@private_key).read)
58
+ else
59
+ log.error "in_sendgrid_event: couldn't find certificate: '#{@certificate}' or ssl key: '#{@private_key}'"
60
+ end
61
+ end
48
62
 
49
63
  @server = WEBrick::HTTPServer.new(listen)
50
64
  @server.mount_proc(@request_uri) do |req, res|
@@ -39,27 +39,27 @@ class SendGridEventTest < Test::Unit::TestCase
39
39
  def valid_event_json
40
40
  [
41
41
  {
42
- "sg_message_id":"sendgrid_internal_message_id",
43
- "email": "john.doe@sendgrid.com",
44
- "timestamp": 1337197600,
45
- "smtp-id": "<4FB4041F.6080505@sendgrid.com>",
46
- "event": "processed"
42
+ "sg_message_id" => "sendgrid_internal_message_id",
43
+ "email" => "john.doe@sendgrid.com",
44
+ "timestamp" => 1337197600,
45
+ "smtp-id" => "<4FB4041F.6080505@sendgrid.com>",
46
+ "event" => "processed"
47
47
  },
48
48
  {
49
- "sg_message_id":"sendgrid_internal_message_id",
50
- "email": "john.doe@sendgrid.com",
51
- "timestamp": 1337966815,
52
- "category": "newuser",
53
- "event": "click",
54
- "url": "https://sendgrid.com"
49
+ "sg_message_id" => "sendgrid_internal_message_id",
50
+ "email" => "john.doe@sendgrid.com",
51
+ "timestamp" => 1337966815,
52
+ "category" => "newuser",
53
+ "event" => "click",
54
+ "url" => "https://sendgrid.com"
55
55
  },
56
56
  {
57
- "sg_message_id":"sendgrid_internal_message_id",
58
- "email": "john.doe@sendgrid.com",
59
- "timestamp": 1337969592,
60
- "smtp-id": "<20120525181309.C1A9B40405B3@Example-Mac.local>",
61
- "event": "group_unsubscribe",
62
- "asm_group_id": 42
57
+ "sg_message_id" => "sendgrid_internal_message_id",
58
+ "email" => "john.doe@sendgrid.com",
59
+ "timestamp" => 1337969592,
60
+ "smtp-id" => "<20120525181309.C1A9B40405B3@Example-Mac.local>",
61
+ "event" => "group_unsubscribe",
62
+ "asm_group_id" => 42
63
63
  }
64
64
  ].to_json
65
65
  end
@@ -78,6 +78,18 @@ class SendGridEventTest < Test::Unit::TestCase
78
78
  res
79
79
  end
80
80
 
81
+ def send_event_with_https(post_data)
82
+ require 'net/http'
83
+ http = Net::HTTP.new("hiroakis.com", 9191)
84
+ http.use_ssl = true
85
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
86
+ req = Net::HTTP::Post.new('/')
87
+ req.body = post_data
88
+ req["Content-Type"] = "application/json"
89
+ res = http.request(req)
90
+ res
91
+ end
92
+
81
93
  def test_with_valid_event_json
82
94
  d = create_driver %[
83
95
  type sendgrid_event
@@ -86,6 +98,7 @@ class SendGridEventTest < Test::Unit::TestCase
86
98
  tag sendgrid.event
87
99
  ]
88
100
 
101
+ sleep 1
89
102
  d.run do
90
103
  res = send_event(valid_event_json)
91
104
  assert_equal("200", res.code)
@@ -131,4 +144,47 @@ class SendGridEventTest < Test::Unit::TestCase
131
144
  end
132
145
  assert_equal(0, d.emits.size)
133
146
  end
147
+
148
+ # def test_https_with_valid_event_json
149
+ # d = create_driver %[
150
+ # type sendgrid_event
151
+ # host 127.0.0.1
152
+ # port 9191
153
+ # ssl true
154
+ # certificate /Users/hiroakis/work/hiroakis.com.pem
155
+ # private_key /Users/hiroakis/work/hiroakis.com.key
156
+ # tag sendgrid.event
157
+ # ]
158
+
159
+ # sleep 1
160
+ # d.run do
161
+ # res = send_event_with_https(valid_event_json)
162
+ # assert_equal("200", res.code)
163
+ # end
164
+
165
+ # assert_equal(3, d.emits.size)
166
+
167
+ # assert_equal("sendgrid.event", d.emits[0][0])
168
+ # assert_equal("sendgrid_internal_message_id", d.emits[0][2]["sg_message_id"])
169
+ # assert_equal("john.doe@sendgrid.com", d.emits[0][2]["email"])
170
+ # assert_equal(1337197600, d.emits[0][2]["timestamp"])
171
+ # assert_equal("<4FB4041F.6080505@sendgrid.com>", d.emits[0][2]["smtp-id"])
172
+ # assert_equal("processed", d.emits[0][2]["event"])
173
+
174
+ # assert_equal("sendgrid.event", d.emits[1][0])
175
+ # assert_equal("sendgrid_internal_message_id", d.emits[1][2]["sg_message_id"])
176
+ # assert_equal("john.doe@sendgrid.com", d.emits[1][2]["email"])
177
+ # assert_equal(1337966815, d.emits[1][2]["timestamp"])
178
+ # assert_equal("newuser", d.emits[1][2]["category"])
179
+ # assert_equal("click", d.emits[1][2]["event"])
180
+ # assert_equal("https://sendgrid.com", d.emits[1][2]["url"])
181
+
182
+ # assert_equal("sendgrid.event", d.emits[2][0])
183
+ # assert_equal("sendgrid_internal_message_id", d.emits[2][2]["sg_message_id"])
184
+ # assert_equal("john.doe@sendgrid.com", d.emits[2][2]["email"])
185
+ # assert_equal(1337969592, d.emits[2][2]["timestamp"])
186
+ # assert_equal("<20120525181309.C1A9B40405B3@Example-Mac.local>", d.emits[2][2]["smtp-id"])
187
+ # assert_equal("group_unsubscribe", d.emits[2][2]["event"])
188
+ # assert_equal(42, d.emits[2][2]["asm_group_id"])
189
+ # end
134
190
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-sendgrid-event
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroaki Sano
@@ -14,56 +14,56 @@ dependencies:
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.10'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.10'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: test-unit
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: fluentd
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  description:
@@ -73,7 +73,7 @@ executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
- - ".gitignore"
76
+ - .gitignore
77
77
  - Gemfile
78
78
  - README.md
79
79
  - Rakefile
@@ -91,17 +91,17 @@ require_paths:
91
91
  - lib
92
92
  required_ruby_version: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  required_rubygems_version: !ruby/object:Gem::Requirement
98
98
  requirements:
99
- - - ">="
99
+ - - '>='
100
100
  - !ruby/object:Gem::Version
101
101
  version: '0'
102
102
  requirements: []
103
103
  rubyforge_project:
104
- rubygems_version: 2.4.5
104
+ rubygems_version: 2.0.14
105
105
  signing_key:
106
106
  specification_version: 4
107
107
  summary: Fluent input plugin to receive sendgrid event.