lutaml-hal 0.2.7 → 0.2.9

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: 1ccd4f7e6cc19013a9a8ff72475e93c7a9f3a8a97f4f96c6b9895259dc6028eb
4
- data.tar.gz: 7207f91815677a36deac52598b295f65fd9b930c0c53175a6ba222aeaf2b2fe8
3
+ metadata.gz: 32a0ed43a371481e47b7c3890239eaa7e78f8d9e3d960fc18f4e69bea8bb7e42
4
+ data.tar.gz: 5bf0fb2a1ab1158cf72f2bc3559e40ae2f0a435ea79b8a8577a881c48293bd06
5
5
  SHA512:
6
- metadata.gz: c01e4a7070bde715075cdf6735db72395615d9a968d46a887d7bd5c2318306751affa828634bc12951c0ea81a9711b730d0b0ce24a324bb12885521536c9b379
7
- data.tar.gz: 2111e44d1d19df9a6691de42aaa6887710bb2c9275881e34105860064665be1a3afff66aa83771d3576d71cfb18430573e80063ea767f8ce94e0129103ea1585
6
+ metadata.gz: d3f3fde781255922afa0c0f2cff99d4efea4698ac8b557b792c056d8fa974bdd16269614d0a994a93d4ccd76474214fcc1f0c7979283ba9342e85cc432c4cfc3
7
+ data.tar.gz: f811ab6bfb2986d3f164cf04b16c65327d65850539807863b7d77ba67b8fbc8596329a0fba92d117a265c1b81006aede5ed95106740b0d72cc44f8737cd47d61
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'faraday'
4
4
  require 'faraday/follow_redirects'
5
- require 'json'
5
+ require 'yeptris'
6
6
  require 'rainbow'
7
7
 
8
8
  module Lutaml
@@ -59,7 +59,9 @@ module Lutaml
59
59
  def get(url, params = {})
60
60
  with_faraday_errors do
61
61
  @rate_limiter.with_rate_limiting do
62
- handle_response(record_response(@connection.get(url, params)), url)
62
+ response = @connection.get(url, params)
63
+ parse_json_body(response)
64
+ handle_response(record_response(response), url)
63
65
  end
64
66
  end
65
67
  end
@@ -70,6 +72,7 @@ module Lutaml
70
72
  response = @connection.get(url) do |req|
71
73
  headers.each { |key, value| req.headers[key] = value }
72
74
  end
75
+ parse_json_body(response)
73
76
  handle_response(record_response(response), url)
74
77
  end
75
78
  end
@@ -100,12 +103,37 @@ module Lutaml
100
103
  def create_connection
101
104
  Faraday.new(url: @api_url) do |conn|
102
105
  conn.use Faraday::FollowRedirects::Middleware
103
- conn.request :json
104
- conn.response :json, content_type: /\bjson$/
105
106
  conn.adapter Faraday.default_adapter
106
107
  end
107
108
  end
108
109
 
110
+ # The Faraday `response :json` middleware is deliberately not installed:
111
+ # it parses with `::JSON.parse(body, @parser_options || {})` — a
112
+ # positional options hash json 3.0 rejects — which used to force a
113
+ # json < 3 pin on every dependent bundle. JSON bodies are parsed here,
114
+ # with yeptris, under the same content-type matcher the middleware
115
+ # used, so the parsed/unparsed split does not move.
116
+ def parse_json_body(response)
117
+ # Only String bodies are parsed — the middleware this replaces parsed
118
+ # nothing else (a Hash body arrives already materialized, as from a
119
+ # Faraday test adapter).
120
+ return response unless response.body.is_a?(String)
121
+
122
+ # The matcher applies to the bare type: parameters split off before
123
+ # it, exactly as the middleware did
124
+ # ("application/hal+json;version=1.0" parses).
125
+ content_type = response.headers['Content-Type'].to_s.split(';', 2).first.to_s
126
+ return response unless content_type.match?(/\bjson$/)
127
+
128
+ # Faraday::Response exposes body read-only; env is where the
129
+ # middleware itself wrote it, so the parsed value stays visible to
130
+ # #last_response consumers exactly as it was under the middleware.
131
+ response.env.body = Yeptris::JSON.load(response.body)
132
+ response
133
+ rescue Yeptris::JSON::ParseError => e
134
+ raise ParsingError, "Response parsing error: #{e.message}"
135
+ end
136
+
109
137
  def handle_response(response, url)
110
138
  debug_api_log(response, url) if @debug
111
139
 
@@ -147,11 +175,11 @@ module Lutaml
147
175
 
148
176
  puts "\nHeaders:"
149
177
  headers_hash = response.headers.to_h
150
- puts JSON.pretty_generate(headers_hash)
178
+ puts Yeptris::JSON.dump(headers_hash, pretty: true)
151
179
 
152
180
  puts "\nResponse body:"
153
181
  if response.body.is_a?(Hash) || response.body.is_a?(Array)
154
- puts JSON.pretty_generate(response.body)
182
+ puts Yeptris::JSON.dump(response.body, pretty: true)
155
183
  else
156
184
  puts response.body.inspect
157
185
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Lutaml
4
4
  module Hal
5
- VERSION = '0.2.7'
5
+ VERSION = '0.2.9'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lutaml-hal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-10-19 00:00:00.000000000 Z
11
+ date: 2026-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -16,70 +16,84 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '2.7'
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.0'
26
+ version: '2.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faraday-follow_redirects
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.3'
33
+ version: '0.5'
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: '0.3'
40
+ version: '0.5'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: lutaml-model
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.8.114
47
+ version: 0.8.148
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: 0.8.114
54
+ version: 0.8.148
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: lutaml-store
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.3'
61
+ version: 0.3.2
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.3'
68
+ version: 0.3.2
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rainbow
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '3.0'
75
+ version: '3.1'
76
76
  type: :runtime
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: '3.0'
82
+ version: '3.1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: yeptris
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.6.51
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.6.51
83
97
  description: Hypertext Application Language (HAL) implementation for Lutaml model
84
98
  email:
85
99
  - open.source@ribose.com