saddle 0.0.33 → 0.0.34
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.
- data/lib/saddle.rb +1 -3
- data/lib/saddle/middleware/request/user_agent.rb +10 -6
- data/lib/saddle/middleware/response/parse_json.rb +19 -15
- data/lib/saddle/requester.rb +6 -4
- data/lib/saddle/version.rb +1 -1
- data/spec/requester/get_spec.rb +1 -1
- data/spec/spec_helper.rb +4 -0
- metadata +3 -1
data/lib/saddle.rb
CHANGED
@@ -17,7 +17,7 @@ module Saddle
|
|
17
17
|
extend Options
|
18
18
|
|
19
19
|
class << self
|
20
|
-
attr_accessor :additional_middlewares
|
20
|
+
attr_accessor :additional_middlewares
|
21
21
|
|
22
22
|
# Once your implementation is written, this is the magic you need to
|
23
23
|
# create a client instance.
|
@@ -39,8 +39,6 @@ module Saddle
|
|
39
39
|
end
|
40
40
|
# Add additional client attributes
|
41
41
|
obj.send(:include, Saddle::ClientAttributes)
|
42
|
-
# Store the parent module in case we need it later
|
43
|
-
@parent_module = Module.nesting.last
|
44
42
|
end
|
45
43
|
|
46
44
|
end
|
@@ -10,15 +10,19 @@ module Saddle
|
|
10
10
|
|
11
11
|
class UserAgent < Faraday::Middleware
|
12
12
|
def call(env)
|
13
|
+
user_agent = nil
|
13
14
|
# Build a user agent that looks like 'SaddleExample 0.0.1'
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
begin
|
16
|
+
user_agent = client_name = env[:request][:saddle][:client].name
|
17
|
+
parent_module = client_name.split('::')[0..-2].join('::').constantize
|
18
|
+
if parent_module
|
19
|
+
if defined?(parent_module::VERSION)
|
20
|
+
user_agent += " #{parent_module::VERSION}"
|
21
|
+
end
|
18
22
|
end
|
23
|
+
rescue StandardError
|
19
24
|
end
|
20
|
-
|
21
|
-
env[:request_headers]['User-Agent'] = user_agent
|
25
|
+
env[:request_headers]['User-Agent'] = user_agent if user_agent
|
22
26
|
|
23
27
|
@app.call env
|
24
28
|
end
|
@@ -6,8 +6,9 @@ module Saddle
|
|
6
6
|
module Middleware
|
7
7
|
module Response
|
8
8
|
|
9
|
-
|
9
|
+
# Public: Parse response bodies as JSON.
|
10
10
|
class ParseJson < Faraday::Middleware
|
11
|
+
|
11
12
|
CONTENT_TYPE = 'Content-Type'.freeze
|
12
13
|
MIME_TYPE = 'application/json'.freeze
|
13
14
|
|
@@ -16,31 +17,34 @@ module Saddle
|
|
16
17
|
end
|
17
18
|
|
18
19
|
def call(env)
|
19
|
-
result = @app.call
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
env[:request_headers][CONTENT_TYPE] ||= MIME_TYPE
|
24
|
-
env[:body] = ::JSON.parse env[:body]
|
25
|
-
end
|
20
|
+
result = @app.call(env)
|
21
|
+
|
22
|
+
if parse_response?(result)
|
23
|
+
result.env[:body] = ::JSON.parse(result.env[:body])
|
26
24
|
end
|
27
25
|
result
|
28
26
|
end
|
29
27
|
|
30
|
-
|
31
|
-
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def parse_response?(result)
|
32
|
+
has_body?(result) && (response_type(result) == MIME_TYPE)
|
32
33
|
end
|
33
34
|
|
34
|
-
def has_body?(
|
35
|
-
|
35
|
+
def has_body?(result)
|
36
|
+
result.env[:body] &&
|
37
|
+
(!result.env[:body].respond_to?(:to_str) || # must already be in string format
|
38
|
+
!result.env[:body].empty?) # or must be non-empty
|
36
39
|
end
|
37
40
|
|
38
|
-
def response_type(
|
39
|
-
return nil unless
|
40
|
-
type =
|
41
|
+
def response_type(result)
|
42
|
+
return nil unless result.headers
|
43
|
+
type = result.headers[CONTENT_TYPE].to_s
|
41
44
|
type = type.split(';', 2).first if type.index(';')
|
42
45
|
type
|
43
46
|
end
|
47
|
+
|
44
48
|
end
|
45
49
|
|
46
50
|
end
|
data/lib/saddle/requester.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'active_support/core_ext/hash'
|
2
|
+
|
1
3
|
require 'faraday'
|
2
4
|
require 'faraday_middleware'
|
3
5
|
|
@@ -65,7 +67,7 @@ module Saddle
|
|
65
67
|
# Make a GET request
|
66
68
|
def get(url, params={}, options={})
|
67
69
|
response = connection.get do |req|
|
68
|
-
req.options.
|
70
|
+
req.options.deep_merge!(options)
|
69
71
|
req.url(url, params)
|
70
72
|
end
|
71
73
|
response.body
|
@@ -74,7 +76,7 @@ module Saddle
|
|
74
76
|
# Make a POST request
|
75
77
|
def post(url, data={}, options={})
|
76
78
|
response = connection.post do |req|
|
77
|
-
req.options.
|
79
|
+
req.options.deep_merge!(options)
|
78
80
|
req.url(url)
|
79
81
|
req.body = data
|
80
82
|
end
|
@@ -84,7 +86,7 @@ module Saddle
|
|
84
86
|
# Make a PUT request
|
85
87
|
def put(url, data={}, options={})
|
86
88
|
response = connection.put do |req|
|
87
|
-
req.options.
|
89
|
+
req.options.deep_merge!(options)
|
88
90
|
req.url(url)
|
89
91
|
req.body = data
|
90
92
|
end
|
@@ -94,7 +96,7 @@ module Saddle
|
|
94
96
|
# Make a DELETE request
|
95
97
|
def delete(url, params={}, options={})
|
96
98
|
response = connection.delete do |req|
|
97
|
-
req.options.
|
99
|
+
req.options.deep_merge!(options)
|
98
100
|
req.url(url, params)
|
99
101
|
end
|
100
102
|
response.body
|
data/lib/saddle/version.rb
CHANGED
data/spec/requester/get_spec.rb
CHANGED
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: saddle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.34
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- spec/multiple_spec.rb
|
101
101
|
- spec/requester/get_spec.rb
|
102
102
|
- spec/requester/post_spec.rb
|
103
|
+
- spec/spec_helper.rb
|
103
104
|
homepage: https://github.com/mLewisLogic/saddle
|
104
105
|
licenses:
|
105
106
|
- MIT
|
@@ -136,3 +137,4 @@ test_files:
|
|
136
137
|
- spec/multiple_spec.rb
|
137
138
|
- spec/requester/get_spec.rb
|
138
139
|
- spec/requester/post_spec.rb
|
140
|
+
- spec/spec_helper.rb
|