bima-shark-sdk 2.3.0 → 2.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/shark/configuration.rb +0 -7
- data/lib/shark/consent.rb +5 -8
- data/lib/shark/contact.rb +8 -0
- data/lib/shark/contract.rb +28 -0
- data/lib/shark/form_service/v2/form.rb +2 -0
- data/lib/shark/rspec/fake_contact_service/request.rb +9 -10
- data/lib/shark/rspec/helpers.rb +0 -1
- data/lib/shark/version.rb +1 -1
- data/lib/shark.rb +2 -0
- metadata +3 -5
- data/lib/shark/rspec/fake_consent_service/object_cache.rb +0 -44
- data/lib/shark/rspec/fake_consent_service/request.rb +0 -53
- data/lib/shark/rspec/fake_consent_service.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8147ff5d815f0cf58c4af42b9dc59fd12c42403
|
4
|
+
data.tar.gz: 0ccf7a38e06b849c464eedb854ed08e3ed529ad8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c38fb56121825215c37f16a0dde2aa4ff4b29b25adc7e8390bcfec1319844938fc19bb01e696d6bc857241ad5aaa0ca29d319fed5ac47ea45e71155bc177500
|
7
|
+
data.tar.gz: 4445572bb6d832693da5c3ff66405cada2c3b39332c994c32b71a4d3a6b1d6256837eb8d913db60f331e3b29e04a05dfe2a653620b96d397972b25e8797a78b1
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
## Changelog
|
2
2
|
|
3
|
+
#### 2.4.1
|
4
|
+
- [fix] Form Service: Added missing `versions` association to `Form`
|
5
|
+
|
6
|
+
#### 2.4.0
|
7
|
+
- added `Shark::Contact#consents` and `Shark::Contact#create_contract`
|
8
|
+
|
9
|
+
#### 2.3.1
|
10
|
+
- [fix] expose `Shark::ContactLog`
|
11
|
+
|
3
12
|
#### 2.3.0
|
4
13
|
- `Shark::MailingService` template can `#render` partials
|
5
14
|
|
data/lib/shark/configuration.rb
CHANGED
@@ -13,12 +13,6 @@ module Shark
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
module ConsentService
|
17
|
-
module Resource
|
18
|
-
mattr_accessor :site
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
16
|
module DoubleOptIn
|
23
17
|
class ExceededNumberOfVerificationRequestsError < Error; end
|
24
18
|
class RequestedUnverifiedExecutionError < Error; end
|
@@ -78,7 +72,6 @@ module Shark
|
|
78
72
|
def initialize
|
79
73
|
@asset_service = AssetService::Resource
|
80
74
|
@contact_service = ContactService::Resource
|
81
|
-
@consent_service = ConsentService::Resource
|
82
75
|
@double_opt_in = DoubleOptIn::Resource
|
83
76
|
@form_service = Service.new
|
84
77
|
@mailing_service = Service.new
|
data/lib/shark/consent.rb
CHANGED
@@ -2,27 +2,24 @@
|
|
2
2
|
|
3
3
|
module Shark
|
4
4
|
class Consent < Base
|
5
|
-
extend
|
5
|
+
extend ContactService::Resource
|
6
6
|
|
7
|
-
|
8
|
-
raise Shark::ActionNotSupportedError,
|
9
|
-
'Shark::ConsentService::Consent.all is not supported'
|
10
|
-
end
|
7
|
+
belongs_to :contact
|
11
8
|
|
12
9
|
def update_attributes(_attributes = {})
|
13
10
|
raise Shark::ActionNotSupportedError,
|
14
|
-
'Shark::
|
11
|
+
'Shark::Consent#update_attributes is not supported'
|
15
12
|
end
|
16
13
|
|
17
14
|
def destroy
|
18
15
|
raise Shark::ActionNotSupportedError,
|
19
|
-
'Shark::
|
16
|
+
'Shark::Consent#destroy is not supported'
|
20
17
|
end
|
21
18
|
|
22
19
|
def save
|
23
20
|
if self['id'].present?
|
24
21
|
raise Shark::ActionNotSupportedError,
|
25
|
-
'Shark::
|
22
|
+
'Shark::Consent#save is not supported for persisted consents'
|
26
23
|
else
|
27
24
|
super
|
28
25
|
end
|
data/lib/shark/contact.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Shark
|
4
|
+
class Contract < Base
|
5
|
+
extend ContactService::Resource
|
6
|
+
|
7
|
+
belongs_to :contact
|
8
|
+
|
9
|
+
def update_attributes(_attributes = {})
|
10
|
+
raise Shark::ActionNotSupportedError,
|
11
|
+
'Shark::Contract#update_attributes is not supported'
|
12
|
+
end
|
13
|
+
|
14
|
+
def destroy
|
15
|
+
raise Shark::ActionNotSupportedError,
|
16
|
+
'Shark::Contract#destroy is not supported'
|
17
|
+
end
|
18
|
+
|
19
|
+
def save
|
20
|
+
if self['id'].present?
|
21
|
+
raise Shark::ActionNotSupportedError,
|
22
|
+
'Shark::Contract#save is not supported for persisted consents'
|
23
|
+
else
|
24
|
+
super
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -32,7 +32,7 @@ module Shark
|
|
32
32
|
log_info '[Shark][ContactService] Faking GET request'
|
33
33
|
log_info request.uri.to_s
|
34
34
|
|
35
|
-
type = request.uri.path.split('/')[
|
35
|
+
type = request.uri.path.split('/')[-1]
|
36
36
|
params = query_params_to_object(request.uri)
|
37
37
|
|
38
38
|
objects = if %w[contacts accounts].include?(type) && params['filter'].present?
|
@@ -52,8 +52,8 @@ module Shark
|
|
52
52
|
log_info '[Shark][ContactService] Faking GET request with ID'
|
53
53
|
log_info request.uri.to_s
|
54
54
|
|
55
|
-
type = request.uri.path.split('/')[2]
|
56
|
-
id = request.uri.path.split('/')[
|
55
|
+
type = request.uri.path.split('/')[-2]
|
56
|
+
id = request.uri.path.split('/')[-1]
|
57
57
|
query = request.uri.query_values
|
58
58
|
|
59
59
|
object = cache.find(type, id)
|
@@ -84,11 +84,10 @@ module Shark
|
|
84
84
|
log_info '[Shark][ContactService] Faking GET memberships request'
|
85
85
|
log_info request.uri.to_s
|
86
86
|
|
87
|
-
|
88
|
-
group_id = request.uri.path.split('/')[3]
|
87
|
+
group_id = request.uri.path.split('/')[-2]
|
89
88
|
contact_id = query_params_to_object(request.uri)['filter']['contact_id']
|
90
89
|
|
91
|
-
group = cache.find(
|
90
|
+
group = cache.find('groups', group_id)
|
92
91
|
|
93
92
|
if group.present?
|
94
93
|
contacts = group.dig('relationships', 'contacts', 'data')
|
@@ -107,8 +106,8 @@ module Shark
|
|
107
106
|
log_info "[Shark][ContactService] Faking PATCH request with body: #{request.body}"
|
108
107
|
log_info request.uri.to_s
|
109
108
|
|
110
|
-
type = request.uri.path.split('/')[2]
|
111
|
-
id = request.uri.path.split('/')[
|
109
|
+
type = request.uri.path.split('/')[-2]
|
110
|
+
id = request.uri.path.split('/')[-1]
|
112
111
|
parsed_data = JSON.parse(request.body)['data']
|
113
112
|
|
114
113
|
object = cache.find(type, id)
|
@@ -134,8 +133,8 @@ module Shark
|
|
134
133
|
log_info '[Shark][ContactService] Faking DELETE request'
|
135
134
|
log_info request.uri.to_s
|
136
135
|
|
137
|
-
type = request.uri.path.split('/')[2]
|
138
|
-
id = request.uri.path.split('/')[
|
136
|
+
type = request.uri.path.split('/')[-2]
|
137
|
+
id = request.uri.path.split('/')[-1]
|
139
138
|
|
140
139
|
object = cache.find(type, id)
|
141
140
|
|
data/lib/shark/rspec/helpers.rb
CHANGED
@@ -5,7 +5,6 @@ require_relative 'helpers/cache_helper'
|
|
5
5
|
require_relative 'fake_asset_service'
|
6
6
|
require_relative 'fake_contact_service'
|
7
7
|
require_relative 'fake_notification_service'
|
8
|
-
require_relative 'fake_consent_service'
|
9
8
|
require_relative 'fake_subscription_service'
|
10
9
|
require_relative 'fake_double_opt_in'
|
11
10
|
require_relative 'fake_mailing_service'
|
data/lib/shark/version.rb
CHANGED
data/lib/shark.rb
CHANGED
@@ -74,6 +74,7 @@ require 'shark/account'
|
|
74
74
|
require 'shark/activity'
|
75
75
|
require 'shark/consent'
|
76
76
|
require 'shark/contact'
|
77
|
+
require 'shark/contract'
|
77
78
|
require 'shark/double_opt_in/execution'
|
78
79
|
require 'shark/double_opt_in/request'
|
79
80
|
require 'shark/group'
|
@@ -84,6 +85,7 @@ require 'shark/permission'
|
|
84
85
|
require 'shark/subscription'
|
85
86
|
require 'shark/survey'
|
86
87
|
require 'shark/survey_participant'
|
88
|
+
require 'shark/contact_log'
|
87
89
|
|
88
90
|
require 'shark/form_service'
|
89
91
|
require 'shark/mailing_service'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bima-shark-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Huy Dinh
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-01
|
13
|
+
date: 2022-07-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -199,6 +199,7 @@ files:
|
|
199
199
|
- lib/shark/consent.rb
|
200
200
|
- lib/shark/contact.rb
|
201
201
|
- lib/shark/contact_log.rb
|
202
|
+
- lib/shark/contract.rb
|
202
203
|
- lib/shark/double_opt_in/execution.rb
|
203
204
|
- lib/shark/double_opt_in/request.rb
|
204
205
|
- lib/shark/error.rb
|
@@ -235,9 +236,6 @@ files:
|
|
235
236
|
- lib/shark/rspec/fake_asset_service/object_cache.rb
|
236
237
|
- lib/shark/rspec/fake_asset_service/public_id.rb
|
237
238
|
- 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
239
|
- lib/shark/rspec/fake_contact_service.rb
|
242
240
|
- lib/shark/rspec/fake_contact_service/object_cache.rb
|
243
241
|
- lib/shark/rspec/fake_contact_service/request.rb
|
@@ -1,44 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Shark
|
4
|
-
module RSpec
|
5
|
-
module FakeConsentService
|
6
|
-
class ObjectCache
|
7
|
-
include Singleton
|
8
|
-
attr_accessor :objects
|
9
|
-
|
10
|
-
def initialize
|
11
|
-
@objects = []
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.clear
|
15
|
-
instance.objects = []
|
16
|
-
end
|
17
|
-
|
18
|
-
def add(payload_data)
|
19
|
-
id = payload_data['attributes']['legal_subject_id']
|
20
|
-
existing_object = objects.detect { |o| o['id'] == id }
|
21
|
-
|
22
|
-
items = (existing_object.present? && existing_object['attributes']['items']) || {}
|
23
|
-
|
24
|
-
(payload_data['attributes']['items'] || {}).each do |name, attrs|
|
25
|
-
items[name] = attrs.merge({ 'updated_at' => Time.now })
|
26
|
-
end
|
27
|
-
|
28
|
-
objects.delete_if { |o| o['id'] == id }
|
29
|
-
|
30
|
-
object = {
|
31
|
-
'id' => id,
|
32
|
-
'attributes' => {
|
33
|
-
'items' => items
|
34
|
-
},
|
35
|
-
'type' => 'consents'
|
36
|
-
}
|
37
|
-
|
38
|
-
objects.push(object)
|
39
|
-
object
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'webmock/rspec'
|
4
|
-
|
5
|
-
module Shark
|
6
|
-
module RSpec
|
7
|
-
module FakeConsentService
|
8
|
-
class Request
|
9
|
-
include Singleton
|
10
|
-
|
11
|
-
def self.setup
|
12
|
-
instance = self.instance
|
13
|
-
instance.stub_requests
|
14
|
-
end
|
15
|
-
|
16
|
-
def stub_requests
|
17
|
-
WebMock.stub_request(:post, %r{^#{host}/consents}).to_return do |request|
|
18
|
-
log_info "[Shark][ConsentService] Faking POST request with body: #{request.body}"
|
19
|
-
|
20
|
-
payload_data = JSON.parse(request.body)['data']
|
21
|
-
object_data = ObjectCache.instance.add(payload_data)
|
22
|
-
|
23
|
-
SharkSpec.fake_response(200, data: object_data)
|
24
|
-
end
|
25
|
-
|
26
|
-
WebMock.stub_request(:get, %r{^#{host}/consents/.+}).to_return do |request|
|
27
|
-
log_info '[Shark][ConsentService] Faking GET request'
|
28
|
-
|
29
|
-
id = request.uri.path.split('/')[2]
|
30
|
-
|
31
|
-
object_data = ObjectCache.instance.objects.detect do |object|
|
32
|
-
object['id'] == id
|
33
|
-
end
|
34
|
-
|
35
|
-
if object_data.present?
|
36
|
-
SharkSpec.fake_response(200, data: object_data)
|
37
|
-
else
|
38
|
-
SharkSpec.fake_response(404, errors: [])
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def host
|
44
|
-
Shark.configuration.consent_service.site
|
45
|
-
end
|
46
|
-
|
47
|
-
def log_info(message)
|
48
|
-
Shark.logger.info message
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'fake_consent_service/object_cache'
|
4
|
-
require_relative 'fake_consent_service/request'
|
5
|
-
|
6
|
-
module Shark
|
7
|
-
module RSpec
|
8
|
-
module FakeConsentService
|
9
|
-
def self.setup
|
10
|
-
ObjectCache.clear
|
11
|
-
Request.setup
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.reset
|
15
|
-
ObjectCache.clear
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|