talktome 1.3.1 → 1.3.2

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 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.