mailgunner 2.1.0 → 2.2.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.
- data/LICENSE.txt +9 -0
- data/lib/mailgunner.rb +71 -55
- data/mailgunner.gemspec +3 -2
- data/spec/mailgunner_delivery_method_spec.rb +3 -3
- data/spec/mailgunner_spec.rb +32 -1
- metadata +31 -19
- checksums.yaml +0 -7
data/LICENSE.txt
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
Copyright (c) TIMCRAFT <http://timcraft.com>
|
2
|
+
|
3
|
+
This is an Open Source project licensed under the terms of the LGPLv3 license.
|
4
|
+
Please see <http://www.gnu.org/licenses/lgpl-3.0.html> for license text.
|
5
|
+
|
6
|
+
This code is distributed in the hope that it will be useful,
|
7
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
8
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
9
|
+
GNU Lesser General Public License for more details.
|
data/lib/mailgunner.rb
CHANGED
@@ -32,15 +32,23 @@ module Mailgunner
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def validate_address(value)
|
35
|
-
get('/
|
35
|
+
get('/v3/address/validate', address: value)
|
36
36
|
end
|
37
37
|
|
38
38
|
def parse_addresses(values)
|
39
|
-
get('/
|
39
|
+
get('/v3/address/parse', addresses: Array(values).join(','))
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_message(key)
|
43
|
+
get("/v3/domains/#{escape @domain}/messages/#{escape key}")
|
44
|
+
end
|
45
|
+
|
46
|
+
def get_mime_message(key)
|
47
|
+
get("/v3/domains/#{escape @domain}/messages/#{escape key}", {}, {'Accept' => 'message/rfc2822'})
|
40
48
|
end
|
41
49
|
|
42
50
|
def send_message(attributes = {})
|
43
|
-
post("/
|
51
|
+
post("/v3/#{escape @domain}/messages", attributes)
|
44
52
|
end
|
45
53
|
|
46
54
|
def send_mime(mail)
|
@@ -48,209 +56,217 @@ module Mailgunner
|
|
48
56
|
|
49
57
|
message = ['message', mail.encoded, {filename: 'message.mime'}]
|
50
58
|
|
51
|
-
multipart_post("/
|
59
|
+
multipart_post("/v3/#{escape @domain}/messages.mime", [to, message])
|
60
|
+
end
|
61
|
+
|
62
|
+
def delete_message(key)
|
63
|
+
delete("/v3/domains/#{escape @domain}/messages/#{escape key}")
|
52
64
|
end
|
53
65
|
|
54
66
|
def get_domains(params = {})
|
55
|
-
get('/
|
67
|
+
get('/v3/domains', params)
|
56
68
|
end
|
57
69
|
|
58
70
|
def get_domain(name)
|
59
|
-
get("/
|
71
|
+
get("/v3/domains/#{escape name}")
|
60
72
|
end
|
61
73
|
|
62
74
|
def add_domain(attributes = {})
|
63
|
-
post('/
|
75
|
+
post('/v3/domains', attributes)
|
64
76
|
end
|
65
77
|
|
66
78
|
def delete_domain(name)
|
67
|
-
delete("/
|
79
|
+
delete("/v3/domains/#{escape name}")
|
68
80
|
end
|
69
81
|
|
70
82
|
def get_credentials
|
71
|
-
get("/
|
83
|
+
get("/v3/domains/#{escape @domain}/credentials")
|
72
84
|
end
|
73
85
|
|
74
86
|
def add_credentials(attributes)
|
75
|
-
post("/
|
87
|
+
post("/v3/domains/#{escape @domain}/credentials", attributes)
|
76
88
|
end
|
77
89
|
|
78
90
|
def update_credentials(login, attributes)
|
79
|
-
put("/
|
91
|
+
put("/v3/domains/#{escape @domain}/credentials/#{escape login}", attributes)
|
80
92
|
end
|
81
93
|
|
82
94
|
def delete_credentials(login)
|
83
|
-
delete("/
|
95
|
+
delete("/v3/domains/#{escape @domain}/credentials/#{escape login}")
|
84
96
|
end
|
85
97
|
|
86
98
|
def get_unsubscribes(params = {})
|
87
|
-
get("/
|
99
|
+
get("/v3/#{escape @domain}/unsubscribes", params)
|
88
100
|
end
|
89
101
|
|
90
102
|
def get_unsubscribe(address)
|
91
|
-
get("/
|
103
|
+
get("/v3/#{escape @domain}/unsubscribes/#{escape address}")
|
92
104
|
end
|
93
105
|
|
94
106
|
def delete_unsubscribe(address_or_id)
|
95
|
-
delete("/
|
107
|
+
delete("/v3/#{escape @domain}/unsubscribes/#{escape address_or_id}")
|
96
108
|
end
|
97
109
|
|
98
110
|
def add_unsubscribe(attributes = {})
|
99
|
-
post("/
|
111
|
+
post("/v3/#{escape @domain}/unsubscribes", attributes)
|
100
112
|
end
|
101
113
|
|
102
114
|
def get_complaints(params = {})
|
103
|
-
get("/
|
115
|
+
get("/v3/#{escape @domain}/complaints", params)
|
104
116
|
end
|
105
117
|
|
106
118
|
def get_complaint(address)
|
107
|
-
get("/
|
119
|
+
get("/v3/#{escape @domain}/complaints/#{escape address}")
|
108
120
|
end
|
109
121
|
|
110
122
|
def add_complaint(attributes = {})
|
111
|
-
post("/
|
123
|
+
post("/v3/#{escape @domain}/complaints", attributes)
|
112
124
|
end
|
113
125
|
|
114
126
|
def delete_complaint(address)
|
115
|
-
delete("/
|
127
|
+
delete("/v3/#{escape @domain}/complaints/#{escape address}")
|
116
128
|
end
|
117
129
|
|
118
130
|
def get_bounces(params = {})
|
119
|
-
get("/
|
131
|
+
get("/v3/#{escape @domain}/bounces", params)
|
120
132
|
end
|
121
133
|
|
122
134
|
def get_bounce(address)
|
123
|
-
get("/
|
135
|
+
get("/v3/#{escape @domain}/bounces/#{escape address}")
|
124
136
|
end
|
125
137
|
|
126
138
|
def add_bounce(attributes = {})
|
127
|
-
post("/
|
139
|
+
post("/v3/#{escape @domain}/bounces", attributes)
|
128
140
|
end
|
129
141
|
|
130
142
|
def delete_bounce(address)
|
131
|
-
delete("/
|
143
|
+
delete("/v3/#{escape @domain}/bounces/#{escape address}")
|
132
144
|
end
|
133
145
|
|
134
146
|
def get_stats(params = {})
|
135
|
-
get("/
|
147
|
+
get("/v3/#{escape @domain}/stats", params)
|
136
148
|
end
|
137
149
|
|
138
150
|
def get_events(params = {})
|
139
|
-
get("/
|
151
|
+
get("/v3/#{escape @domain}/events", params)
|
140
152
|
end
|
141
153
|
|
142
154
|
def get_routes(params = {})
|
143
|
-
get('/
|
155
|
+
get('/v3/routes', params)
|
144
156
|
end
|
145
157
|
|
146
158
|
def get_route(id)
|
147
|
-
get("/
|
159
|
+
get("/v3/routes/#{escape id}")
|
148
160
|
end
|
149
161
|
|
150
162
|
def add_route(attributes = {})
|
151
|
-
post('/
|
163
|
+
post('/v3/routes', attributes)
|
152
164
|
end
|
153
165
|
|
154
166
|
def update_route(id, attributes = {})
|
155
|
-
put("/
|
167
|
+
put("/v3/routes/#{escape id}", attributes)
|
156
168
|
end
|
157
169
|
|
158
170
|
def delete_route(id)
|
159
|
-
delete("/
|
171
|
+
delete("/v3/routes/#{escape id}")
|
160
172
|
end
|
161
173
|
|
162
174
|
def get_campaigns(params = {})
|
163
|
-
get("/
|
175
|
+
get("/v3/#{escape @domain}/campaigns", params)
|
164
176
|
end
|
165
177
|
|
166
178
|
def get_campaign(id)
|
167
|
-
get("/
|
179
|
+
get("/v3/#{escape @domain}/campaigns/#{escape id}")
|
168
180
|
end
|
169
181
|
|
170
182
|
def add_campaign(attributes = {})
|
171
|
-
post("/
|
183
|
+
post("/v3/#{escape @domain}/campaigns", attributes)
|
172
184
|
end
|
173
185
|
|
174
186
|
def update_campaign(id, attributes = {})
|
175
|
-
put("/
|
187
|
+
put("/v3/#{escape @domain}/campaigns/#{escape id}", attributes)
|
176
188
|
end
|
177
189
|
|
178
190
|
def delete_campaign(id)
|
179
|
-
delete("/
|
191
|
+
delete("/v3/#{escape @domain}/campaigns/#{escape id}")
|
180
192
|
end
|
181
193
|
|
182
194
|
def get_campaign_events(campaign_id, params = {})
|
183
|
-
get("/
|
195
|
+
get("/v3/#{escape @domain}/campaigns/#{escape campaign_id}/events", params)
|
184
196
|
end
|
185
197
|
|
186
198
|
def get_campaign_stats(campaign_id, params = {})
|
187
|
-
get("/
|
199
|
+
get("/v3/#{escape @domain}/campaigns/#{escape campaign_id}/stats", params)
|
188
200
|
end
|
189
201
|
|
190
202
|
def get_campaign_clicks(campaign_id, params = {})
|
191
|
-
get("/
|
203
|
+
get("/v3/#{escape @domain}/campaigns/#{escape campaign_id}/clicks", params)
|
192
204
|
end
|
193
205
|
|
194
206
|
def get_campaign_opens(campaign_id, params = {})
|
195
|
-
get("/
|
207
|
+
get("/v3/#{escape @domain}/campaigns/#{escape campaign_id}/opens", params)
|
196
208
|
end
|
197
209
|
|
198
210
|
def get_campaign_unsubscribes(campaign_id, params = {})
|
199
|
-
get("/
|
211
|
+
get("/v3/#{escape @domain}/campaigns/#{escape campaign_id}/unsubscribes", params)
|
200
212
|
end
|
201
213
|
|
202
214
|
def get_campaign_complaints(campaign_id, params = {})
|
203
|
-
get("/
|
215
|
+
get("/v3/#{escape @domain}/campaigns/#{escape campaign_id}/complaints", params)
|
204
216
|
end
|
205
217
|
|
206
218
|
def get_lists(params = {})
|
207
|
-
get('/
|
219
|
+
get('/v3/lists', params)
|
208
220
|
end
|
209
221
|
|
210
222
|
def get_list(address)
|
211
|
-
get("/
|
223
|
+
get("/v3/lists/#{escape address}")
|
212
224
|
end
|
213
225
|
|
214
226
|
def add_list(attributes = {})
|
215
|
-
post('/
|
227
|
+
post('/v3/lists', attributes)
|
216
228
|
end
|
217
229
|
|
218
230
|
def update_list(address, attributes = {})
|
219
|
-
put("/
|
231
|
+
put("/v3/lists/#{escape address}", attributes)
|
220
232
|
end
|
221
233
|
|
222
234
|
def delete_list(address)
|
223
|
-
delete("/
|
235
|
+
delete("/v3/lists/#{escape address}")
|
224
236
|
end
|
225
237
|
|
226
238
|
def get_list_members(list_address, params = {})
|
227
|
-
get("/
|
239
|
+
get("/v3/lists/#{escape list_address}/members", params)
|
228
240
|
end
|
229
241
|
|
230
242
|
def get_list_member(list_address, member_address)
|
231
|
-
get("/
|
243
|
+
get("/v3/lists/#{escape list_address}/members/#{escape member_address}")
|
232
244
|
end
|
233
245
|
|
234
246
|
def add_list_member(list_address, member_attributes)
|
235
|
-
post("/
|
247
|
+
post("/v3/lists/#{escape list_address}/members", member_attributes)
|
236
248
|
end
|
237
249
|
|
238
250
|
def update_list_member(list_address, member_address, member_attributes)
|
239
|
-
put("/
|
251
|
+
put("/v3/lists/#{escape list_address}/members/#{escape member_address}", member_attributes)
|
240
252
|
end
|
241
253
|
|
242
254
|
def delete_list_member(list_address, member_address)
|
243
|
-
delete("/
|
255
|
+
delete("/v3/lists/#{escape list_address}/members/#{escape member_address}")
|
244
256
|
end
|
245
257
|
|
246
258
|
def get_list_stats(list_address)
|
247
|
-
get("/
|
259
|
+
get("/v3/lists/#{escape list_address}/stats")
|
248
260
|
end
|
249
261
|
|
250
262
|
private
|
251
263
|
|
252
|
-
def get(path, params = {})
|
253
|
-
|
264
|
+
def get(path, params = {}, headers = {})
|
265
|
+
request = Net::HTTP::Get.new(request_uri(path, params))
|
266
|
+
|
267
|
+
headers.each { |k, v| request[k] = v }
|
268
|
+
|
269
|
+
transmit(request)
|
254
270
|
end
|
255
271
|
|
256
272
|
def post(path, attributes = {})
|
data/mailgunner.gemspec
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'mailgunner'
|
3
|
-
s.version = '2.
|
3
|
+
s.version = '2.2.0'
|
4
|
+
s.license = 'LGPL-3.0'
|
4
5
|
s.platform = Gem::Platform::RUBY
|
5
6
|
s.authors = ['Tim Craft']
|
6
7
|
s.email = ['mail@timcraft.com']
|
7
8
|
s.homepage = 'http://github.com/timcraft/mailgunner'
|
8
9
|
s.description = 'A Ruby wrapper for the Mailgun API'
|
9
10
|
s.summary = 'See description'
|
10
|
-
s.files = Dir.glob('{lib,spec}/**/*') + %w(README.md mailgunner.gemspec)
|
11
|
+
s.files = Dir.glob('{lib,spec}/**/*') + %w(LICENSE.txt README.md mailgunner.gemspec)
|
11
12
|
s.required_ruby_version = '>= 1.9.3'
|
12
13
|
s.add_development_dependency('rake', '~> 10.1')
|
13
14
|
s.add_development_dependency('webmock', '~> 1.18')
|
@@ -18,7 +18,7 @@ describe 'Mailgunner::DeliveryMethod' do
|
|
18
18
|
|
19
19
|
@domain = 'samples.mailgun.org'
|
20
20
|
|
21
|
-
@base_url = "https://api:#@api_key@api.mailgun.net/
|
21
|
+
@base_url = "https://api:#@api_key@api.mailgun.net/v3"
|
22
22
|
|
23
23
|
@address = 'user@example.com'
|
24
24
|
|
@@ -30,7 +30,7 @@ describe 'Mailgunner::DeliveryMethod' do
|
|
30
30
|
it 'delivers the mail to mailgun in mime format' do
|
31
31
|
stub_request(:post, "#@base_url/#@domain/messages.mime")
|
32
32
|
|
33
|
-
ExampleMailer.registration_confirmation(email: @address).
|
33
|
+
ExampleMailer.registration_confirmation(email: @address).deliver_now
|
34
34
|
end
|
35
35
|
|
36
36
|
it 'raises an exception if the api returns an error' do
|
@@ -40,7 +40,7 @@ describe 'Mailgunner::DeliveryMethod' do
|
|
40
40
|
body: '{"message": "Invalid API key"}'
|
41
41
|
})
|
42
42
|
|
43
|
-
exception = proc { ExampleMailer.registration_confirmation(email: @address).
|
43
|
+
exception = proc { ExampleMailer.registration_confirmation(email: @address).deliver_now }.must_raise(Mailgunner::Error)
|
44
44
|
|
45
45
|
exception.message.must_include('Invalid API key')
|
46
46
|
end
|
data/spec/mailgunner_spec.rb
CHANGED
@@ -10,7 +10,7 @@ describe 'Mailgunner::Client' do
|
|
10
10
|
|
11
11
|
@api_key = 'xxx'
|
12
12
|
|
13
|
-
@base_url = "https://api:#{@api_key}@api.mailgun.net/
|
13
|
+
@base_url = "https://api:#{@api_key}@api.mailgun.net/v3"
|
14
14
|
|
15
15
|
@json_response = {headers: {'Content-Type' => 'application/json;charset=utf-8'}, body: '{"key":"value"}'}
|
16
16
|
|
@@ -77,6 +77,27 @@ describe 'Mailgunner::Client' do
|
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
+
describe 'get_message method' do
|
81
|
+
it 'fetches the domain message resource with the given key and returns the response object' do
|
82
|
+
key = 'WyIzMmkey'
|
83
|
+
|
84
|
+
stub_request(:get, "#@base_url/domains/#@domain/messages/#{key}").to_return(@json_response)
|
85
|
+
|
86
|
+
@client.get_message(key).must_equal(@json_response_object)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe 'get_mime_message method' do
|
91
|
+
it 'fetches the domain message resource with the given key and returns the response object' do
|
92
|
+
key = 'WyIzMmkey'
|
93
|
+
|
94
|
+
stub_request(:get, "#@base_url/domains/#@domain/messages/#{key}").
|
95
|
+
with(headers: {'Accept' => 'message/rfc2822'}).to_return(@json_response)
|
96
|
+
|
97
|
+
@client.get_mime_message(key).must_equal(@json_response_object)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
80
101
|
describe 'send_message method' do
|
81
102
|
it 'posts to the domain messages resource and returns the response object' do
|
82
103
|
stub_request(:post, "#@base_url/#@domain/messages").to_return(@json_response)
|
@@ -119,6 +140,16 @@ describe 'Mailgunner::Client' do
|
|
119
140
|
end
|
120
141
|
end
|
121
142
|
|
143
|
+
describe 'delete_message method' do
|
144
|
+
it 'deletes the domain message resource with the given key and returns the response object' do
|
145
|
+
key = 'WyIzMmkey'
|
146
|
+
|
147
|
+
stub_request(:delete, "#@base_url/domains/#@domain/messages/#{key}").to_return(@json_response)
|
148
|
+
|
149
|
+
@client.delete_message(key)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
122
153
|
describe 'get_domains method' do
|
123
154
|
it 'fetches the domains resource and returns the response object' do
|
124
155
|
stub_request(:get, "#@base_url/domains").to_return(@json_response)
|
metadata
CHANGED
@@ -1,69 +1,78 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mailgunner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Tim Craft
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2015-
|
12
|
+
date: 2015-04-06 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: rake
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- -
|
19
|
+
- - ~>
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '10.1'
|
20
22
|
type: :development
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - ~>
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '10.1'
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: webmock
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
|
-
- -
|
35
|
+
- - ~>
|
32
36
|
- !ruby/object:Gem::Version
|
33
37
|
version: '1.18'
|
34
38
|
type: :development
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
|
-
- -
|
43
|
+
- - ~>
|
39
44
|
- !ruby/object:Gem::Version
|
40
45
|
version: '1.18'
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: mail
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
|
-
- -
|
51
|
+
- - ~>
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: '2.5'
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - ~>
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '2.5'
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: actionmailer
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
|
-
- -
|
67
|
+
- - ~>
|
60
68
|
- !ruby/object:Gem::Version
|
61
69
|
version: '4.0'
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
|
-
- -
|
75
|
+
- - ~>
|
67
76
|
- !ruby/object:Gem::Version
|
68
77
|
version: '4.0'
|
69
78
|
description: A Ruby wrapper for the Mailgun API
|
@@ -73,33 +82,36 @@ executables: []
|
|
73
82
|
extensions: []
|
74
83
|
extra_rdoc_files: []
|
75
84
|
files:
|
76
|
-
- README.md
|
77
|
-
- lib/mailgunner.rb
|
78
85
|
- lib/mailgunner/delivery_method.rb
|
79
|
-
- mailgunner.
|
86
|
+
- lib/mailgunner.rb
|
80
87
|
- spec/mailgunner_delivery_method_spec.rb
|
81
88
|
- spec/mailgunner_spec.rb
|
89
|
+
- LICENSE.txt
|
90
|
+
- README.md
|
91
|
+
- mailgunner.gemspec
|
82
92
|
homepage: http://github.com/timcraft/mailgunner
|
83
|
-
licenses:
|
84
|
-
|
93
|
+
licenses:
|
94
|
+
- LGPL-3.0
|
85
95
|
post_install_message:
|
86
96
|
rdoc_options: []
|
87
97
|
require_paths:
|
88
98
|
- lib
|
89
99
|
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
90
101
|
requirements:
|
91
|
-
- -
|
102
|
+
- - ! '>='
|
92
103
|
- !ruby/object:Gem::Version
|
93
104
|
version: 1.9.3
|
94
105
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
95
107
|
requirements:
|
96
|
-
- -
|
108
|
+
- - ! '>='
|
97
109
|
- !ruby/object:Gem::Version
|
98
110
|
version: '0'
|
99
111
|
requirements: []
|
100
112
|
rubyforge_project:
|
101
|
-
rubygems_version:
|
113
|
+
rubygems_version: 1.8.23.2
|
102
114
|
signing_key:
|
103
|
-
specification_version:
|
115
|
+
specification_version: 3
|
104
116
|
summary: See description
|
105
117
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: c1e24be43e9330f9378bbd977baabea868042090
|
4
|
-
data.tar.gz: 812d150cb717e63be9e99b66c2c695981d711a7f
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 00d1306a5501800bfdc87ec29c9244dd232cd126c87ce7c35a5773100336be0afc4d3cf2c166bfc2b31189e59c71d280328be005b24c83ebda8c2163db2d4ee0
|
7
|
-
data.tar.gz: 06664445a8ece38b1dee4bc92850867ac1a098f2aa212ce6be0341ba962dec6838e9d04783157325f7a7838d04cefbe02a7d31def684c3da6a2e52e69c43630a
|