naranya_ecm-sdk 0.0.50 → 0.0.51
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 +4 -4
- data/Gemfile +3 -0
- data/lib/naranya_ecm-sdk/version.rb +1 -1
- data/lib/naranya_ecm/rest/errors.rb +19 -3
- data/lib/ncontent/sdk/config.rb +4 -0
- data/lib/ncontent/sdk/faraday_middleware.rb +1 -1
- data/lib/ncontent/sdk/faraday_middleware/request_body_on_environment.rb +25 -0
- data/lib/ncontent/sdk/rest_client.rb +33 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c55ea1f4ccd068045f3c56d2acc2bac64a280b25
|
4
|
+
data.tar.gz: 77f6be226eea9535161ce14616c042f0f967d65b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a50a5884274b367d8211a088e53061c9312a27814cc475529c6bde3b7a2d7f1ec1f1769649758a0f8e150dc3fafe1f4ec474fed2b05bbb0df62f79ac8312622
|
7
|
+
data.tar.gz: bb4073ba62463c9dfea69a5f204ddb334acc28a53920745fa65fcfc4848839147e1224b6660a684dc8f00ffeadba94c033a4ca07b05e201387787cead05156fc
|
data/Gemfile
CHANGED
@@ -12,8 +12,8 @@ module NaranyaEcm::Rest
|
|
12
12
|
end
|
13
13
|
|
14
14
|
##
|
15
|
-
# Captura un response y genera
|
16
|
-
def self.
|
15
|
+
# Captura un response y genera una excepción.
|
16
|
+
def self.build_from_failed_response(response, message = "")
|
17
17
|
klass = case response.status
|
18
18
|
when 401 then AuthorizationRequired
|
19
19
|
when 403 then Forbidden
|
@@ -21,7 +21,14 @@ module NaranyaEcm::Rest
|
|
21
21
|
when 422 then UnprocessableEntity
|
22
22
|
else RemoteFailed
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
|
+
klass.new response, "Server responded with code #{response.status}. Message: '#{message}'"
|
26
|
+
end
|
27
|
+
|
28
|
+
##
|
29
|
+
# Captura un response y avienta una excepción.
|
30
|
+
def self.raise_by_failed_response(response, message = "")
|
31
|
+
raise build_from_failed_response(response, message)
|
25
32
|
end
|
26
33
|
|
27
34
|
end
|
@@ -95,6 +102,15 @@ module NaranyaEcm::Rest
|
|
95
102
|
end
|
96
103
|
|
97
104
|
class RemoteFailed < RestError
|
105
|
+
def initialize(given_response, msg = "")
|
106
|
+
response_env = given_response.env
|
107
|
+
|
108
|
+
# Override the message:
|
109
|
+
msg = "Request '#{response_env.method.upcase} #{response_env.url.path}' failed with HTTP status #{response_env.status}."
|
110
|
+
msg += " Request-Body: #{response_env[:request_body]}" if response_env[:request_body].present?
|
111
|
+
msg += " Response-Body: #{given_response.body.inspect}" if given_response.respond_to?(:body) && given_response.body.present?
|
112
|
+
super(given_response, msg)
|
113
|
+
end
|
98
114
|
end
|
99
115
|
|
100
116
|
end
|
data/lib/ncontent/sdk/config.rb
CHANGED
@@ -66,6 +66,10 @@ module NContent
|
|
66
66
|
|
67
67
|
config_accessor(:notification_processing_modules) { [] }
|
68
68
|
|
69
|
+
def new_relic_agent_available?
|
70
|
+
defined?(::NewRelic) && defined?(::NewRelic::Agent)
|
71
|
+
end
|
72
|
+
|
69
73
|
def self.parse_yaml(yaml_path)
|
70
74
|
YAML.load(ERB.new(File.read(yaml_path)).result) if File.exist?(yaml_path)
|
71
75
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module NContent
|
2
|
+
module SDK
|
3
|
+
module FaradayMiddleware
|
4
|
+
|
5
|
+
# Adds the required response format to the request parameters, in order for
|
6
|
+
# the SDK to work:
|
7
|
+
class RequestBodyOnEnvironment < Faraday::Middleware
|
8
|
+
|
9
|
+
def call(request_env)
|
10
|
+
|
11
|
+
# Evitar en peticiones a '/oauth/token' y cuando no exista body.
|
12
|
+
# Típicamente las peticiones GET no tienen body:
|
13
|
+
if request_env.url.path != '/oauth/token' && request_env.respond_to?(:body) && request_env.body.present?
|
14
|
+
request_body = request_env.body
|
15
|
+
end
|
16
|
+
|
17
|
+
@app.call(request_env).on_complete do |response_env|
|
18
|
+
response_env[:request_body] = request_body if request_body.present?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'oauth2'
|
2
2
|
require 'ncontent/sdk/faraday_middleware'
|
3
3
|
require 'singleton'
|
4
|
+
require 'cgi'
|
4
5
|
|
5
6
|
module NContent
|
6
7
|
|
@@ -43,7 +44,36 @@ module NContent
|
|
43
44
|
retry
|
44
45
|
else
|
45
46
|
logger.warn "Not retrying response #{verb.upcase} #{path}."
|
46
|
-
|
47
|
+
|
48
|
+
# Extract from the OAuth::Error the base Faraday response:
|
49
|
+
error_response = error.response.response
|
50
|
+
|
51
|
+
# Build the error that will be raised:
|
52
|
+
error_to_raise = NaranyaEcm::Rest::RestError.build_from_failed_response(error_response)
|
53
|
+
|
54
|
+
# Send unhandled errors to NewRelic:
|
55
|
+
if error_to_raise.is_a?(NaranyaEcm::Rest::RemoteFailed) && config.new_relic_agent_available?
|
56
|
+
|
57
|
+
ncontent_url = error_response.env.url
|
58
|
+
|
59
|
+
# Parsear el query string a hash:
|
60
|
+
ncontent_request_params = CGI.parse ncontent_url.query.to_s
|
61
|
+
|
62
|
+
# Agregar al hash de ncontent_request_params el request_body como hash:
|
63
|
+
if error_response.env.request_headers['Content-Type'] == 'application/json' && error_response.env[:request_body].present?
|
64
|
+
ncontent_request_params.merge! ActiveSupport::JSON.decode(error_response.env[:request_body])
|
65
|
+
end
|
66
|
+
|
67
|
+
::NewRelic::Agent.notice_error(
|
68
|
+
error_to_raise,
|
69
|
+
uri: ncontent_url.to_s.split('?').first, # The URL without query string
|
70
|
+
metric: "Custom/NContent::SDK::RESTClient/#{verb}",
|
71
|
+
request_params: ncontent_request_params
|
72
|
+
)
|
73
|
+
end
|
74
|
+
|
75
|
+
raise error_to_raise
|
76
|
+
|
47
77
|
end
|
48
78
|
end
|
49
79
|
end
|
@@ -80,6 +110,8 @@ module NContent
|
|
80
110
|
|
81
111
|
faraday.response :logger, logger
|
82
112
|
|
113
|
+
faraday.use NContent::SDK::FaradayMiddleware::RequestBodyOnEnvironment
|
114
|
+
|
83
115
|
faraday.use NContent::SDK::FaradayMiddleware::RESTAPICallBenchmark
|
84
116
|
|
85
117
|
faraday.use NContent::SDK::FaradayMiddleware::ResponseParser
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: naranya_ecm-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.51
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roberto Quintanilla
|
@@ -264,6 +264,7 @@ files:
|
|
264
264
|
- lib/ncontent-sdk.rb
|
265
265
|
- lib/ncontent/sdk/config.rb
|
266
266
|
- lib/ncontent/sdk/faraday_middleware.rb
|
267
|
+
- lib/ncontent/sdk/faraday_middleware/request_body_on_environment.rb
|
267
268
|
- lib/ncontent/sdk/faraday_middleware/required_response_format.rb
|
268
269
|
- lib/ncontent/sdk/faraday_middleware/response_parser.rb
|
269
270
|
- lib/ncontent/sdk/faraday_middleware/rest_api_call_benchmark.rb
|