bima-shark-sdk 2.4.3 → 2.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 36a6d2d392e0c48fdde77f944eb0e758439fd5e4
4
- data.tar.gz: bc0e578ff45dbf92cf2ec2f4594d2957129c3b4e
2
+ SHA256:
3
+ metadata.gz: 8ab74483354f85310c09fe0f53a00143fbd8042e81b0ed8d7226d77909ff2e24
4
+ data.tar.gz: 4c2d6b001cd4dfbd451c59c2e27368b55ecca753fd0a63f4a4350216b790be91
5
5
  SHA512:
6
- metadata.gz: 41efb8f03436ad58fe4cec3d189440748260f2dfb1354ef1a4510f520a9573c302450297da88d7f8861b5221e0891726415c83b8892b18094e72007323c328fc
7
- data.tar.gz: fbe011415cd0ae7f7511bf4a2e46ab8e9787ef68b4f224a90c40af4fe0d8503fe6eace1e8d0c68497df1ce12b3865dfd2727e8687804474a33753432f047920e
6
+ metadata.gz: 26060a07b63c8f2c37a5fe505a5e4aee3bb907ebe1a75340ae4676b05dbdc3377d2e6175ef12fe62e019d98f77680df720527b947f8ffd4e1e0ccb4066ce44fa
7
+ data.tar.gz: 13f5e6dd6a7b1b83c98f8e40232349e6d8eaa30f60058363d838491596eb06ee2f8a37cf08868ea71316bd77b5d08c90d5bbd7c151db5120fce8fcf2edb91e24
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.3
2
+ TargetRubyVersion: 2.7
3
3
  Exclude:
4
4
  - 'config/routes.rb'
5
5
  - 'db/schema.rb'
data/.travis.yml CHANGED
@@ -1,8 +1,8 @@
1
1
  language: ruby
2
- cache: bundler
2
+ # cache: bundler
3
3
  rvm:
4
- - 2.3.8
5
- - 2.5.7
4
+ - 2.7.6
5
+ - 3.0.2
6
6
  before_install:
7
7
  - gem install bundler -v '~> 1.17'
8
8
  script:
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  ## Changelog
2
2
 
3
+ #### 2.5.0
4
+ - Extend `with_service_token` with `with_auth_token` which allows to send custom `Authorization` header, not only `Bearer`
5
+ - remove `Shark::Subscription`
6
+
7
+ #### 2.4.4
8
+ * lowest supported Ruby version is 2.7
9
+ * add `recipient` to `Shark::DoubleOptIn::Execution`
10
+
3
11
  #### 2.4.3
4
12
  - allow `Shark::MailingService::Mailer#mail` to use separate layouts
5
13
  - rename `Shark::MailingService::Mailers::BaseMailer` to `Shark::MailingService::Mailer`
data/README.md CHANGED
@@ -42,6 +42,21 @@ Shark::MailingService.use_shark_mailer do |mailer|
42
42
  end
43
43
  ```
44
44
 
45
+ To sign your requests with custom tokens, for instance with JWT:
46
+ ```ruby
47
+ def deliver
48
+ access_id = 'access_id'
49
+ secret_key = 'secret_key'
50
+
51
+ signature = JWT.encode({ exp: Time.now.to_i + (1 * 60) }, secret_key, 'HS256')
52
+
53
+ Shark.with_auth_token("JWT #{access_id}:#{signature}") do
54
+ super
55
+ end
56
+ end
57
+
58
+ ```
59
+
45
60
  ## Testing
46
61
 
47
62
  ```
@@ -38,9 +38,7 @@ module Shark
38
38
  request_headers = connection_options_headers.merge(headers || {})
39
39
  request_params = connection_options_params.merge(params || {})
40
40
 
41
- if Shark.service_token.present?
42
- request_headers['Authorization'] = "Bearer #{Shark.service_token}"
43
- end
41
+ request_headers['Authorization'] = Shark.auth_token if Shark.auth_token.present?
44
42
 
45
43
  @connection.send(request_action) do |request|
46
44
  request.url(url)
@@ -29,12 +29,6 @@ module Shark
29
29
  end
30
30
  end
31
31
 
32
- module SubscriptionService
33
- module Resource
34
- mattr_accessor :site
35
- end
36
- end
37
-
38
32
  module SurveyService
39
33
  module Resource
40
34
  mattr_accessor :site
@@ -65,7 +59,6 @@ module Shark
65
59
  attr_reader :form_service
66
60
  attr_reader :survey_service
67
61
  attr_reader :notification_service
68
- attr_reader :subscription_service
69
62
  attr_reader :asset_service
70
63
  attr_reader :mailing_service
71
64
 
@@ -76,7 +69,6 @@ module Shark
76
69
  @form_service = Service.new
77
70
  @mailing_service = Service.new
78
71
  @notification_service = NotificationService::Resource
79
- @subscription_service = SubscriptionService::Resource
80
72
  @survey_service = SurveyService::Resource
81
73
  end
82
74
  end
@@ -5,7 +5,7 @@ module Shark
5
5
  class Execution < Base
6
6
  extend DoubleOptIn::Resource
7
7
 
8
- attr_accessor :payload, :request_type
8
+ attr_accessor :payload, :request_type, :recipient
9
9
 
10
10
  def self.verify(verification_token)
11
11
  response = connection.run(:post, "/executions/#{verification_token}/verify")
@@ -37,7 +37,7 @@ module Shark
37
37
  end
38
38
 
39
39
  def initialize(data)
40
- %w[payload request_type].each do |key|
40
+ %w[payload request_type recipient].each do |key|
41
41
  public_send("#{key}=", data['attributes'][key])
42
42
  end
43
43
  end
@@ -96,5 +96,3 @@ module Shark
96
96
  end
97
97
  end
98
98
  end
99
-
100
-
@@ -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_subscription_service'
9
8
  require_relative 'fake_double_opt_in'
10
9
  require_relative 'fake_mailing_service'
11
10
  require_relative 'fake_survey_service'
data/lib/shark/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Shark
4
- VERSION = '2.4.3'
4
+ VERSION = '2.5.0'
5
5
  end
data/lib/shark.rb CHANGED
@@ -32,28 +32,41 @@ module Shark
32
32
  # @param token [String] The service token for the authorization header
33
33
  # @param block [Block] The block where service token authorization will be set for
34
34
  # @api public
35
- def self.with_service_token(token)
35
+ def self.with_service_token(token, &block)
36
36
  if token.is_a?(String)
37
- self.service_token = token
37
+ auth_token = "Bearer #{token}"
38
38
  elsif token.respond_to?(:jwt)
39
- self.service_token = token.jwt
39
+ auth_token = "Bearer #{token.jwt}"
40
40
  else
41
41
  raise ArgumentError, 'Parameter :token must be kind of String.'
42
42
  end
43
43
 
44
+ with_auth_token(auth_token, &block)
45
+ end
46
+
47
+ # Within the given block, add the authorization header token to all api requests.
48
+ #
49
+ # @param token [String] The token for the authorization header
50
+ # @param block [Block] The block where authorization token will be set for
51
+ # @api public
52
+ def self.with_auth_token(token)
53
+ raise ArgumentError, 'Parameter :token must be kind of String.' unless token.is_a?(String)
54
+
55
+ self.auth_token = token
56
+
44
57
  yield
45
58
  ensure
46
- self.service_token = nil
59
+ self.auth_token = nil
47
60
  end
48
61
 
49
62
  # @api public
50
- def self.service_token
51
- Thread.current['shark-service-token']
63
+ def self.auth_token
64
+ Thread.current['shark-auth-token']
52
65
  end
53
66
 
54
67
  # @api private
55
- def self.service_token=(value)
56
- Thread.current['shark-service-token'] = value
68
+ def self.auth_token=(value)
69
+ Thread.current['shark-auth-token'] = value
57
70
  end
58
71
 
59
72
  #
@@ -82,7 +95,6 @@ require 'shark/membership'
82
95
  require 'shark/notification'
83
96
  require 'shark/package'
84
97
  require 'shark/permission'
85
- require 'shark/subscription'
86
98
  require 'shark/survey'
87
99
  require 'shark/survey_participant'
88
100
  require 'shark/contact_log'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bima-shark-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.3
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - bima-team@justrelate.com
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-13 00:00:00.000000000 Z
11
+ date: 2024-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -244,9 +244,6 @@ files:
244
244
  - lib/shark/rspec/fake_mailing_service/request.rb
245
245
  - lib/shark/rspec/fake_notification_service.rb
246
246
  - lib/shark/rspec/fake_notification_service/request.rb
247
- - lib/shark/rspec/fake_subscription_service.rb
248
- - lib/shark/rspec/fake_subscription_service/object_cache.rb
249
- - lib/shark/rspec/fake_subscription_service/request.rb
250
247
  - lib/shark/rspec/fake_survey_service.rb
251
248
  - lib/shark/rspec/fake_survey_service/object_cache.rb
252
249
  - lib/shark/rspec/fake_survey_service/request.rb
@@ -257,14 +254,13 @@ files:
257
254
  - lib/shark/rspec/helpers/fixtures.rb
258
255
  - lib/shark/rspec/helpers/form_service_helper.rb
259
256
  - lib/shark/rspec/helpers/response.rb
260
- - lib/shark/subscription.rb
261
257
  - lib/shark/survey.rb
262
258
  - lib/shark/survey_participant.rb
263
259
  - lib/shark/version.rb
264
260
  homepage: https://github.com/infopark-customers/bima-shark-sdk
265
261
  licenses: []
266
262
  metadata: {}
267
- post_install_message:
263
+ post_install_message:
268
264
  rdoc_options: []
269
265
  require_paths:
270
266
  - lib
@@ -279,9 +275,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
279
275
  - !ruby/object:Gem::Version
280
276
  version: '0'
281
277
  requirements: []
282
- rubyforge_project:
283
- rubygems_version: 2.5.2.3
284
- signing_key:
278
+ rubygems_version: 3.5.17
279
+ signing_key:
285
280
  specification_version: 4
286
281
  summary: ''
287
282
  test_files: []
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Shark
4
- module RSpec
5
- module FakeSubscriptionService
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.delete('id')
20
-
21
- if id && !objects.find { |subscription| subscription['id'] == id }
22
- object = {
23
- id: id,
24
- attributes: payload_data
25
- }
26
-
27
- objects << object
28
- else
29
- objects << {
30
- id: SecureRandom.uuid,
31
- attributes: payload_data
32
- }
33
- end
34
- objects.last
35
- end
36
-
37
- def add_multiple(payload_data)
38
- added = []
39
- payload_data.each { |subscription| added << add(subscription) }
40
- added.compact
41
- end
42
-
43
- def remove(id)
44
- objects.delete_if { |subscription| subscription[:id] == id }
45
- end
46
-
47
- def remove_multiple(payload_data)
48
- payload_data.each { |subscription| remove(subscription['id']) }
49
- objects
50
- end
51
- end
52
- end
53
- end
54
- end
@@ -1,100 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'webmock/rspec'
4
-
5
- module Shark
6
- module RSpec
7
- module FakeSubscriptionService
8
- class Request
9
- include Singleton
10
-
11
- ALLOWED_FILTERS = %w[name subscriberId].freeze
12
-
13
- def self.setup
14
- instance = self.instance
15
- instance.stub_requests
16
- end
17
-
18
- def stub_requests
19
- WebMock.stub_request(:post, %r{^#{host}/subscriptions}).to_return do |request|
20
- log_info "Faking POST request with body: #{request.body}"
21
-
22
- payload_data = JSON.parse(request.body)['data']['attributes']
23
-
24
- object_data = ObjectCache.instance.add(payload_data)
25
-
26
- SharkSpec.fake_response(201, data: object_data)
27
- end
28
-
29
- WebMock.stub_request(
30
- :post,
31
- %r{^#{host}/subscriptions/bulk_creation}
32
- ).to_return do |request|
33
- log_info "Faking POST request with body: #{request.body}"
34
-
35
- payload_data = JSON.parse(request.body)['data']['attributes']['subscriptions']
36
-
37
- objects_data = ObjectCache.instance.add_multiple(payload_data)
38
-
39
- SharkSpec.fake_response(201, data: objects_data)
40
- end
41
-
42
- WebMock.stub_request(
43
- :post,
44
- %r{^#{host}/subscriptions/bulk_deletion}
45
- ).to_return do |request|
46
- log_info "Faking POST request with body: #{request.body}"
47
-
48
- payload_data = JSON.parse(request.body)['data']['attributes']['subscriptions']
49
- ObjectCache.instance.remove_multiple(payload_data)
50
-
51
- SharkSpec.fake_response(204, nil)
52
- end
53
-
54
- WebMock.stub_request(:delete, %r{^#{host}/subscriptions/.+}).to_return do |request|
55
- log_info "Faking DELETE request with body: #{request.body}"
56
-
57
- id = request.uri.path.split('/')[2]
58
-
59
- ObjectCache.instance.remove(id)
60
-
61
- SharkSpec.fake_response(204, nil)
62
- end
63
-
64
- WebMock.stub_request(:get, %r{^#{host}/subscriptions}).to_return do |request|
65
- log_info 'Faking GET request'
66
-
67
- query_parameters = request.uri.query_values
68
-
69
- objects_data = if query_parameters
70
- params = {}
71
- query_parameters.each do |key, value|
72
- parsed_key = key.match(/filter\[(.*)\]/)[1].camelize(:lower)
73
- params[parsed_key] = value if ALLOWED_FILTERS.include?(parsed_key)
74
- end
75
-
76
- ObjectCache.instance.objects.select do |subscription|
77
- conditions = params.map do |param, value|
78
- subscription[:attributes][param] == value
79
- end
80
- conditions.all?
81
- end
82
- else
83
- ObjectCache.instance.objects
84
- end
85
-
86
- SharkSpec.fake_response(200, data: objects_data)
87
- end
88
- end
89
-
90
- def host
91
- Shark.configuration.subscription_service.site
92
- end
93
-
94
- def log_info(message)
95
- Shark.logger.info "[Shark::SubscriptionService] #{message}"
96
- end
97
- end
98
- end
99
- end
100
- end
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'fake_subscription_service/object_cache'
4
- require_relative 'fake_subscription_service/request'
5
-
6
- module Shark
7
- module RSpec
8
- module FakeSubscriptionService
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
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Shark
4
- class Subscription < Base
5
- extend SubscriptionService::Resource
6
-
7
- custom_endpoint :bulk_creation, on: :collection, request_method: :post
8
- custom_endpoint :bulk_deletion, on: :collection, request_method: :post
9
-
10
- def self.create_multiple(attributes)
11
- bulk_creation(subscriptions_attributes(attributes))
12
- end
13
-
14
- def self.destroy_multiple(attributes)
15
- bulk_deletion(subscriptions_attributes(attributes))
16
- end
17
-
18
- def save
19
- if self['id'].present?
20
- raise Shark::ActionNotSupportedError,
21
- 'Shark::Subscription#save is not supported for persisted subscriptions'
22
- else
23
- super
24
- end
25
- end
26
-
27
- def update_attributes(_attributes = {})
28
- raise Shark::ActionNotSupportedError,
29
- 'Shark::Subscription#update_attributes is not supported'
30
- end
31
-
32
- def self.subscriptions_attributes(attributes)
33
- {
34
- data: {
35
- type: 'bulk-subscriptions',
36
- attributes: {
37
- subscriptions: attributes
38
- }
39
- }
40
- }
41
- end
42
- end
43
- end