From 64f4669302bff7871eadaaa5ac9623e43f852f8e Mon Sep 17 00:00:00 2001 From: Daniel Puglisi Date: Fri, 16 Aug 2019 09:13:57 +0200 Subject: [PATCH 1/8] remove spec.has_rdoc --- textris.gemspec | 1 - 1 file changed, 1 deletion(-) diff --git a/textris.gemspec b/textris.gemspec index 9d34a16..df1ad22 100644 --- a/textris.gemspec +++ b/textris.gemspec @@ -16,7 +16,6 @@ Gem::Specification.new do |spec| spec.description = "Implement texter classes for sending SMS messages in similar way to how e-mails are sent with ActionMailer-based mailers. Take advantage of e-mail proxying and enhanced phone number parsing, among others." spec.files = Dir["lib/**/*.rb"] - spec.has_rdoc = false spec.extra_rdoc_files = ["README.md"] spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] From 76135e3928c7f0d69640f289faa19303097f9f94 Mon Sep 17 00:00:00 2001 From: Daniel Puglisi Date: Fri, 16 Aug 2019 09:52:53 +0200 Subject: [PATCH 2/8] replace render_anywhere gem with Rails native ActionController::Renderer --- lib/textris/base.rb | 29 ++++++++++++----------------- textris.gemspec | 1 - 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/lib/textris/base.rb b/lib/textris/base.rb index 92c0070..553c282 100644 --- a/lib/textris/base.rb +++ b/lib/textris/base.rb @@ -1,16 +1,5 @@ -require 'render_anywhere' - module Textris class Base - class RenderingController < RenderAnywhere::RenderingController - layout false - - def default_url_options - ActionMailer::Base.default_url_options || {} - end - end - - include RenderAnywhere extend Textris::Delay::Sidekiq class << self @@ -53,9 +42,15 @@ def call_action end def render_content - set_instance_variables_for_rendering - - render(:template => template_name, :formats => ['text'], :locale => @locale) + renderer = ::ApplicationController.renderer.new + + renderer.render( + template: template_name, + layout: false, + formats: [:html], + locale: @locale, + assigns: set_instance_variables_for_rendering + ) end protected @@ -84,9 +79,9 @@ def template_name end def set_instance_variables_for_rendering - instance_variables.each do |var| - set_instance_variable(var.to_s.sub('@', ''), instance_variable_get(var)) - end + instance_variables.map do |var| + [var.to_s.sub('@', ''), instance_variable_get(var)] + end.to_h end end end diff --git a/textris.gemspec b/textris.gemspec index df1ad22..dfdfc58 100644 --- a/textris.gemspec +++ b/textris.gemspec @@ -35,5 +35,4 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency 'activejob', '>= 4.2' spec.add_runtime_dependency 'activesupport', '>= 4.2' spec.add_runtime_dependency 'phony', '~> 2.8' - spec.add_runtime_dependency 'render_anywhere', '~> 0.0' end From 083f2f2c9803e76d05734c1626d23c0562a4e355 Mon Sep 17 00:00:00 2001 From: Daniel Puglisi Date: Fri, 16 Aug 2019 14:47:36 +0200 Subject: [PATCH 3/8] use bundler 2.0 --- textris.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/textris.gemspec b/textris.gemspec index dfdfc58..d68b10f 100644 --- a/textris.gemspec +++ b/textris.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] - spec.add_development_dependency 'bundler', '~> 1.6' + spec.add_development_dependency 'bundler', '~> 2.0' spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.4' spec.add_development_dependency 'rake', '~> 10.0' spec.add_development_dependency 'rspec', '~> 3.1' From aaa723df733dcf1ac78e639e32a0289fefa73a44 Mon Sep 17 00:00:00 2001 From: Daniel Puglisi Date: Fri, 16 Aug 2019 15:39:36 +0200 Subject: [PATCH 4/8] fix tests --- spec/textris/base_spec.rb | 23 +---------------------- spec/textris/message_spec.rb | 2 +- 2 files changed, 2 insertions(+), 23 deletions(-) diff --git a/spec/textris/base_spec.rb b/spec/textris/base_spec.rb index 651591b..3580200 100644 --- a/spec/textris/base_spec.rb +++ b/spec/textris/base_spec.rb @@ -116,7 +116,7 @@ def set_instance_variable(key, value) it 'defers template rendering when :body not provided' do render_options = {} - expect_any_instance_of(MyTexter).not_to receive(:render) + expect_any_instance_of(MyTexter).not_to receive(:render_content) MyTexter.action_with_template end @@ -151,25 +151,4 @@ def my_action(p) expect(MyTexter.respond_to?(:fake_action)).to eq false end end - - describe Textris::Base::RenderingController do - before do - class Textris::Base::RenderingController - def initialize(*args) - end - end - - class ActionMailer::Base - def self.default_url_options - 'x' - end - end - end - - it 'maps default_url_options to ActionMailer configuration' do - rendering_controller = Textris::Base::RenderingController.new - - expect(rendering_controller.default_url_options).to eq 'x' - end - end end diff --git a/spec/textris/message_spec.rb b/spec/textris/message_spec.rb index b44ef1a..60c25c3 100644 --- a/spec/textris/message_spec.rb +++ b/spec/textris/message_spec.rb @@ -186,7 +186,7 @@ class SomeSampleTexter; end describe '#content' do before do - class Textris::Base::RenderingController + class ApplicationController < ActionController::Base def initialize(*args) end end From ab02b2d32b3b1432f881b1e9c71fee9534baefca Mon Sep 17 00:00:00 2001 From: Daniel Puglisi Date: Fri, 16 Aug 2019 15:53:17 +0200 Subject: [PATCH 5/8] update README --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 66d37e5..62e125b 100644 --- a/README.md +++ b/README.md @@ -297,6 +297,21 @@ You can add optional interpolation modifiers using the `%{variable:modifiers}` s - `h`: humanize (for instance, `user_name` becomes `User name`) - `p`: format phone (for instance, `48111222333` becomes `+48 111 222 333`) +### URL Defaults + +Textris uses `ActionController::Renderer` behind the scenes. Add or modify `config/initializers/application_controller_renderer.rb` in your Rails to change the default settings: + +``` +# Be sure to restart your server when you modify this file. + +ActiveSupport::Reloader.to_prepare do + ApplicationController.renderer.defaults.merge!( + http_host: ENV['CANONICAL_HOST'], # or ActionMailer::Base.default_url_options[:host] to use the same host as ActionMailer + https: Rails.env.production? + ) +end +``` + ## Example project [Here](https://github.com/visualitypl/textris/tree/master/example/rails-4.2) you can find a simple example project that demonstrates **textris** usage with Rails 4.2. In order to see how it works or experiment with it, just go to project's directory and invoke: From 2f3ba6afb6bb220864074e2472d83b2caf85a70f Mon Sep 17 00:00:00 2001 From: Elom Gomez Date: Sun, 18 Aug 2019 17:57:13 -0500 Subject: [PATCH 6/8] Switch ApplicationController.renderer to ActionController::Base.renderer --- lib/textris/base.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/textris/base.rb b/lib/textris/base.rb index 553c282..00c452c 100644 --- a/lib/textris/base.rb +++ b/lib/textris/base.rb @@ -42,12 +42,12 @@ def call_action end def render_content - renderer = ::ApplicationController.renderer.new + renderer = ::ActionController::Base.renderer.new renderer.render( template: template_name, layout: false, - formats: [:html], + formats: [:text], locale: @locale, assigns: set_instance_variables_for_rendering ) From 0adf11f0db0cc7d6f906b4db6c091b957455b4b8 Mon Sep 17 00:00:00 2001 From: Elom Gomez Date: Sat, 28 Sep 2019 21:51:08 -0500 Subject: [PATCH 7/8] unescape html entities in text message --- lib/textris/message.rb | 1 + spec/textris/message_spec.rb | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/lib/textris/message.rb b/lib/textris/message.rb index c636ce9..b898b09 100644 --- a/lib/textris/message.rb +++ b/lib/textris/message.rb @@ -124,6 +124,7 @@ def parse_to(to) def parse_content(content) content = content.to_s content = content.rstrip + content = CGI.unescapeHTML(content) content end diff --git a/spec/textris/message_spec.rb b/spec/textris/message_spec.rb index 60c25c3..8fc0543 100644 --- a/spec/textris/message_spec.rb +++ b/spec/textris/message_spec.rb @@ -137,6 +137,15 @@ expect(message.content).to eq(" a b. c") end + + it 'unescapes html entities' do + message = Textris::Message.new( + :content => "a'b'c'd", + :from => 'X', + :to => '+48 111 222 333') + + expect(message.content).to eq("a'b'c'd") + end end it 'raises if :to not provided' do From b238ffd9f8c1b2fa9c45a51d6676cff0ce0f59fd Mon Sep 17 00:00:00 2001 From: Gomez <2347012+no-itsbackpack@users.noreply.github.com> Date: Fri, 4 Mar 2022 22:20:58 -0600 Subject: [PATCH 8/8] Update twilio.rb --- lib/textris/delivery/twilio.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/textris/delivery/twilio.rb b/lib/textris/delivery/twilio.rb index c51e0b8..172ad91 100644 --- a/lib/textris/delivery/twilio.rb +++ b/lib/textris/delivery/twilio.rb @@ -17,7 +17,7 @@ def deliver(to) options[:media_url] = message.media_urls end - client.messages.create(options) + client.messages.create(**options) end private