agilibox 1.0.10 → 1.0.11

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
  SHA1:
3
- metadata.gz: 2b31fd30195ec42898a2556ac6db48c97d1f05a7
4
- data.tar.gz: 2582452bd5ec90baa46667ae2949e1e8d307dd69
3
+ metadata.gz: 626ceeea45261567ea302c0994021df65612a71c
4
+ data.tar.gz: 7f7134b4e26583e5daffb9610022822080c4a163
5
5
  SHA512:
6
- metadata.gz: 0a521adc5a377d13ecf9a08c5d5f6f5bab1d2b2daceee2b43d6684fa3f185b46bc20f4f94e32e18e058ff0edc5cb6f57d360c0772fa0ac543c58461d8ea06b69
7
- data.tar.gz: 94c11ba528b4e77db6fecfe49bb81a77d398a67ad29dcb68f4a43890ab73b3cd8efada3d1ae660878d1049c5c5782dfd0f18f2eab80a541e52ba554702688c48
6
+ metadata.gz: 5654e800ab7c2027bd499b04c7559969b8d4c94671b1fd4e4d88922da8d39a6bc2368072b8bb07428fbe4006c862fba17c7b8848cbd133f7d2c0ba1eff071e5f
7
+ data.tar.gz: 5b1be7380d0d7b9d33e40128d0cc827a52f430a7491fd075dc2e25c4abf961ff02ca3c824cc00047733c5e1c8640e3dad4ec1c7384a33d9f64871701401971cc
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  ## Next version
4
4
 
5
+ ## 1.0.11
6
+
7
+ - Add Agilibox::SMS
8
+ - Test helpers improvements
9
+
5
10
  ## 1.0.10
6
11
 
7
12
  - Add TokenGenerator
@@ -0,0 +1,42 @@
1
+ class Agilibox::SMS::ApplicationSMS
2
+ attr_reader :options
3
+
4
+ def initialize(options)
5
+ @options = options
6
+ end
7
+
8
+ private
9
+
10
+ def action_name
11
+ options[:action_name]
12
+ end
13
+
14
+ def t(key, *args)
15
+ if key.start_with?(".")
16
+ path = self.class.to_s.underscore.tr("/", ".")
17
+ key = "#{path}.#{action_name}#{key}"
18
+ end
19
+
20
+ I18n.t(key, *args)
21
+ end
22
+
23
+ def sms(data)
24
+ Agilibox::SMS.strategy.new(data)
25
+ end
26
+
27
+ class << self
28
+ private :new
29
+
30
+ def method_missing(m, *args)
31
+ if respond_to_missing?(m)
32
+ new(action_name: m).public_send(m, *args)
33
+ else
34
+ super
35
+ end
36
+ end
37
+
38
+ def respond_to_missing?(m, *)
39
+ public_instance_methods.include?(m)
40
+ end
41
+ end # class << self
42
+ end
@@ -0,0 +1,50 @@
1
+ class Agilibox::SMS::Strategies::AmazonSNS < Agilibox::SMS::Strategies::Base
2
+ class << self
3
+ attr_writer :region
4
+
5
+ def sns_region
6
+ @sns_region ||= (ENV["SNS_REGION"] || ENV["AWS_REGION"])
7
+ end
8
+
9
+ attr_writer :access_key_id
10
+
11
+ def sns_access_key_id
12
+ @sns_access_key_id ||= (ENV["SNS_ACCESS_KEY_ID"] || ENV["AWS_ACCESS_KEY_ID"])
13
+ end
14
+
15
+ attr_writer :secret_access_key
16
+
17
+ def sns_secret_access_key
18
+ @sns_secret_access_key ||= (ENV["SNS_SECRET_ACCESS_KEY"] || ENV["AWS_SECRET_ACCESS_KEY"])
19
+ end
20
+ end # class << self
21
+
22
+ def client
23
+ @client ||= Aws::SNS::Client.new(
24
+ :region => self.class.sns_region,
25
+ :access_key_id => self.class.sns_access_key_id,
26
+ :secret_access_key => self.class.sns_secret_access_key,
27
+ )
28
+ end
29
+
30
+ private
31
+
32
+ def call
33
+ from = data[:from] || Agilibox::SMS.default_from
34
+
35
+ client.publish(
36
+ :phone_number => data[:to],
37
+ :message => data[:body],
38
+ :message_attributes => {
39
+ "AWS.SNS.SMS.SenderID" => {
40
+ :data_type => "String",
41
+ :string_value => from,
42
+ },
43
+ "AWS.SNS.SMS.SMSType" => {
44
+ :data_type => "String",
45
+ :string_value => "Transactional",
46
+ },
47
+ },
48
+ )
49
+ end
50
+ end
@@ -0,0 +1,22 @@
1
+ class Agilibox::SMS::Strategies::Base
2
+ attr_reader :data
3
+
4
+ def initialize(data)
5
+ @data = data
6
+ end
7
+
8
+ def deliver_now
9
+ call
10
+ end
11
+
12
+ # TODO : Delay
13
+ def deliver_later
14
+ deliver_now
15
+ end
16
+
17
+ private
18
+
19
+ def call
20
+ raise NotImplementedError
21
+ end
22
+ end
@@ -0,0 +1,12 @@
1
+ class Agilibox::SMS::Strategies::Test < Agilibox::SMS::Strategies::Base
2
+ def self.deliveries
3
+ @deliveries ||= []
4
+ end
5
+
6
+ private
7
+
8
+ def call
9
+ self.class.deliveries << data
10
+ Rails.logger.info "New SMS sent : #{data.inspect}"
11
+ end
12
+ end
@@ -0,0 +1,25 @@
1
+ module Agilibox::SMS
2
+ class << self
3
+ attr_writer :strategy
4
+
5
+ def strategy
6
+ @strategy ||= default_strategy
7
+ end
8
+
9
+ attr_writer :default_from
10
+
11
+ def default_from
12
+ @default_from ||= Rails.application.class.to_s.chomp("::Application")
13
+ end
14
+
15
+ private
16
+
17
+ def default_strategy
18
+ if Rails.env.development? || Rails.env.test?
19
+ Agilibox::SMS::Strategies::Test
20
+ else
21
+ Agilibox::SMS::Strategies::AmazonSNS
22
+ end
23
+ end
24
+ end # class << self
25
+ end
@@ -0,0 +1,2 @@
1
+ require "agilibox/test_helpers"
2
+ World(Agilibox::TestHelpers)
@@ -0,0 +1,3 @@
1
+ After do
2
+ Timecop.return
3
+ end
@@ -0,0 +1,29 @@
1
+ require_relative "test_helpers"
2
+
3
+ RSpec.configure do |config|
4
+ config.include Agilibox::TestHelpers
5
+
6
+ if defined?(FactoryBot)
7
+ config.include FactoryBot::Syntax::Methods
8
+ end
9
+
10
+ if defined?(FactoryGirl)
11
+ warn "Please replace FactoryGirl by FactoryBot"
12
+ config.include FactoryGirl::Syntax::Methods
13
+ end
14
+
15
+ if defined?(Devise)
16
+ config.include Devise::Test::ControllerHelpers, type: :controller
17
+ end
18
+
19
+ config.after(:each) { Timecop.return }
20
+ end
21
+
22
+ Shoulda::Matchers.configure do |config|
23
+ config.integrate do |with|
24
+ with.test_framework :rspec
25
+ with.library :rails
26
+ end
27
+ end
28
+
29
+ Zonebie.set_random_timezone
@@ -0,0 +1,13 @@
1
+ module Agilibox::TestHelpers
2
+ def json_response
3
+ @json_response ||= JSON.parse(response.body)
4
+ end
5
+
6
+ def email_deliveries
7
+ ActionMailer::Base.deliveries
8
+ end
9
+
10
+ def sms_deliveries
11
+ Agilibox::SMS::Strategies::Test.deliveries
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module Agilibox
2
- VERSION = "1.0.10"
2
+ VERSION = "1.0.11"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: agilibox
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
4
+ version: 1.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - agilidée
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-30 00:00:00.000000000 Z
11
+ date: 2017-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails-i18n
@@ -117,6 +117,11 @@ files:
117
117
  - app/serializers/agilibox/serializers.rb
118
118
  - app/serializers/agilibox/serializers/base.rb
119
119
  - app/serializers/agilibox/serializers/xlsx.rb
120
+ - app/sms/agilibox/sms.rb
121
+ - app/sms/agilibox/sms/application_sms.rb
122
+ - app/sms/agilibox/sms/strategies/amazon_sns.rb
123
+ - app/sms/agilibox/sms/strategies/base.rb
124
+ - app/sms/agilibox/sms/strategies/test.rb
120
125
  - app/sorters/agilibox/sorter.rb
121
126
  - app/views/agilibox/forms/_checkboxes_dropdown.html.slim
122
127
  - app/views/agilibox/search/_form.html.slim
@@ -132,6 +137,7 @@ files:
132
137
  - config/locales/errors.fr.yml
133
138
  - config/routes.rb
134
139
  - db/migrate/20170502143330_enable_unaccent.rb
140
+ - features/support/agilibox.rb
135
141
  - features/support/ajax.rb
136
142
  - features/support/database_cleaner.rb
137
143
  - features/support/env.rb
@@ -144,6 +150,7 @@ files:
144
150
  - features/support/select2.rb
145
151
  - features/support/sign_in.rb
146
152
  - features/support/simplecov.rb
153
+ - features/support/timecop.rb
147
154
  - features/support/turbolinks.rb
148
155
  - features/support/zonebie.rb
149
156
  - lib/agilibox.rb
@@ -153,6 +160,8 @@ files:
153
160
  - lib/agilibox/engine.rb
154
161
  - lib/agilibox/engine_file.rb
155
162
  - lib/agilibox/form_back_url.rb
163
+ - lib/agilibox/rspec.rb
164
+ - lib/agilibox/test_helpers.rb
156
165
  - lib/agilibox/version.rb
157
166
  - lib/tasks/agilibox_tasks.rake
158
167
  - lib/tasks/cucumber.rake