fluent-plugin-sendgrid-event 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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.