conversant 1.0.16 → 1.0.18

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
2
  SHA256:
3
- metadata.gz: 524cbc4eca5d29c65fe76100c994fb134a03d8a98798ca90781493f9b7a9dc01
4
- data.tar.gz: d1dbfc44df7dba57788ad5b9545c30561b613845a6f3113c8de60868b0ce58c0
3
+ metadata.gz: b40e1ec2641cec2c860a7de9bb7a5bb9ff8a85bde847cf9520139f288c9883c3
4
+ data.tar.gz: 9c15c4e3153aad9d60782fe748e3e4324ba573307b6ba91f357be9d78cfab3d1
5
5
  SHA512:
6
- metadata.gz: 627c11b7cb53f694758529214e9217e37d0fc8f9e67a26ff34c735d2bd7bb936de55fd5195c3b3ffd32a757b17ed1fc97176786dd05d14686be53232b638e26e
7
- data.tar.gz: 68983f7a639ed7327c172fc7bbc6d492bb7096bfd9d3619c3a0426b6ba1f4c64b973f58aa2f2a1d3c129d9b75bf4d944efb01cd8ef94b3df5c265a80c91ed950
6
+ metadata.gz: ea35d31fc8722f9955e620fb285fe8376fa57a72d18da0a1de12f44de82cff8ad71f76a0c0ce30b50a63faab4cccccdf095867df19ecf4f841762d7f64da07bc
7
+ data.tar.gz: 04f3fed5093b6388c9e66b7991542fe459cbd2b59dec0d50ad21b7de5e358f7f25445cd9617c748236d1b2ced8cc71aea03a7083b05ea4fccf4a75bf6cc87223
data/CHANGELOG.md CHANGED
@@ -5,6 +5,42 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.0.18] - 2025-10-08
9
+
10
+ ### Fixed
11
+ - **Portal Service Authentication**: Fixed SESSION cookie handling to use root sessions directly
12
+ - Portal service now uses root SESSION + SSO_GW_SESSION2 cookies directly instead of attempting to exchange them
13
+ - Removed incorrect cookie extraction from response (Portal doesn't return a new SESSION cookie)
14
+ - Changed from extracting `response.cookies['SESSION']` to using `sessions[:session]` from SSO login
15
+ - Resolves "NO_SESSION_IN_RESPONSE" error when calling `portal.appliances`
16
+ - Matches original implementation behavior where root sessions are used for all Portal API calls
17
+
18
+ ### Changed
19
+ - Updated `Portal#fetch_new_session` method to return root SESSION cookie directly after verification
20
+ - Test call to `#{portal_endpoint}/?cId=#{customer_id}` now only validates session instead of extracting cookies
21
+ - Log message changed from "REQUESTING_SESSION" to "USING_ROOT_SESSIONS" for clarity
22
+
23
+ ### Impact
24
+ - Portal service now works correctly without "Missing SESSION for Portal" errors
25
+ - `portal.appliances` and other Portal API methods now authenticate properly
26
+ - Consistent with other services (CDN, LMS, VMS) that also exchange sessions but Portal uses root sessions directly
27
+
28
+ ## [1.0.17] - 2025-10-01
29
+
30
+ ### Fixed
31
+ - **Redis Dependency Compatibility**: Changed redis dependency from `~> 5.0` to `>= 4.5.0` for compatibility with sidekiq 6.x
32
+ - Resolves version conflict where sidekiq ~> 6.5.8 requires redis < 5
33
+ - Now compatible with both redis 4.x and 5.x versions
34
+ - **Logger Consistency**: Fixed inconsistent identifier access patterns across all service classes
35
+ - Changed direct `@parent.identifier` calls to `@parent.send(:identifier)` for consistency
36
+ - Updated files: vms/analytics.rb, vms/business.rb, vms/transcoding.rb, lms/domain.rb, lms/dashboard.rb
37
+
38
+ ### Improved
39
+ - **Documentation Enhancement**: Enhanced RubyDoc documentation for all LMS and VMS partner classes
40
+ - Added detailed method descriptions with parameter formats and return value structures
41
+ - Added practical usage examples for all methods
42
+ - Improved documentation for: LMS::Partner::Business, LMS::Partner::Report, VMS::Partner::Business
43
+
8
44
  ## [1.0.16] - 2025-10-01
9
45
 
10
46
  ### Added
data/conversant.gemspec CHANGED
@@ -33,17 +33,17 @@ Gem::Specification.new do |spec|
33
33
  spec.require_paths = ['lib']
34
34
 
35
35
  # Runtime dependencies
36
- spec.add_runtime_dependency 'rest-client', '~> 2.1'
37
- spec.add_runtime_dependency 'redis', '~> 5.0'
38
36
  spec.add_runtime_dependency 'json', '~> 2.6'
37
+ spec.add_runtime_dependency 'redis', '>= 4.5.0'
38
+ spec.add_runtime_dependency 'rest-client', '~> 2.1'
39
39
 
40
40
  # Development dependencies
41
41
  spec.add_development_dependency 'bundler', '~> 2.0'
42
+ spec.add_development_dependency 'pry', '~> 0.14'
42
43
  spec.add_development_dependency 'rake', '~> 13.0'
43
44
  spec.add_development_dependency 'rspec', '~> 3.12'
44
45
  spec.add_development_dependency 'rubocop', '~> 1.50'
45
- spec.add_development_dependency 'webmock', '~> 3.18'
46
46
  spec.add_development_dependency 'vcr', '~> 6.1'
47
- spec.add_development_dependency 'pry', '~> 0.14'
47
+ spec.add_development_dependency 'webmock', '~> 3.18'
48
48
  spec.add_development_dependency 'yard', '~> 0.9'
49
- end
49
+ end
@@ -146,17 +146,18 @@ module Conversant
146
146
  # Fetches a new SESSION cookie for Portal API access
147
147
  #
148
148
  # Authenticates with root portal sessions (SESSION + SSO_GW_SESSION2) and
149
- # exchanges them for a customer-specific SESSION cookie. The new session
150
- # is cached in Redis with the configured TTL.
149
+ # uses them directly for Portal API calls. Makes a test call to verify
150
+ # the sessions are valid.
151
151
  #
152
152
  # @return [String, nil] The SESSION cookie value, or nil if authentication fails
153
153
  def fetch_new_session
154
154
  sessions = authenticate
155
155
  return nil unless sessions && sessions[:session] && sessions[:sso_gw_session2]
156
156
 
157
- logger.debug "#{identifier}.METHOD:authorize.REQUESTING_SESSION"
157
+ logger.debug "#{identifier}.METHOD:authorize.USING_ROOT_SESSIONS"
158
158
 
159
- response = RestClient.get(
159
+ # Make a test call to verify sessions are valid
160
+ RestClient.get(
160
161
  "#{portal_endpoint}/?cId=#{customer_id}",
161
162
  {
162
163
  authority: URI.parse(portal_endpoint).hostname,
@@ -171,15 +172,11 @@ module Conversant
171
172
  }
172
173
  )
173
174
 
174
- if response.cookies['SESSION']
175
- session_cookie = response.cookies['SESSION']
176
- redis.set(session_cache_key, session_cookie, ex: configuration.cache_ttl)
177
- logger.debug "#{identifier}.METHOD:authorize.SESSION_OBTAINED"
178
- session_cookie
179
- else
180
- logger.error "#{identifier}.METHOD:authorize.NO_SESSION_IN_RESPONSE"
181
- nil
182
- end
175
+ # Cache and return the root SESSION cookie
176
+ session_cookie = sessions[:session]
177
+ redis.set(session_cache_key, session_cookie, ex: configuration.cache_ttl)
178
+ logger.debug "#{identifier}.METHOD:authorize.SESSION_OBTAINED"
179
+ session_cookie
183
180
  rescue RestClient::Unauthorized, RestClient::Forbidden => e
184
181
  logger.error "#{identifier}.METHOD:authorize.AUTH_ERROR:#{e.message}"
185
182
  nil
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Conversant
4
- VERSION = '1.0.16'
4
+ VERSION = '1.0.18'
5
5
  end
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conversant
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.16
4
+ version: 1.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tho Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-10-01 00:00:00.000000000 Z
11
+ date: 2025-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rest-client
14
+ name: json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.1'
19
+ version: '2.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.1'
26
+ version: '2.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: redis
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '5.0'
33
+ version: 4.5.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '5.0'
40
+ version: 4.5.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: json
42
+ name: rest-client
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '2.6'
47
+ version: '2.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '2.6'
54
+ version: '2.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -67,61 +67,61 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '2.0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rake
70
+ name: pry
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '13.0'
75
+ version: '0.14'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '13.0'
82
+ version: '0.14'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rspec
84
+ name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '3.12'
89
+ version: '13.0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '3.12'
96
+ version: '13.0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: rubocop
98
+ name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.50'
103
+ version: '3.12'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '1.50'
110
+ version: '3.12'
111
111
  - !ruby/object:Gem::Dependency
112
- name: webmock
112
+ name: rubocop
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '3.18'
117
+ version: '1.50'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '3.18'
124
+ version: '1.50'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: vcr
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -137,19 +137,19 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '6.1'
139
139
  - !ruby/object:Gem::Dependency
140
- name: pry
140
+ name: webmock
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '0.14'
145
+ version: '3.18'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '0.14'
152
+ version: '3.18'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: yard
155
155
  requirement: !ruby/object:Gem::Requirement