bima-shark-sdk 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.rspec +1 -0
  4. data/.rubocop.yml +56 -0
  5. data/.travis.yml +10 -0
  6. data/CHANGELOG.md +131 -0
  7. data/Gemfile +6 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +53 -0
  10. data/Rakefile +8 -0
  11. data/bima-shark-sdk.gemspec +36 -0
  12. data/bin/console +24 -0
  13. data/bin/setup +8 -0
  14. data/lib/bima-shark-sdk/rspec.rb +38 -0
  15. data/lib/bima-shark-sdk.rb +3 -0
  16. data/lib/shark/account.rb +7 -0
  17. data/lib/shark/activity.rb +11 -0
  18. data/lib/shark/asset.rb +13 -0
  19. data/lib/shark/base.rb +36 -0
  20. data/lib/shark/client/connection.rb +67 -0
  21. data/lib/shark/concerns/connected.rb +44 -0
  22. data/lib/shark/concerns/normalized_email.rb +13 -0
  23. data/lib/shark/configuration.rb +90 -0
  24. data/lib/shark/consent.rb +31 -0
  25. data/lib/shark/contact.rb +40 -0
  26. data/lib/shark/contact_log.rb +7 -0
  27. data/lib/shark/double_opt_in/execution.rb +50 -0
  28. data/lib/shark/double_opt_in/request.rb +45 -0
  29. data/lib/shark/error.rb +69 -0
  30. data/lib/shark/form_service/base.rb +11 -0
  31. data/lib/shark/form_service/form/container.rb +10 -0
  32. data/lib/shark/form_service/form/element.rb +83 -0
  33. data/lib/shark/form_service/form/multiple_choice.rb +21 -0
  34. data/lib/shark/form_service/form/rating_scale.rb +20 -0
  35. data/lib/shark/form_service/form/rating_star.rb +13 -0
  36. data/lib/shark/form_service/form/structure.rb +13 -0
  37. data/lib/shark/form_service/form/text_area.rb +10 -0
  38. data/lib/shark/form_service/form/text_field.rb +17 -0
  39. data/lib/shark/form_service/v2/base.rb +13 -0
  40. data/lib/shark/form_service/v2/form.rb +18 -0
  41. data/lib/shark/form_service/v2/form_input.rb +15 -0
  42. data/lib/shark/form_service/v2/form_version.rb +19 -0
  43. data/lib/shark/form_service.rb +21 -0
  44. data/lib/shark/group.rb +18 -0
  45. data/lib/shark/mailing_service/base.rb +11 -0
  46. data/lib/shark/mailing_service/configuration.rb +9 -0
  47. data/lib/shark/mailing_service/mail.rb +8 -0
  48. data/lib/shark/mailing_service/mailers/base_mailer.rb +96 -0
  49. data/lib/shark/mailing_service/renderers/context.rb +40 -0
  50. data/lib/shark/mailing_service/renderers/erb_renderer.rb +46 -0
  51. data/lib/shark/mailing_service.rb +23 -0
  52. data/lib/shark/membership.rb +16 -0
  53. data/lib/shark/middleware/compose_request.rb +41 -0
  54. data/lib/shark/middleware/status.rb +36 -0
  55. data/lib/shark/notification.rb +21 -0
  56. data/lib/shark/package.rb +7 -0
  57. data/lib/shark/permission.rb +7 -0
  58. data/lib/shark/rails.rb +13 -0
  59. data/lib/shark/rspec/fake_asset_service/object_cache.rb +76 -0
  60. data/lib/shark/rspec/fake_asset_service/public_id.rb +21 -0
  61. data/lib/shark/rspec/fake_asset_service/request.rb +154 -0
  62. data/lib/shark/rspec/fake_asset_service.rb +20 -0
  63. data/lib/shark/rspec/fake_consent_service/object_cache.rb +44 -0
  64. data/lib/shark/rspec/fake_consent_service/request.rb +53 -0
  65. data/lib/shark/rspec/fake_consent_service.rb +19 -0
  66. data/lib/shark/rspec/fake_contact_service/object_cache.rb +88 -0
  67. data/lib/shark/rspec/fake_contact_service/request.rb +170 -0
  68. data/lib/shark/rspec/fake_contact_service.rb +19 -0
  69. data/lib/shark/rspec/fake_double_opt_in/object_cache.rb +59 -0
  70. data/lib/shark/rspec/fake_double_opt_in/request.rb +133 -0
  71. data/lib/shark/rspec/fake_double_opt_in.rb +19 -0
  72. data/lib/shark/rspec/fake_mailing_service/request.rb +41 -0
  73. data/lib/shark/rspec/fake_mailing_service.rb +13 -0
  74. data/lib/shark/rspec/fake_notification_service/request.rb +53 -0
  75. data/lib/shark/rspec/fake_notification_service.rb +13 -0
  76. data/lib/shark/rspec/fake_subscription_service/object_cache.rb +54 -0
  77. data/lib/shark/rspec/fake_subscription_service/request.rb +100 -0
  78. data/lib/shark/rspec/fake_subscription_service.rb +19 -0
  79. data/lib/shark/rspec/fake_survey_service/object_cache.rb +36 -0
  80. data/lib/shark/rspec/fake_survey_service/request.rb +66 -0
  81. data/lib/shark/rspec/fake_survey_service.rb +19 -0
  82. data/lib/shark/rspec/fixtures/form_inputs.json +26 -0
  83. data/lib/shark/rspec/fixtures/form_structure.json +175 -0
  84. data/lib/shark/rspec/helpers/cache_helper.rb +44 -0
  85. data/lib/shark/rspec/helpers/fixtures.rb +26 -0
  86. data/lib/shark/rspec/helpers/form_service_helper.rb +27 -0
  87. data/lib/shark/rspec/helpers/response.rb +25 -0
  88. data/lib/shark/rspec/helpers.rb +26 -0
  89. data/lib/shark/subscription.rb +43 -0
  90. data/lib/shark/survey.rb +29 -0
  91. data/lib/shark/survey_participant.rb +37 -0
  92. data/lib/shark/version.rb +5 -0
  93. data/lib/shark.rb +91 -0
  94. metadata +291 -0
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Shark
4
+ class Survey < Base
5
+ extend SurveyService::Resource
6
+
7
+ add_datetime_accessors :starts_at, :ends_at, :created_at, :updated_at
8
+
9
+ def self.find(*args)
10
+ super.first
11
+ end
12
+
13
+ def add_participant(attributes)
14
+ SurveyParticipant.create(attributes.merge(survey_id: id))
15
+ end
16
+
17
+ def scheduled?
18
+ flags.present? && flags.include?('scheduled')
19
+ end
20
+
21
+ def running?
22
+ flags.present? && flags.include?('running')
23
+ end
24
+
25
+ def closed?
26
+ flags.present? && flags.include?('closed')
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Shark
4
+ class SurveyParticipant < Base
5
+ extend SurveyService::Resource
6
+
7
+ has_one :survey, class_name: '::Shark::SurveyService::Survey'
8
+
9
+ def self.table_name
10
+ 'participants'
11
+ end
12
+
13
+ def self.find(*args)
14
+ super.first
15
+ end
16
+
17
+ def self.create(attributes)
18
+ attributes_copy = attributes.symbolize_keys
19
+ survey_id = attributes_copy.delete(:survey_id)
20
+ raise ArgumentError, 'Missing attribute :survey_id' unless survey_id
21
+
22
+ participant = new(attributes_copy)
23
+ participant.relationships.survey = { data: { id: survey_id } }
24
+ participant.save
25
+
26
+ participant
27
+ end
28
+
29
+ def participated?
30
+ state == 'participated'
31
+ end
32
+
33
+ def participate
34
+ update(state: 'participated')
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Shark
4
+ VERSION = '2.3.0'
5
+ end
data/lib/shark.rb ADDED
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/all'
4
+ require 'rack'
5
+ require 'faraday'
6
+ require 'json_api_client'
7
+
8
+ require 'shark/version'
9
+ require 'shark/error'
10
+ require 'shark/configuration'
11
+ require 'shark/middleware/compose_request'
12
+ require 'shark/middleware/status'
13
+ require 'shark/client/connection'
14
+
15
+ require 'shark/concerns/normalized_email'
16
+ require 'shark/concerns/connected'
17
+
18
+ module Shark
19
+ extend SingleForwardable
20
+
21
+ def_single_delegators :configuration, :cache, :logger
22
+
23
+ mattr_accessor :configuration
24
+
25
+ def self.configure
26
+ self.configuration ||= Configuration.new
27
+ yield self.configuration
28
+ end
29
+
30
+ # Within the given block, add the service token authorization header to all api requests.
31
+ #
32
+ # @param token [String] The service token for the authorization header
33
+ # @param block [Block] The block where service token authorization will be set for
34
+ # @api public
35
+ def self.with_service_token(token)
36
+ if token.is_a?(String)
37
+ self.service_token = token
38
+ elsif token.respond_to?(:jwt)
39
+ self.service_token = token.jwt
40
+ else
41
+ raise ArgumentError, 'Parameter :token must be kind of String.'
42
+ end
43
+
44
+ yield
45
+ ensure
46
+ self.service_token = nil
47
+ end
48
+
49
+ # @api public
50
+ def self.service_token
51
+ Thread.current['shark-service-token']
52
+ end
53
+
54
+ # @api private
55
+ def self.service_token=(value)
56
+ Thread.current['shark-service-token'] = value
57
+ end
58
+
59
+ #
60
+ # Initial configuration
61
+ #
62
+ configure do |config|
63
+ config.cache = ActiveSupport::Cache::NullStore.new
64
+ config.logger = ::Logger.new('/dev/null')
65
+ config.logger.formatter = proc do |severity, _datetime, _progname, msg|
66
+ "#{severity}, #{msg}\n"
67
+ end
68
+ end
69
+ end
70
+
71
+ require 'shark/base'
72
+ require 'shark/asset'
73
+ require 'shark/account'
74
+ require 'shark/activity'
75
+ require 'shark/consent'
76
+ require 'shark/contact'
77
+ require 'shark/double_opt_in/execution'
78
+ require 'shark/double_opt_in/request'
79
+ require 'shark/group'
80
+ require 'shark/membership'
81
+ require 'shark/notification'
82
+ require 'shark/package'
83
+ require 'shark/permission'
84
+ require 'shark/subscription'
85
+ require 'shark/survey'
86
+ require 'shark/survey_participant'
87
+
88
+ require 'shark/form_service'
89
+ require 'shark/mailing_service'
90
+
91
+ require 'shark/rails'
metadata ADDED
@@ -0,0 +1,291 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bima-shark-sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Huy Dinh
8
+ - Johannes Schmeißer
9
+ - Joergen Dahlke
10
+ autorequire:
11
+ bindir: exe
12
+ cert_chain: []
13
+ date: 2022-01-04 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: 4.1.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: 4.1.0
29
+ - !ruby/object:Gem::Dependency
30
+ name: faraday
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: json_api_client
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 1.10.0
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 1.10.0
57
+ - !ruby/object:Gem::Dependency
58
+ name: net-http-persistent
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: rack
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: bundler
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: pry
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: rake
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '12.0'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: '12.0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: rspec
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '3.0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: '3.0'
141
+ - !ruby/object:Gem::Dependency
142
+ name: rubocop
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - '='
146
+ - !ruby/object:Gem::Version
147
+ version: 0.81.0
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - '='
153
+ - !ruby/object:Gem::Version
154
+ version: 0.81.0
155
+ - !ruby/object:Gem::Dependency
156
+ name: webmock
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - "~>"
160
+ - !ruby/object:Gem::Version
161
+ version: '2.3'
162
+ type: :development
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - "~>"
167
+ - !ruby/object:Gem::Version
168
+ version: '2.3'
169
+ description: ''
170
+ email:
171
+ - bima-team@infopark.de
172
+ executables: []
173
+ extensions: []
174
+ extra_rdoc_files: []
175
+ files:
176
+ - ".gitignore"
177
+ - ".rspec"
178
+ - ".rubocop.yml"
179
+ - ".travis.yml"
180
+ - CHANGELOG.md
181
+ - Gemfile
182
+ - LICENSE.txt
183
+ - README.md
184
+ - Rakefile
185
+ - bima-shark-sdk.gemspec
186
+ - bin/console
187
+ - bin/setup
188
+ - lib/bima-shark-sdk.rb
189
+ - lib/bima-shark-sdk/rspec.rb
190
+ - lib/shark.rb
191
+ - lib/shark/account.rb
192
+ - lib/shark/activity.rb
193
+ - lib/shark/asset.rb
194
+ - lib/shark/base.rb
195
+ - lib/shark/client/connection.rb
196
+ - lib/shark/concerns/connected.rb
197
+ - lib/shark/concerns/normalized_email.rb
198
+ - lib/shark/configuration.rb
199
+ - lib/shark/consent.rb
200
+ - lib/shark/contact.rb
201
+ - lib/shark/contact_log.rb
202
+ - lib/shark/double_opt_in/execution.rb
203
+ - lib/shark/double_opt_in/request.rb
204
+ - lib/shark/error.rb
205
+ - lib/shark/form_service.rb
206
+ - lib/shark/form_service/base.rb
207
+ - lib/shark/form_service/form/container.rb
208
+ - lib/shark/form_service/form/element.rb
209
+ - lib/shark/form_service/form/multiple_choice.rb
210
+ - lib/shark/form_service/form/rating_scale.rb
211
+ - lib/shark/form_service/form/rating_star.rb
212
+ - lib/shark/form_service/form/structure.rb
213
+ - lib/shark/form_service/form/text_area.rb
214
+ - lib/shark/form_service/form/text_field.rb
215
+ - lib/shark/form_service/v2/base.rb
216
+ - lib/shark/form_service/v2/form.rb
217
+ - lib/shark/form_service/v2/form_input.rb
218
+ - lib/shark/form_service/v2/form_version.rb
219
+ - lib/shark/group.rb
220
+ - lib/shark/mailing_service.rb
221
+ - lib/shark/mailing_service/base.rb
222
+ - lib/shark/mailing_service/configuration.rb
223
+ - lib/shark/mailing_service/mail.rb
224
+ - lib/shark/mailing_service/mailers/base_mailer.rb
225
+ - lib/shark/mailing_service/renderers/context.rb
226
+ - lib/shark/mailing_service/renderers/erb_renderer.rb
227
+ - lib/shark/membership.rb
228
+ - lib/shark/middleware/compose_request.rb
229
+ - lib/shark/middleware/status.rb
230
+ - lib/shark/notification.rb
231
+ - lib/shark/package.rb
232
+ - lib/shark/permission.rb
233
+ - lib/shark/rails.rb
234
+ - lib/shark/rspec/fake_asset_service.rb
235
+ - lib/shark/rspec/fake_asset_service/object_cache.rb
236
+ - lib/shark/rspec/fake_asset_service/public_id.rb
237
+ - lib/shark/rspec/fake_asset_service/request.rb
238
+ - lib/shark/rspec/fake_consent_service.rb
239
+ - lib/shark/rspec/fake_consent_service/object_cache.rb
240
+ - lib/shark/rspec/fake_consent_service/request.rb
241
+ - lib/shark/rspec/fake_contact_service.rb
242
+ - lib/shark/rspec/fake_contact_service/object_cache.rb
243
+ - lib/shark/rspec/fake_contact_service/request.rb
244
+ - lib/shark/rspec/fake_double_opt_in.rb
245
+ - lib/shark/rspec/fake_double_opt_in/object_cache.rb
246
+ - lib/shark/rspec/fake_double_opt_in/request.rb
247
+ - lib/shark/rspec/fake_mailing_service.rb
248
+ - lib/shark/rspec/fake_mailing_service/request.rb
249
+ - lib/shark/rspec/fake_notification_service.rb
250
+ - lib/shark/rspec/fake_notification_service/request.rb
251
+ - lib/shark/rspec/fake_subscription_service.rb
252
+ - lib/shark/rspec/fake_subscription_service/object_cache.rb
253
+ - lib/shark/rspec/fake_subscription_service/request.rb
254
+ - lib/shark/rspec/fake_survey_service.rb
255
+ - lib/shark/rspec/fake_survey_service/object_cache.rb
256
+ - lib/shark/rspec/fake_survey_service/request.rb
257
+ - lib/shark/rspec/fixtures/form_inputs.json
258
+ - lib/shark/rspec/fixtures/form_structure.json
259
+ - lib/shark/rspec/helpers.rb
260
+ - lib/shark/rspec/helpers/cache_helper.rb
261
+ - lib/shark/rspec/helpers/fixtures.rb
262
+ - lib/shark/rspec/helpers/form_service_helper.rb
263
+ - lib/shark/rspec/helpers/response.rb
264
+ - lib/shark/subscription.rb
265
+ - lib/shark/survey.rb
266
+ - lib/shark/survey_participant.rb
267
+ - lib/shark/version.rb
268
+ homepage: https://github.com/infopark-customers/bima-shark-sdk
269
+ licenses: []
270
+ metadata: {}
271
+ post_install_message:
272
+ rdoc_options: []
273
+ require_paths:
274
+ - lib
275
+ required_ruby_version: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - ">="
278
+ - !ruby/object:Gem::Version
279
+ version: '0'
280
+ required_rubygems_version: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ">="
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
285
+ requirements: []
286
+ rubyforge_project:
287
+ rubygems_version: 2.5.2.3
288
+ signing_key:
289
+ specification_version: 4
290
+ summary: ''
291
+ test_files: []