incoming 0.1.5 → 0.1.6
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/lib/incoming.rb +1 -1
- data/lib/incoming/strategies/postmark.rb +36 -9
- data/lib/incoming/strategy.rb +1 -1
- metadata +19 -35
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1342785e330570e8dead5676e9f6bfbbfc5e7c71
|
4
|
+
data.tar.gz: 131181e9b82a02b6fa5532cd57d1a00c1e77382a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: bedd0840a7fd2cb6ac7fa8e8f8737b041f4e8ee2cd320fa84225ce7a16c08b1ce2f614a2a18e1429785c97a121f263ad75dd54da7738b3c3fa24c01fe5220122
|
7
|
+
data.tar.gz: cab1511a00c240863aabef46d66d721393b168d4b4316350f481c02eeb803bcb172072f5f45f12033f694ca9116c21e47ef45d7e2baf12009991135b9e6c1003
|
data/lib/incoming.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'json'
|
2
2
|
require 'base64'
|
3
3
|
|
4
4
|
module Incoming
|
@@ -7,25 +7,52 @@ module Incoming
|
|
7
7
|
include Incoming::Strategy
|
8
8
|
|
9
9
|
def initialize(request)
|
10
|
-
|
10
|
+
source = JSON.parse(request.body.read)
|
11
11
|
|
12
|
-
|
12
|
+
headers = parse_headers(source['Headers'])
|
13
|
+
from = parse_address(source['FromFull'])
|
14
|
+
to = source['ToFull'].map{|h| parse_address(h)}
|
15
|
+
cc = source['CcFull'].map{|h| parse_address(h)}
|
13
16
|
|
14
17
|
@message = Mail.new do
|
15
|
-
headers
|
18
|
+
headers headers
|
19
|
+
from from
|
20
|
+
to to
|
21
|
+
cc cc
|
22
|
+
reply_to source['ReplyTo']
|
23
|
+
subject source['Subject']
|
24
|
+
date source['Date']
|
16
25
|
|
17
|
-
body
|
26
|
+
body source['TextBody']
|
18
27
|
|
19
28
|
html_part do
|
20
29
|
content_type 'text/html; charset=UTF-8'
|
21
|
-
body
|
22
|
-
end if
|
30
|
+
body CGI.unescapeHTML(source['HtmlBody'])
|
31
|
+
end if source['HtmlBody']
|
23
32
|
|
24
|
-
|
25
|
-
add_file :filename => a
|
33
|
+
source['Attachments'].each do |a|
|
34
|
+
add_file :filename => a['Name'], :content => Base64.decode64(a['Content'])
|
35
|
+
end
|
36
|
+
|
37
|
+
%w(MailboxHash MessageID Tag).each do |key|
|
38
|
+
if source[key] =~ /\S/
|
39
|
+
header[key] = source[key]
|
40
|
+
end
|
26
41
|
end
|
27
42
|
end
|
28
43
|
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def parse_headers(source)
|
48
|
+
source.inject({}){|hash,obj| hash[obj['Name']] = obj['Value']; hash}
|
49
|
+
end
|
50
|
+
|
51
|
+
def parse_address(hash)
|
52
|
+
Mail::Address.new(hash['Email']).tap do |address|
|
53
|
+
address.display_name = hash['Name']
|
54
|
+
end.to_s
|
55
|
+
end
|
29
56
|
end
|
30
57
|
end
|
31
58
|
end
|
data/lib/incoming/strategy.rb
CHANGED
@@ -111,7 +111,7 @@ module Incoming
|
|
111
111
|
# Returns Hash for Mail::Message#add_file
|
112
112
|
def attachment_from_params(uploaded_file_or_hash)
|
113
113
|
filename, content = if Hash === uploaded_file_or_hash
|
114
|
-
[uploaded_file_or_hash[
|
114
|
+
[uploaded_file_or_hash[:filename], uploaded_file_or_hash[:tempfile].read]
|
115
115
|
else
|
116
116
|
[uploaded_file_or_hash.original_filename, uploaded_file_or_hash.read]
|
117
117
|
end
|
metadata
CHANGED
@@ -1,78 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: incoming
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.6
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Joshua Wood
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-12-27 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
14
|
+
name: rack
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
19
|
+
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
26
|
+
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
28
|
+
name: mail
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
33
|
+
version: '2.4'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
40
|
+
version: '2.4'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rspec
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
description: Incoming! standardizes various mail parse apis, making it a snap to receive
|
@@ -97,32 +88,25 @@ files:
|
|
97
88
|
- bin/http_post
|
98
89
|
homepage: https://github.com/honeybadger-io/incoming
|
99
90
|
licenses: []
|
91
|
+
metadata: {}
|
100
92
|
post_install_message:
|
101
93
|
rdoc_options: []
|
102
94
|
require_paths:
|
103
95
|
- lib
|
104
96
|
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
97
|
requirements:
|
107
|
-
- -
|
98
|
+
- - '>='
|
108
99
|
- !ruby/object:Gem::Version
|
109
100
|
version: '0'
|
110
|
-
segments:
|
111
|
-
- 0
|
112
|
-
hash: 1004414202407084554
|
113
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
102
|
requirements:
|
116
|
-
- -
|
103
|
+
- - '>='
|
117
104
|
- !ruby/object:Gem::Version
|
118
105
|
version: '0'
|
119
|
-
segments:
|
120
|
-
- 0
|
121
|
-
hash: 1004414202407084554
|
122
106
|
requirements: []
|
123
107
|
rubyforge_project:
|
124
|
-
rubygems_version: 1.
|
108
|
+
rubygems_version: 2.1.5
|
125
109
|
signing_key:
|
126
|
-
specification_version:
|
110
|
+
specification_version: 4
|
127
111
|
summary: Incoming! helps you receive email in your Rack apps.
|
128
112
|
test_files: []
|