bima-shark-sdk 2.3.0

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.
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: []