saddle 0.0.7 → 0.0.10

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZTA5Y2RmYWY4MTAxYWJmNjI2MTBkNDhlZTVjZWViODdhMDAyMGY3MQ==
4
+ NmI5ZWE4OTY2MDdhYTU0ODhjMGRlNjQ4NTVlZmYyMDExZWRkMWM0OQ==
5
5
  data.tar.gz: !binary |-
6
- NDUwZmI1NDAzMzEyOGQ1NjMxMDhhZTE0MjQ1MTRiMWIwOGJmNTBmZg==
6
+ MTJjNzUzN2UwYjRiNThiNDVmNzk1YjM1YTczOWEzODdkNThhYzFhOA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NmRjZmY4Yjc4ZDdkYmMxOTBlYzY4NjYxNTlkZWIzZjViZjkzYTExNWM4ZDMw
10
- YjU4OWQ3YzA5ZGE5NmVkZDIxYzU1NTQxNGEyNTVlOTY0M2Y5ZTYyZjBiZmMx
11
- Y2VmZmMzMTg2YzA5M2NjMzcxMjY5NDg5Nzg2ODRkZGYyNmY1MTk=
9
+ MTg2NDg1NzkwMWM4NzE4YzEzODNkMzJmNGQ0NTYwNjc5NjAwMThlNzNkOWYx
10
+ MjYxNTJlYzFiMmMxNTJmYjBiOTc0NDBjNDQzYmM2NGY5ZDExYjc0NTY0ZWUx
11
+ OTNmMTEyODVlN2RlMTAyZjk4MGVjMGZlMjliN2I4OWQ0ZDQ2MTQ=
12
12
  data.tar.gz: !binary |-
13
- NzEwYmI5YzRmN2E1NGE0Yjc5MjBiOWIzZTdiNzk0OTc2YjUyZTkwYTQ4ZjE5
14
- YTU4MDU2NjFjOWQyMmM2ZDI4M2YwMmU3ZWI0MjY0NDFmZjYxMGViZTNjN2Nh
15
- ZjgxNzI4YjVhODliNjgyYzBkZmE3ZTJhZjk0ZTljYWEzYTIxYzc=
13
+ NWFiOWQ1OTMzMTViM2M0ZGEzOGNmODdiMTQwOTM2NWIzYzMyNjc1OGFjNmQ5
14
+ N2RlNDBmZTMzYTE0ODkwOWQ4YzVkY2NjY2U5MDk2Nzc1MWVmZTViYTgyNjhk
15
+ M2I2NzU3NTg0ZjdkNDA5OWQ2N2U5ODQyZGFhOGUzODlkMDgyMzU=
@@ -0,0 +1,20 @@
1
+ module Saddle::ClientAttributes
2
+
3
+ def self.included(obj)
4
+ obj.extend ClassMethods
5
+
6
+ # Default values
7
+ obj.additional_middlewares = []
8
+
9
+ # We know that this module is included when saddle client is inherited,
10
+ # so we're actually interested in the path of the caller two levels deep.
11
+ path, = caller[2].partition(":")
12
+ obj.implementation_root = File.dirname(path)
13
+ end
14
+
15
+ module ClassMethods
16
+ attr_accessor :implementation_root
17
+ attr_accessor :additional_middlewares
18
+ end
19
+
20
+ end
@@ -0,0 +1,7 @@
1
+ module Saddle
2
+ # The parent class of all exceptions thrown by Saddle
3
+ class Error < StandardError; end
4
+
5
+ # Thrown when a request timeout is exceeded
6
+ class TimeoutError < Error; end
7
+ end
@@ -29,7 +29,7 @@ module Saddle::MethodTreeBuilder
29
29
  def build_root_node(requester)
30
30
  if knows_root?
31
31
  root_endpoint_file = File.join(
32
- @@implementation_root,
32
+ self.implementation_root,
33
33
  'root_endpoint.rb'
34
34
  )
35
35
  if File.file?(root_endpoint_file)
@@ -92,22 +92,12 @@ module Saddle::MethodTreeBuilder
92
92
  # Get the path to the 'endpoints' directory, based upon the client
93
93
  # class that inherited Saddle
94
94
  def endpoints_directory
95
- File.join(@@implementation_root, 'endpoints')
96
- end
97
-
98
-
99
-
100
- # When Saddle is inherited, we store the root of the implementation class
101
- # This is so that we know where to look for relative files, like
102
- # the endpoints directory
103
- def inherited(obj)
104
- path, = caller[0].partition(":")
105
- @@implementation_root = File.dirname(path)
95
+ File.join(self.implementation_root, 'endpoints')
106
96
  end
107
97
 
108
98
  # If this client was not fully constructed, it may not even have an
109
99
  # implementation root. Allow that behavior and avoid firesystem searching.
110
100
  def knows_root?
111
- defined?(@@implementation_root)
101
+ defined?(self.implementation_root)
112
102
  end
113
103
  end
@@ -3,15 +3,20 @@ require 'faraday'
3
3
 
4
4
  module Saddle::Middleware
5
5
 
6
- # Public: Enforces a ruby timeout on the request
6
+ # Public: Enforces a ruby timeout on the request and throws one consistent
7
+ # exception for all classes of timeout, internal or from faraday.
7
8
  # :timeout must be present in the request or client options
8
9
  class RubyTimeout < Faraday::Middleware
9
10
 
10
11
  def call(env)
11
12
  timeout = env[:request][:timeout] # nil or 0 means no timeout
12
- Timeout.timeout(timeout) do
13
+ Timeout.timeout(timeout, Saddle::TimeoutError) do
13
14
  @app.call(env)
14
15
  end
16
+ # It is possible that faraday will catch the timeout first and throw
17
+ # this exception, rethrow as a class derived from standard error.
18
+ rescue Faraday::Error::TimeoutError
19
+ raise Saddle::TimeoutError
15
20
  end
16
21
 
17
22
  end
@@ -16,7 +16,7 @@ module Saddle::Options
16
16
  :request_style => request_style,
17
17
  :num_retries => num_retries,
18
18
  :timeout => timeout,
19
- :additional_middlewares => @@additional_middlewares,
19
+ :additional_middlewares => self.additional_middlewares,
20
20
  :stubs => stubs,
21
21
  }
22
22
  end
@@ -60,10 +60,9 @@ module Saddle::Options
60
60
  # })
61
61
  # end
62
62
  #
63
- ###
64
- @@additional_middlewares = []
63
+ ###
65
64
  def add_middleware m
66
- @@additional_middlewares << m
65
+ self.additional_middlewares << m
67
66
  end
68
67
 
69
68
  # If the Typhoeus adapter is being used, pass stubs to it for testing.
@@ -1,3 +1,3 @@
1
1
  module Saddle
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.10'
3
3
  end
data/lib/saddle.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  require 'saddle/method_tree_builder'
2
2
  require 'saddle/options'
3
+ require 'saddle/client_attributes'
3
4
  require 'saddle/requester'
4
-
5
+ require 'saddle/errors'
5
6
 
6
7
 
7
8
  # Ghost ride the whip.
@@ -16,7 +17,6 @@ module Saddle
16
17
  extend MethodTreeBuilder
17
18
  extend Options
18
19
 
19
-
20
20
  # Once your implementation is written, this is the magic you need to
21
21
  # create a client instance.
22
22
  def self.create(opt={})
@@ -27,6 +27,10 @@ module Saddle
27
27
  )
28
28
  end
29
29
 
30
+ def self.inherited(obj)
31
+ obj.send(:include, Saddle::ClientAttributes)
32
+ end
33
+
30
34
  end
31
35
 
32
36
  end
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.7
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Lewis
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-12 00:00:00.000000000 Z
12
+ date: 2013-05-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -66,7 +66,9 @@ files:
66
66
  - LICENSE
67
67
  - README.md
68
68
  - lib/saddle.rb
69
+ - lib/saddle/client_attributes.rb
69
70
  - lib/saddle/endpoint.rb
71
+ - lib/saddle/errors.rb
70
72
  - lib/saddle/method_tree_builder.rb
71
73
  - lib/saddle/middleware/logging/airbrake.rb
72
74
  - lib/saddle/middleware/logging/statsd.rb