cnfs-comm 0.0.1.alpha
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +17 -0
- data/Rakefile +22 -0
- data/app/controllers/campaigns_controller.rb +4 -0
- data/app/controllers/comm/application_controller.rb +6 -0
- data/app/controllers/events_controller.rb +4 -0
- data/app/controllers/messages_controller.rb +19 -0
- data/app/controllers/providers_controller.rb +4 -0
- data/app/controllers/templates_controller.rb +4 -0
- data/app/controllers/whatsapps_controller.rb +73 -0
- data/app/jobs/call_job.rb +8 -0
- data/app/jobs/comm/application_job.rb +6 -0
- data/app/jobs/event_process_job.rb +4 -0
- data/app/jobs/message_process_job.rb +4 -0
- data/app/jobs/message_send_job.rb +4 -0
- data/app/mailers/application_mailer.rb +6 -0
- data/app/models/campaign.rb +17 -0
- data/app/models/comm/application_record.rb +7 -0
- data/app/models/event.rb +81 -0
- data/app/models/message.rb +21 -0
- data/app/models/provider.rb +24 -0
- data/app/models/providers/aws.rb +54 -0
- data/app/models/providers/twilio.rb +37 -0
- data/app/models/template.rb +54 -0
- data/app/models/tenant.rb +7 -0
- data/app/models/whatsapp.rb +4 -0
- data/app/operations/event_process.rb +41 -0
- data/app/operations/message_create.rb +116 -0
- data/app/operations/message_process.rb +17 -0
- data/app/operations/message_send.rb +25 -0
- data/app/policies/campaign_policy.rb +4 -0
- data/app/policies/comm/application_policy.rb +6 -0
- data/app/policies/event_policy.rb +4 -0
- data/app/policies/message_policy.rb +9 -0
- data/app/policies/provider_policy.rb +4 -0
- data/app/policies/template_policy.rb +4 -0
- data/app/resources/campaign_resource.rb +12 -0
- data/app/resources/comm/application_resource.rb +7 -0
- data/app/resources/event_resource.rb +25 -0
- data/app/resources/message_resource.rb +23 -0
- data/app/resources/provider_resource.rb +5 -0
- data/app/resources/template_resource.rb +5 -0
- data/app/resources/twilio_resource.rb +3 -0
- data/app/resources/whatsapp_resource.rb +5 -0
- data/config/environment.rb +0 -0
- data/config/routes.rb +10 -0
- data/config/sidekiq.yml +3 -0
- data/config/spring.rb +3 -0
- data/db/migrate/20190212220055_create_whatsapps.rb +19 -0
- data/db/migrate/20190217113829_create_providers.rb +18 -0
- data/db/migrate/20190317045825_create_campaigns.rb +12 -0
- data/db/migrate/20190317080012_create_templates.rb +12 -0
- data/db/migrate/20190317090002_create_events.rb +19 -0
- data/db/migrate/20190317114527_create_messages.rb +15 -0
- data/db/migrate/20191127070152_add_provider_id_to_message.rb +5 -0
- data/db/seeds/development/data.seeds.rb +35 -0
- data/db/seeds/development/tenants.seeds.rb +8 -0
- data/lib/ros/comm.rb +11 -0
- data/lib/ros/comm/console.rb +8 -0
- data/lib/ros/comm/engine.rb +53 -0
- data/lib/ros/comm/version.rb +7 -0
- data/lib/tasks/ros/comm_tasks.rake +16 -0
- metadata +181 -0
File without changes
|
data/config/routes.rb
ADDED
data/config/sidekiq.yml
ADDED
data/config/spring.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
class CreateWhatsapps < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :whatsapps do |t|
|
4
|
+
t.string :sms_message_sid
|
5
|
+
t.string :num_media
|
6
|
+
t.string :sms_sid
|
7
|
+
t.string :sms_status
|
8
|
+
t.string :body
|
9
|
+
t.string :to
|
10
|
+
t.string :num_segments
|
11
|
+
t.string :message_sid
|
12
|
+
t.string :account_sid
|
13
|
+
t.string :from
|
14
|
+
t.string :api_version
|
15
|
+
|
16
|
+
t.timestamps
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class CreateProviders < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :providers do |t|
|
4
|
+
t.string :name
|
5
|
+
t.string :type
|
6
|
+
t.string :encrypted_credentials
|
7
|
+
t.string :encrypted_credentials_iv
|
8
|
+
t.string :encrypted_credential_1
|
9
|
+
t.string :encrypted_credential_1_iv
|
10
|
+
t.string :encrypted_credential_2
|
11
|
+
t.string :encrypted_credential_2_iv
|
12
|
+
t.string :encrypted_credential_3
|
13
|
+
t.string :encrypted_credential_3_iv
|
14
|
+
|
15
|
+
t.timestamps
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateEvents < ActiveRecord::Migration[6.0]
|
4
|
+
def change
|
5
|
+
create_table :events do |t|
|
6
|
+
t.string :name
|
7
|
+
t.references :campaign, foreign_key: true
|
8
|
+
t.references :template, foreign_key: true
|
9
|
+
t.references :target, polymorphic: true
|
10
|
+
t.references :owner, polymorphic: true
|
11
|
+
t.references :provider, foreign_key: true
|
12
|
+
t.string :status, null: false
|
13
|
+
t.string :channel
|
14
|
+
t.timestamp :send_at
|
15
|
+
|
16
|
+
t.timestamps
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateMessages < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :messages do |t|
|
4
|
+
t.references :provider, foreign_key: true
|
5
|
+
t.references :owner, polymorphic: true
|
6
|
+
# t.integer :cognito_user_id, null: false
|
7
|
+
t.string :channel
|
8
|
+
t.string :from
|
9
|
+
t.string :to
|
10
|
+
t.string :body
|
11
|
+
|
12
|
+
t.timestamps
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
after 'development:tenants' do
|
4
|
+
Tenant.all.each do |tenant|
|
5
|
+
# next if tenant.id.eql? 1
|
6
|
+
tenant.switch do
|
7
|
+
Providers::Twilio.create(name: "Marketing Team's Twilio", account_sid: ENV['TWILIO_ACCOUNT_SID'],
|
8
|
+
auth_token: ENV['TWILIO_AUTH_TOKEN'])
|
9
|
+
Providers::Aws.create(name: "Tech Team's AWS", access_key_id: ENV['AWS_ACCESS_KEY_ID'],
|
10
|
+
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'])
|
11
|
+
# Campaign.create(owner_type: 'Perx::Survey::Campaign', cognito_endpoint_id: 2, owner_id: 1).tap do |campaign|
|
12
|
+
# template = campaign.templates.create(
|
13
|
+
# content: 'Dear <%= user.title %> <%= user.last_name %>, we are delighted to have you ' \
|
14
|
+
# 'with us. At ABC Corp, we always have your interest at heart and appreciate it if you ' \
|
15
|
+
# 'may complete a 2 minute survey for us to know you better. <%= endpoint.url %>' \
|
16
|
+
# '/primary_identifier=?<%= user.primary_identifier %> to answer a survey'
|
17
|
+
# )
|
18
|
+
# tz = ActiveSupport::TimeZone['Asia/Singapore']
|
19
|
+
# mgmt = campaign.events.create(target_type: 'Ros::Cognito::Pool', target_id: 1, template: template,
|
20
|
+
# provider: twilio, channel: :sms, send_at: 1.minutes.from_now)
|
21
|
+
# prod = campaign.events.create(target_type: 'Ros::Cognito::Pool', target_id: 2, template: template,
|
22
|
+
# provider: twilio, channel: :sms, send_at: tz.parse('2019-03-21 17:00:00'))
|
23
|
+
# # Send to management team at 10am
|
24
|
+
# eng = campaign.events.create(target_type: 'Ros::Cognito::Pool', target_id: 3, template: template,
|
25
|
+
# provider: twilio, channel: :sms, send_at: tz.parse('2019-03-22 10:30:00'))
|
26
|
+
# support = campaign.events.create(target_type: 'Ros::Cognito::Pool', target_id: 4, template: template,
|
27
|
+
# provider: twilio, channel: :sms, send_at: tz.parse('2019-03-22 16:10:00'))
|
28
|
+
# sales = campaign.events.create(target_type: 'Ros::Cognito::Pool', target_id: 5, template: template,
|
29
|
+
# provider: twilio, channel: :sms, send_at: tz.parse('2019-03-22 16:10:00'))
|
30
|
+
# pru = campaign.events.create(target_type: 'Ros::Cognito::Pool', target_id: 6, template: template,
|
31
|
+
# provider: twilio, channel: :sms, send_at: tz.parse('2019-03-22 16:10:00'))
|
32
|
+
# end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/ros/comm.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Ros
|
4
|
+
module Comm
|
5
|
+
class Engine < ::Rails::Engine
|
6
|
+
config.generators.api_only = true
|
7
|
+
config.generators do |g|
|
8
|
+
g.test_framework :rspec, fixture: true
|
9
|
+
g.fixture_replacement :factory_bot, dir: 'spec/factories'
|
10
|
+
end
|
11
|
+
|
12
|
+
initializer 'service.set_platform_config', before: 'ros_core.load_platform_config' do |_app|
|
13
|
+
settings_path = root.join('config/settings.yml')
|
14
|
+
Settings.prepend_source!(settings_path) if File.exist? settings_path
|
15
|
+
name = self.class.module_parent.name.demodulize.underscore
|
16
|
+
Settings.prepend_source!(service: { name: name, policy_name: name.capitalize })
|
17
|
+
end
|
18
|
+
|
19
|
+
# Adds this gem's db/migrations path to the enclosing application's migraations_path array
|
20
|
+
# if the gem has been included in an application, i.e. it is not running in the dummy app
|
21
|
+
# https://github.com/rails/rails/issues/22261
|
22
|
+
initializer 'service.configure_migrations' do |app|
|
23
|
+
unless Rails.root.to_s.end_with?('spec/dummy')
|
24
|
+
config.paths['db/migrate'].expanded.each do |expanded_path|
|
25
|
+
app.config.paths['db/migrate'] << expanded_path
|
26
|
+
ActiveRecord::Migrator.migrations_paths << expanded_path
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
initializer 'service.set_factory_paths', after: 'ros_core.set_factory_paths' do
|
32
|
+
if defined?(FactoryBot) && !Rails.env.production?
|
33
|
+
FactoryBot.definition_file_paths.prepend(Pathname.new(__FILE__).join('../../../../spec/factories'))
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
initializer 'service.configure_event_logging' do |_app|
|
38
|
+
if Settings.dig(:event_logging, :enabled)
|
39
|
+
Settings.event_logging.config.schemas_path = root.join(Settings.event_logging.config.schemas_path)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# initializer 'service.initialize_infra_services', after: 'ros_core.initialize_infra_services' do |app|
|
44
|
+
# end
|
45
|
+
|
46
|
+
# initializer 'service.configure_console_methods', before: 'ros_core.configure_console_methods' do |_app|
|
47
|
+
# if Rails.env.development? && !Rails.const_defined?('Server')
|
48
|
+
# require_relative 'console'
|
49
|
+
# end
|
50
|
+
# end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
namespace :ros do
|
4
|
+
namespace :comm do
|
5
|
+
namespace :db do
|
6
|
+
desc 'Load engine seeds'
|
7
|
+
task :seed do
|
8
|
+
seedbank_root = Seedbank.seeds_root
|
9
|
+
Seedbank.seeds_root = File.expand_path('db/seeds', Ros::Comm::Engine.root)
|
10
|
+
Seedbank.load_tasks
|
11
|
+
Rake::Task['db:seed'].invoke
|
12
|
+
Seedbank.seeds_root = seedbank_root
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cnfs-comm
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1.alpha
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Robert Roach
|
8
|
+
- Rui Baltazar
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2020-01-23 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: aws-sdk-sns
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 1.21.0
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 1.21.0
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: cnfs-core
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 0.0.1alpha
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 0.0.1alpha
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: cnfs_sdk
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 0.0.1alpha
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 0.0.1alpha
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: rails
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 6.0.2.1
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 6.0.2.1
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: twilio-ruby
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 5.31.0
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 5.31.0
|
84
|
+
description: 3rd party communication services can be invoked by other services per
|
85
|
+
tenant
|
86
|
+
email:
|
87
|
+
- rjayroach@gmail.com
|
88
|
+
- rui.p.baltazar@gmail.com
|
89
|
+
executables: []
|
90
|
+
extensions: []
|
91
|
+
extra_rdoc_files: []
|
92
|
+
files:
|
93
|
+
- MIT-LICENSE
|
94
|
+
- README.md
|
95
|
+
- Rakefile
|
96
|
+
- app/controllers/campaigns_controller.rb
|
97
|
+
- app/controllers/comm/application_controller.rb
|
98
|
+
- app/controllers/events_controller.rb
|
99
|
+
- app/controllers/messages_controller.rb
|
100
|
+
- app/controllers/providers_controller.rb
|
101
|
+
- app/controllers/templates_controller.rb
|
102
|
+
- app/controllers/whatsapps_controller.rb
|
103
|
+
- app/jobs/call_job.rb
|
104
|
+
- app/jobs/comm/application_job.rb
|
105
|
+
- app/jobs/event_process_job.rb
|
106
|
+
- app/jobs/message_process_job.rb
|
107
|
+
- app/jobs/message_send_job.rb
|
108
|
+
- app/mailers/application_mailer.rb
|
109
|
+
- app/models/campaign.rb
|
110
|
+
- app/models/comm/application_record.rb
|
111
|
+
- app/models/event.rb
|
112
|
+
- app/models/message.rb
|
113
|
+
- app/models/provider.rb
|
114
|
+
- app/models/providers/aws.rb
|
115
|
+
- app/models/providers/twilio.rb
|
116
|
+
- app/models/template.rb
|
117
|
+
- app/models/tenant.rb
|
118
|
+
- app/models/whatsapp.rb
|
119
|
+
- app/operations/event_process.rb
|
120
|
+
- app/operations/message_create.rb
|
121
|
+
- app/operations/message_process.rb
|
122
|
+
- app/operations/message_send.rb
|
123
|
+
- app/policies/campaign_policy.rb
|
124
|
+
- app/policies/comm/application_policy.rb
|
125
|
+
- app/policies/event_policy.rb
|
126
|
+
- app/policies/message_policy.rb
|
127
|
+
- app/policies/provider_policy.rb
|
128
|
+
- app/policies/template_policy.rb
|
129
|
+
- app/resources/campaign_resource.rb
|
130
|
+
- app/resources/comm/application_resource.rb
|
131
|
+
- app/resources/event_resource.rb
|
132
|
+
- app/resources/message_resource.rb
|
133
|
+
- app/resources/provider_resource.rb
|
134
|
+
- app/resources/template_resource.rb
|
135
|
+
- app/resources/twilio_resource.rb
|
136
|
+
- app/resources/whatsapp_resource.rb
|
137
|
+
- config/environment.rb
|
138
|
+
- config/routes.rb
|
139
|
+
- config/sidekiq.yml
|
140
|
+
- config/spring.rb
|
141
|
+
- db/migrate/20190212220055_create_whatsapps.rb
|
142
|
+
- db/migrate/20190217113829_create_providers.rb
|
143
|
+
- db/migrate/20190317045825_create_campaigns.rb
|
144
|
+
- db/migrate/20190317080012_create_templates.rb
|
145
|
+
- db/migrate/20190317090002_create_events.rb
|
146
|
+
- db/migrate/20190317114527_create_messages.rb
|
147
|
+
- db/migrate/20191127070152_add_provider_id_to_message.rb
|
148
|
+
- db/seeds/development/data.seeds.rb
|
149
|
+
- db/seeds/development/tenants.seeds.rb
|
150
|
+
- lib/ros/comm.rb
|
151
|
+
- lib/ros/comm/console.rb
|
152
|
+
- lib/ros/comm/engine.rb
|
153
|
+
- lib/ros/comm/version.rb
|
154
|
+
- lib/tasks/ros/comm_tasks.rake
|
155
|
+
homepage: http://guides.rails-on-services.org/
|
156
|
+
licenses:
|
157
|
+
- MIT
|
158
|
+
metadata: {}
|
159
|
+
post_install_message:
|
160
|
+
rdoc_options: []
|
161
|
+
require_paths:
|
162
|
+
- lib
|
163
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - ">"
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: 2.6.0
|
168
|
+
- - "<"
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: '2.7'
|
171
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - ">"
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: 1.3.1
|
176
|
+
requirements: []
|
177
|
+
rubygems_version: 3.0.3
|
178
|
+
signing_key:
|
179
|
+
specification_version: 4
|
180
|
+
summary: Provides communication tools, e.g. Twilio to the Ros Platform
|
181
|
+
test_files: []
|