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 CHANGED
@@ -17,7 +17,7 @@ module Saddle
17
17
  extend Options
18
18
 
19
19
  class << self
20
- attr_accessor :additional_middlewares, :parent_module
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
- user_agent = env[:request][:saddle][:client].name
15
- if env[:request][:saddle][:client].parent_module
16
- if defined?(env[:request][:saddle][:client].parent_module::VERSION)
17
- user_agent += " #{env[:request][:saddle][:client].parent_module::VERSION}"
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
- # Public: Parse response bodies as JSON.
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 env
20
- if parse_response?(env)
21
- # Make sure we're working with a valid body that's not a String
22
- if env[:body] && env[:body].respond_to?(:to_str)
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
- def parse_response?(env)
31
- has_body?(env) and (response_type(env) == MIME_TYPE)
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?(env)
35
- body = env[:body] and !(body.respond_to?(:to_str) and body.empty?)
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(env)
39
- return nil unless env[:response_headers]
40
- type = env[:response_headers][CONTENT_TYPE].to_s
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
@@ -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.merge!(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.merge!(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.merge!(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.merge!(options)
99
+ req.options.deep_merge!(options)
98
100
  req.url(url, params)
99
101
  end
100
102
  response.body
@@ -1,3 +1,3 @@
1
1
  module Saddle
2
- VERSION = '0.0.33'
2
+ VERSION = '0.0.34'
3
3
  end
@@ -30,7 +30,7 @@ describe Saddle::Client do
30
30
  [
31
31
  200,
32
32
  {'Content-Type' => 'application/json'},
33
- {'success' => true},
33
+ {'success' => true}.to_json,
34
34
  ]
35
35
  }
36
36
  @default_client.requester.get('/test.json')['success'].should == true
@@ -0,0 +1,4 @@
1
+ require 'faraday' # for test stubs
2
+ require 'saddle'
3
+
4
+ require 'pry'
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.33
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