cachai 0.2.7 → 0.2.8
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 +4 -4
- data/cachai.gemspec +1 -1
- data/lib/cachai.rb +22 -9
- data/lib/models.rb +4 -0
- data/spec/post_comments_spec.rb +69 -0
- data/spec/spec_helper.rb +3 -3
- metadata +1 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d538da3df5551924790c3a94e17161d09dc20dd4
|
4
|
+
data.tar.gz: a9ee1fe10e59f1a52a17d7c63bfb77f6a7d59d99
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 199c5691844b8dc21449da8315c9a2a76911394aaa05462dde71e94572b22f9f7dc6cb771f18ffa2871dab2713ea5925f8081d853b65b8a08d9136201b2c5de2
|
7
|
+
data.tar.gz: 79d440f2f003ddb363dd7ffb8816e8e3f8c73292caf755677c0ff82f23bda7922dbc97b46c19610e3499681ebba8a126962fbc5d490e4d2fc7d1e3cbc7a9a870
|
data/cachai.gemspec
CHANGED
@@ -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 = "cachai"
|
7
|
-
spec.version = '0.2.
|
7
|
+
spec.version = '0.2.8'
|
8
8
|
spec.authors = ["Tomás Pollak"]
|
9
9
|
spec.email = ["tomas@forkhq.com"]
|
10
10
|
spec.description = %q{Middleware for embedabble comments.}
|
data/lib/cachai.rb
CHANGED
@@ -106,9 +106,12 @@ module Cachai
|
|
106
106
|
}
|
107
107
|
|
108
108
|
response = Response.create!(attrs.merge(:post_id => post.id))
|
109
|
-
|
110
109
|
Cachai.clear_cache(data['path'])
|
111
|
-
|
110
|
+
|
111
|
+
if response.approved?
|
112
|
+
notify_new_response_to_admin(response, data['path']) if @recipient
|
113
|
+
# notify_new_response_to_parent(response, data['path']) if response.parent
|
114
|
+
end
|
112
115
|
|
113
116
|
headers['Access-Control-Allow-Origin'] = data['protocol'] + '//' + data['domain']
|
114
117
|
json({ :status => 'ok', :comment => response })
|
@@ -181,15 +184,25 @@ module Cachai
|
|
181
184
|
false
|
182
185
|
end
|
183
186
|
|
184
|
-
def
|
187
|
+
def notify_new_response_to_admin(response, path)
|
188
|
+
subject = "Nuevo comentario de #{response.author_name} at #{path}"
|
189
|
+
send_email(content: response.content, to: @recipient, path: path, subject: subject)
|
190
|
+
end
|
191
|
+
|
192
|
+
def notify_new_response_to_parent(response, path)
|
193
|
+
subject = "Respuesta de #{response.author_name} a tu comentario en #{path}"
|
194
|
+
send_email(content: response.content, to: response.parent.author_email, path: path, subject: subject)
|
195
|
+
end
|
196
|
+
|
197
|
+
def send_email(data)
|
185
198
|
RestClient.post "https://api:#{@mailgun_api_key}"\
|
186
199
|
"@api.mailgun.net/v3/#{@mailgun_domain}/messages",
|
187
|
-
:from => 'comments@' + Cachai.domain,
|
188
|
-
:to =>
|
189
|
-
:subject =>
|
190
|
-
:text => "#{
|
191
|
-
rescue => e
|
192
|
-
|
200
|
+
:from => data[:from] || 'comments@' + Cachai.domain,
|
201
|
+
:to => data[:to],
|
202
|
+
:subject => data[:subject],
|
203
|
+
:text => "#{data[:content]}\n\n--\nhttp://#{Cachai.domain}#{data[:path]}"
|
204
|
+
# rescue => e
|
205
|
+
# puts "MAIL ERROR: #{e.message}"
|
193
206
|
end
|
194
207
|
|
195
208
|
end
|
data/lib/models.rb
CHANGED
@@ -133,6 +133,10 @@ module Cachai
|
|
133
133
|
scope :top_level, lambda { where(:parent_id => 0) }
|
134
134
|
scope :nested, lambda { where("parent_id != 0") }
|
135
135
|
|
136
|
+
def parent
|
137
|
+
@parent ||= Response.find(parent_id) rescue nil
|
138
|
+
end
|
139
|
+
|
136
140
|
def as_json(options = {})
|
137
141
|
{
|
138
142
|
:id => id,
|
data/spec/post_comments_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
require 'rest-client'
|
2
3
|
|
3
4
|
describe 'post comment' do
|
4
5
|
include Rack::Test::Methods
|
@@ -90,6 +91,10 @@ describe 'post comment' do
|
|
90
91
|
|
91
92
|
describe 'valid data' do
|
92
93
|
|
94
|
+
before do
|
95
|
+
allow(RestClient).to receive(:post).and_return(true)
|
96
|
+
end
|
97
|
+
|
93
98
|
describe 'unexisting post' do
|
94
99
|
|
95
100
|
before do
|
@@ -120,6 +125,16 @@ describe 'post comment' do
|
|
120
125
|
expect(Cachai::Response.last.approved).to eql(1)
|
121
126
|
end
|
122
127
|
|
128
|
+
it 'sends emails' do
|
129
|
+
expect(RestClient).to receive(:post).with("https://api:key-aoidjoaijdoaijdoaijsd@api.mailgun.net/v3/foobartest1234.mailgun.org/messages", {
|
130
|
+
:from =>"comments@domain.com",
|
131
|
+
:to =>"test@example.com",
|
132
|
+
:subject =>"Nuevo comentario de Some author at /another/blog/post.html",
|
133
|
+
:text =>"New comment\n\n--\nhttp://domain.com/another/blog/post.html"
|
134
|
+
}).and_return(true)
|
135
|
+
post_comment
|
136
|
+
end
|
137
|
+
|
123
138
|
end
|
124
139
|
|
125
140
|
describe 'if blocked' do
|
@@ -135,6 +150,11 @@ describe 'post comment' do
|
|
135
150
|
expect(Cachai::Response.last.approved).to eql(0)
|
136
151
|
end
|
137
152
|
|
153
|
+
it 'does not send emails' do
|
154
|
+
expect(RestClient).not_to receive(:post)
|
155
|
+
post_comment({}, {'REMOTE_ADDR' => '12.12.12.12'})
|
156
|
+
end
|
157
|
+
|
138
158
|
end
|
139
159
|
|
140
160
|
end
|
@@ -166,6 +186,50 @@ describe 'post comment' do
|
|
166
186
|
expect(Cachai::Response.last.approved).to eql(1)
|
167
187
|
end
|
168
188
|
|
189
|
+
it 'sends admin emails' do
|
190
|
+
expect(RestClient).to receive(:post).with("https://api:key-aoidjoaijdoaijdoaijsd@api.mailgun.net/v3/foobartest1234.mailgun.org/messages", {
|
191
|
+
:from =>"comments@domain.com",
|
192
|
+
:to =>"test@example.com",
|
193
|
+
:subject =>"Nuevo comentario de Some author at /another/blog/post.html",
|
194
|
+
:text =>"New comment\n\n--\nhttp://domain.com/another/blog/post.html"
|
195
|
+
}).and_return(true)
|
196
|
+
|
197
|
+
post_comment
|
198
|
+
end
|
199
|
+
|
200
|
+
describe 'if comment is response to parent' do
|
201
|
+
|
202
|
+
before do
|
203
|
+
post = Cachai::Post.find_by_path('/another/blog/post.html')
|
204
|
+
@parent = post.responses.create!({
|
205
|
+
:content => 'Content',
|
206
|
+
:author_name => 'Some guy',
|
207
|
+
:author_email => 'some@email.com',
|
208
|
+
:author_ip => '22.33.44.55'
|
209
|
+
})
|
210
|
+
end
|
211
|
+
|
212
|
+
it 'sends email both to admin and to parent comment guy' do
|
213
|
+
|
214
|
+
expect(RestClient).to receive(:post).with("https://api:key-aoidjoaijdoaijdoaijsd@api.mailgun.net/v3/foobartest1234.mailgun.org/messages", {
|
215
|
+
:from => "comments@domain.com",
|
216
|
+
:to => "test@example.com",
|
217
|
+
:subject => "Nuevo comentario de Some author at /another/blog/post.html",
|
218
|
+
:text => "New comment\n\n--\nhttp://domain.com/another/blog/post.html"
|
219
|
+
}).and_return(true)
|
220
|
+
|
221
|
+
expect(RestClient).to receive(:post).with("https://api:key-aoidjoaijdoaijdoaijsd@api.mailgun.net/v3/foobartest1234.mailgun.org/messages", {
|
222
|
+
:from => "comments@domain.com",
|
223
|
+
:to => "some@email.com",
|
224
|
+
:subject => "Respuesta de Some author a tu comentario en /another/blog/post.html",
|
225
|
+
:text => "New comment\n\n--\nhttp://domain.com/another/blog/post.html"
|
226
|
+
}).and_return(true)
|
227
|
+
|
228
|
+
post_comment(parent_id: @parent.id)
|
229
|
+
end
|
230
|
+
|
231
|
+
end
|
232
|
+
|
169
233
|
end
|
170
234
|
|
171
235
|
describe 'if blocked' do
|
@@ -181,6 +245,11 @@ describe 'post comment' do
|
|
181
245
|
expect(Cachai::Response.last.approved).to eql(0)
|
182
246
|
end
|
183
247
|
|
248
|
+
it 'does not send emails' do
|
249
|
+
expect(RestClient).not_to receive(:post)
|
250
|
+
post_comment({}, {'REMOTE_ADDR' => '12.12.12.12'})
|
251
|
+
end
|
252
|
+
|
184
253
|
end
|
185
254
|
|
186
255
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -20,9 +20,9 @@ class TestApp < Sinatra::Base
|
|
20
20
|
:domain => 'domain.com',
|
21
21
|
:recipient => 'test@example.com',
|
22
22
|
:duration => 30,
|
23
|
-
:
|
24
|
-
:
|
25
|
-
:
|
23
|
+
:mailgun => {
|
24
|
+
domain: 'foobartest1234.mailgun.org',
|
25
|
+
api_key: 'key-aoidjoaijdoaijdoaijsd'
|
26
26
|
},
|
27
27
|
:blocked_ips => [ "12.12.12.12" ]
|
28
28
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cachai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomás Pollak
|
@@ -198,4 +198,3 @@ test_files:
|
|
198
198
|
- spec/post_comments_spec.rb
|
199
199
|
- spec/spec_helper.rb
|
200
200
|
- test/app_test.rb
|
201
|
-
has_rdoc:
|