talktome 1.3.1 → 1.3.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
  SHA256:
3
- metadata.gz: 59ff5a2d705d895d7b3e03e7b6d6a9df13e6a818df6198abb238b6b2b13f34a1
4
- data.tar.gz: 8390299781fe6800b7e0e7b68fb5d0d504b4d90ee84c8c6452a1703b24ce2ad6
3
+ metadata.gz: 4ae24a6e1def52e8f6b89ba6dd6ade0f5dc7d41182d591a573215c1a75d49603
4
+ data.tar.gz: ad8ca169cd9619c21e0af5af7f862b65730105f95276881449ab1877626dcefb
5
5
  SHA512:
6
- metadata.gz: 60ad688912efaefcdc60847da49b07aaadf07fdfaed1036b4905db407ff7d97c3d190ae41f8d7b70537ddfd2a7cd2dd711aa2cd1f346f48c92f6e5cac94a9686
7
- data.tar.gz: a05b855ab7e15f29b39f8d42eee139d193788c876077e7ff0a3fd3819bb38314005a1eced8ba83c7c0d919319cb61a0adcf945e44e00847e142f1282031bebd3
6
+ metadata.gz: fee101432b406429b2c8761311e9616181766cd7904db0678adba35b32ebd26c3d709cd90cc1173545ac27d6ff310ca7edf284de3fc31215d831ea4d47ed7d6b
7
+ data.tar.gz: 6827ee15c92c7d6487aaac7b7c850c2e327a2bbc95a84f213f16593fb7017219779f6163ea702cf50e8d1010c3fffa8a69181890581e8427c7c5472a19477110
data/lib/talktome/app.rb CHANGED
@@ -19,9 +19,10 @@ module Talktome
19
19
  @import finitio/data
20
20
  Email = String(s | s =~ /^[^@]+@[^@]+$/ )
21
21
  {
22
- to :? Email
23
- reply_to :? Email
24
- ... : .Object
22
+ to :? Email
23
+ reply_to :? Email
24
+ in_reply_to :? String
25
+ ... : .Object
25
26
  }
26
27
  FIO
27
28
 
@@ -34,6 +35,7 @@ module Talktome
34
35
  user = load_user_from_info!
35
36
  settings.talktome.talktome(action, user, info.merge(allvars: as_array, subject: subject, footer: footer), [:email]){|email|
36
37
  email.reply_to = info[:reply_to] if info.has_key?(:reply_to)
38
+ email.in_reply_to = info[:in_reply_to] if info.has_key?(:in_reply_to)
37
39
  }
38
40
  [ 200, { "Content-Type" => "text/plain"}, ["Ok"] ]
39
41
  rescue JSON::ParserError
@@ -56,7 +58,8 @@ module Talktome
56
58
  end
57
59
 
58
60
  def load_user_from_info!
59
- if to = info[:to]
61
+ protected_fields = [:to, :in_reply_to]
62
+ if (info.keys & protected_fields).any?
60
63
  secret = Talktome.env('TALKTOME_BEARER_SECRET')
61
64
  fail!("Missing secret", 400) unless secret
62
65
  fail!("Invalid secret", 401) unless "Bearer #{secret}" == env["HTTP_AUTHORIZATION"]
@@ -16,6 +16,7 @@ module Talktome
16
16
  [
17
17
  :to,
18
18
  :reply_to,
19
+ :in_reply_to,
19
20
  :subject
20
21
  ].each do |which|
21
22
  if arg = message.metadata[which.to_s]
@@ -2,7 +2,7 @@ module Talktome
2
2
  module Version
3
3
  MAJOR = 1
4
4
  MINOR = 3
5
- TINY = 1
5
+ TINY = 2
6
6
  end
7
7
  VERSION = "#{Version::MAJOR}.#{Version::MINOR}.#{Version::TINY}"
8
8
  end
data/spec/app/test_app.rb CHANGED
@@ -163,6 +163,45 @@ module Talktome
163
163
  end
164
164
  end
165
165
 
166
+ context 'POST /support/, regarding the In-Reply-To' do
167
+ class ::Talktome::Message::Template
168
+ def raise_on_context_miss?
169
+ false
170
+ end
171
+ end
172
+
173
+ it 'forbids the usage of :in_reply_to unless a secret is provided' do
174
+ post "/support/", {
175
+ in_reply_to: '<F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@company.com>',
176
+ }.to_json, { "CONTENT_TYPE" => "application/json" }
177
+ expect(last_response.status).to eql(400)
178
+ expect(Mail::TestMailer.deliveries.length).to eql(0)
179
+ end
180
+
181
+ it 'does not allow setting the :in_reply_to without a valid AUTH token' do
182
+ Talktome.set_env('TALKTOME_BEARER_SECRET', "Invalid secret") do
183
+ post "/support/", {
184
+ in_reply_to: '<F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@company.com>',
185
+ }.to_json, { "CONTENT_TYPE" => "application/json" }
186
+ expect(last_response.status).to eql(401)
187
+ expect(Mail::TestMailer.deliveries.length).to eql(0)
188
+ end
189
+ end
190
+
191
+ it "lets override it by passing a inReplyTo field" do
192
+ Talktome.set_env('TALKTOME_BEARER_SECRET', "Some secret") do
193
+ header 'Authorization', 'Bearer Some secret'
194
+ post "/support/", {
195
+ to: 'client@company.com',
196
+ in_reply_to: '<F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@company.com>',
197
+ }.to_json, { "CONTENT_TYPE" => "application/json" }
198
+ expect(last_response).to be_ok
199
+ expect(Mail::TestMailer.deliveries.length).to eql(1)
200
+ expect(Mail::TestMailer.deliveries.first.in_reply_to).to eql('F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@company.com')
201
+ end
202
+ end
203
+ end
204
+
166
205
  context 'POST /multi-lingual/en/' do
167
206
 
168
207
  it 'works' do
@@ -0,0 +1,6 @@
1
+ ---
2
+ subject: Regarding your support request
3
+ ---
4
+ Our support team will get back to you ASAP regarding your request.
5
+
6
+ Best regards
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: talktome
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bernard Lambeau
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-11 00:00:00.000000000 Z
11
+ date: 2021-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -194,6 +194,7 @@ files:
194
194
  - spec/fixtures/contact-us/email.md
195
195
  - spec/fixtures/layouts/email.html
196
196
  - spec/fixtures/multi-lingual/en/email.md
197
+ - spec/fixtures/support/email.md
197
198
  - spec/fixtures/welcome/email.md
198
199
  - spec/fixtures/welcome/footer.mustache
199
200
  - spec/message/test_initialize.rb
@@ -222,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
222
223
  - !ruby/object:Gem::Version
223
224
  version: '0'
224
225
  requirements: []
225
- rubygems_version: 3.2.15
226
+ rubygems_version: 3.2.32
226
227
  signing_key:
227
228
  specification_version: 4
228
229
  summary: Talktome helps you talk to users by email, messaging, sms, etc.