saddle 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzU0YzZkNmQ2YmI0MTE3MGU4NDEwODFkZjhiMjNiMzAzNjNlZWVhZg==
4
+ MGJkMTFhMzc3ZGU3YWQwZWFlOGQ3ZjdiYmM2OTk3NzRkMjg4OTRiMg==
5
5
  data.tar.gz: !binary |-
6
- OTBmMWNkZGJmYjFhMGY2Njc4ZGUxYzZlZDljZDFmNDZkOTExY2QyOQ==
6
+ MTQxMzRjZDdmODhmMGI1ZTA5NzAyYzFhYTVjMzg2MGViMzMwYTY1Yw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YjBmMWJhZDE2NjQ2ZTEzNTE5OGU1YTlkYjY4NjVkNTUyZDIyNmQ2NDkxODRk
10
- NzVjYjAxOGM0YmMwMjAwYjdjZDViNTZlZTY0ZWI0NDJkZTgzMTZmOGQ0MjI2
11
- NTAxY2RkZThiNDFjMjRlNThlZjRmOGQ0NjM1NTg5Y2ZiNmRmNGQ=
9
+ ZGJmMTZhZTAzOWFmMzg0ODE1Zjc5N2E0Yjk4N2M5N2U4NWNiYjc0MzA1MjJm
10
+ ZmRhODc3MGYxMjZhNDlmYmNjYTA4ZTQ3ZTVmOTU0MDA5NmQ0MjAxYmEzMzAx
11
+ YWIxN2NjODdlYmYzYzVlMjY3MmViY2UwM2JiOTcwMDlmMmE3M2I=
12
12
  data.tar.gz: !binary |-
13
- MDgxMWQ5MGFmYzFkNTEwYWZmMmEzYTdlZjA4MTViODZiNjkyNzIyOTk2MTEy
14
- ZjYwMTg5ODJlZTEyYjY0MTdmZjcxNWExM2M1YzQ4M2JiYTM0ZWVhNDg1ZGJj
15
- ZGZmOGFmZTk1Y2VkY2U3OGQ4ZjFjNDcxMjkxMWZjNGFhOTBlODI=
13
+ MzZmOWM1M2RkM2IwNjRmNGM0OGM2NGQ3NmI5ZDAxMjBmY2U3OTEwNjE5YzEz
14
+ MDA2YzQ2YWQxODY4NmZhMTM1MzQ4NzY3MDQ0YTcwNjUwMDViNGRkOTkyZjQy
15
+ MzhlYWIwMzAyNWIwMTYxZjVmZTI0NWJkM2Y4MDUyODJjZjNmZGE=
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # saddle
2
2
 
3
- Hey nerd! Wrangle your SOA!
3
+ Giddyup nerd! Wrangle your SOA.
4
4
 
5
5
  Saddle makes writing service clients as easy as giving high fives. :hand:
6
6
 
@@ -41,15 +41,17 @@ Saddle enables you to create beautifully stable and functionaly API clients, in
41
41
  [saddle-example](https://github.com/mLewisLogic/saddle-example)
42
42
 
43
43
  ### client construction
44
- 0. For the sake of cleanliness, pick a namespace that everything related to your client should live in. For this example, we'll use _SaddleExample_.
45
- 1. Inherit your client class (_SaddleExample::Client_)from _Saddle::Client_
44
+ 0. For the sake of cleanliness, pick a namespace that everything related to your client should live in. For this example, we'll use __SaddleExample__
45
+ 1. Inherit your client class, __SaddleExample::Client__, from __Saddle::Client__
46
46
  2. Create an _endpoints_ directory at the same level as your client class file
47
- 3. Create endpoint classes in the _endpoints_ directory that inherit from _Saddle::TraversalEndpoint_ and are under the _SaddleExample::Endpoints_ namespace module
47
+ 3. Create endpoint classes in the _endpoints_ directory that inherit from __Saddle::TraversalEndpoint__ and are under the __SaddleExample::Endpoints__ namespace module
48
48
  1. Give these endpoints methods that call _get_ or _post_ to perform the actual request
49
- 2. Their module/class namespace determines how they are accessed in the client's call tree. For example, the get_all() in _SaddleExample::Endpoints::Fish::Guppy_ would be accessed by:
49
+ 2. Their module/class namespace determines how they are accessed in the client's call tree. For example, the get\_all() in __SaddleExample::Endpoints::Fish::Guppy__ would be accessed by:
50
50
 
51
51
  client.fish.guppy.get_all()
52
52
 
53
+ 3. If you need REST style endpoints like client.fish('guppy').catch() then check out __Saddle::ResourceEndpoint__ and how it's used in [saddle-example](https://github.com/mLewisLogic/saddle-example/blob/master/lib/endpoints/kitten.rb)
54
+
53
55
  4. Initialize an instance of your client. ex:
54
56
 
55
57
  saddle_example_client = SaddleExample::Client.create
@@ -1,11 +1,9 @@
1
+ require 'saddle/client_attributes'
1
2
  require 'saddle/method_tree_builder'
2
3
  require 'saddle/options'
3
- require 'saddle/client_attributes'
4
4
  require 'saddle/requester'
5
- require 'saddle/errors'
6
5
 
7
6
 
8
- # Ghost ride the whip.
9
7
  # Inherit your client implementation from Saddle::Client
10
8
  # then call YourCrayClient.create to get a client instance.
11
9
 
@@ -3,8 +3,12 @@ module Saddle::ClientAttributes
3
3
  def self.included(obj)
4
4
  obj.extend ClassMethods
5
5
 
6
- # Default values
7
- obj.additional_middlewares = []
6
+ # Clone the parent's additional_middlewares
7
+ obj.additional_middlewares = if defined?(obj.superclass.additional_middlewares)
8
+ obj.superclass.additional_middlewares.clone
9
+ else
10
+ []
11
+ end
8
12
 
9
13
  # We know that this module is included when saddle client is inherited,
10
14
  # so we're actually interested in the path of the caller two levels deep.
@@ -28,15 +28,17 @@ module Saddle::Middleware
28
28
  end
29
29
 
30
30
  def call(env)
31
+ # Try to build up a path for the STATSD logging
31
32
  statsd_path = nil
32
33
  if env[:request][:statsd_path]
33
34
  statsd_path = env[:request][:statsd_path]
34
35
  elsif env[:request][:saddle] && env[:request][:saddle][:call_chain] && env[:request][:saddle][:action]
35
- statsd_path = (env[:request][:saddle][:call_chain] + [env[:request][:saddle][:action]]).join('.')
36
+ statsd_path = (['saddle'] + env[:request][:saddle][:call_chain] + [env[:request][:saddle][:action]]).join('.')
36
37
  end
37
38
 
39
+ # If we have a path, wrap the ensuing app call in STATSD timing
38
40
  if statsd_path
39
- self.statsd.time statsd_path do
41
+ self.statsd.time(statsd_path) do
40
42
  @app.call(env)
41
43
  end
42
44
  else
@@ -1,3 +1,3 @@
1
1
  module Saddle
2
- VERSION = '0.0.11'
2
+ VERSION = '0.0.12'
3
3
  end
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
8
8
  s.name = 'saddle'
9
9
  s.version = Saddle::VERSION
10
10
 
11
- s.authors = ['Mike Lewis', 'Naseem Hakim']
12
- s.email = 'mike@cleverkoala.com'
11
+ s.authors = ['Mike Lewis']
12
+ s.email = 'mike.lewis@airbnb.com'
13
13
  s.description = %q{Makes writing API clients as easy as giving high fives}
14
14
  s.summary = %q{
15
15
  A full-featured, generic consumer layer for you to build API client implementations with.
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: saddle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Lewis
8
- - Naseem Hakim
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-08 00:00:00.000000000 Z
11
+ date: 2013-05-10 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
@@ -54,7 +53,7 @@ dependencies:
54
53
  - !ruby/object:Gem::Version
55
54
  version: 0.9.0
56
55
  description: Makes writing API clients as easy as giving high fives
57
- email: mike@cleverkoala.com
56
+ email: mike.lewis@airbnb.com
58
57
  executables: []
59
58
  extensions: []
60
59
  extra_rdoc_files: []