apia 3.7.0 → 3.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/apia/definitions/error.rb +1 -1
- data/lib/apia/dsls/endpoint.rb +1 -1
- data/lib/apia/endpoint.rb +7 -3
- data/lib/apia/request.rb +1 -1
- data/lib/apia/response.rb +7 -4
- data/lib/apia/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5516f53625b231f86ae297b41c2b3939058685ec3ab69ce6cd210c2fc25c277a
|
4
|
+
data.tar.gz: 051c427ba4ba188b61a14071f2c36ca4c90509a109126c8336e43b4a3c59b435
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43a29e0260f50c640a34c88d3224f446911dc5defdb4e21e5a617e80af27b1c87d1495f8d8a5a164d49ab747836f5d19dc6303bff916e0f7c4eae24c1f704209
|
7
|
+
data.tar.gz: ed2d4c4f0c69b0455f16948f811e82dfc1f2867a1edaef9850151c693d3642c9bcbf5c7e9eb6a4df2c4334a2dd16e324e44ee7adc30a1685c301a2a832aa6d6f
|
data/lib/apia/dsls/endpoint.rb
CHANGED
data/lib/apia/endpoint.rb
CHANGED
@@ -47,7 +47,7 @@ module Apia
|
|
47
47
|
response = Response.new(request, self)
|
48
48
|
environment = RequestEnvironment.new(request, response)
|
49
49
|
|
50
|
-
catch_errors(response) do
|
50
|
+
catch_errors(response, environment) do
|
51
51
|
# Determine an authenticator for this endpoint
|
52
52
|
request.authenticator = definition.authenticator || request.controller&.definition&.authenticator || request.api&.definition&.authenticator
|
53
53
|
|
@@ -92,10 +92,14 @@ module Apia
|
|
92
92
|
#
|
93
93
|
# @param response [Apia::Response]
|
94
94
|
# @return [void]
|
95
|
-
def catch_errors(response)
|
95
|
+
def catch_errors(response, environment)
|
96
96
|
yield
|
97
97
|
rescue Apia::RuntimeError => e
|
98
|
-
|
98
|
+
# If the error was triggered by the authenticator, the cors headers wont yet have been merged
|
99
|
+
# so ensure cors headers are merged here
|
100
|
+
response.headers.merge!(environment.cors.to_headers)
|
101
|
+
|
102
|
+
catch_errors(response, environment) do
|
99
103
|
response.body = { error: e.hash }
|
100
104
|
response.status = e.http_status
|
101
105
|
response.headers['x-api-schema'] = 'json-error'
|
data/lib/apia/request.rb
CHANGED
data/lib/apia/response.rb
CHANGED
@@ -70,11 +70,14 @@ module Apia
|
|
70
70
|
#
|
71
71
|
# @return [Array]
|
72
72
|
def rack_triplet
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
73
|
+
# Errors will always be sent as a hash intended for JSON encoding,
|
74
|
+
# even if the endpoint specifies a plain text response, so only
|
75
|
+
# send a pain response if the type is plaintext _and_ the body is
|
76
|
+
# a string
|
77
|
+
if @type == PLAIN && body.is_a?(String)
|
77
78
|
Rack.plain_triplet(body, headers: headers, status: status)
|
79
|
+
else
|
80
|
+
Rack.json_triplet(body, headers: headers, status: status)
|
78
81
|
end
|
79
82
|
end
|
80
83
|
|
data/lib/apia/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.7.
|
4
|
+
version: 3.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Cooke
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|