dailymile-ruby 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -11,8 +11,9 @@ begin
11
11
  gem.homepage = "http://github.com/dailymile/dailymile-ruby"
12
12
  gem.authors = ["lostinpatterns"]
13
13
 
14
- gem.add_dependency("oauth2", "0.0.13")
14
+ gem.add_dependency("faraday", "~> 0.4.1")
15
15
  gem.add_dependency("json_pure")
16
+ gem.add_dependency("oauth2", "0.0.13")
16
17
 
17
18
  # gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
18
19
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{dailymile-ruby}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["lostinpatterns"]
@@ -26,7 +26,8 @@ Gem::Specification.new do |s|
26
26
  "dailymile-ruby.gemspec",
27
27
  "lib/dailymile.rb",
28
28
  "lib/dailymile/client.rb",
29
- "lib/dailymile/token.rb",
29
+ "lib/dailymile/connection.rb",
30
+ "lib/dailymile/connection/token.rb",
30
31
  "lib/oauth2_monkey_patches.rb",
31
32
  "test/helper.rb",
32
33
  "test/test_dailymile-ruby.rb"
@@ -46,15 +47,18 @@ Gem::Specification.new do |s|
46
47
  s.specification_version = 3
47
48
 
48
49
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
- s.add_runtime_dependency(%q<oauth2>, ["= 0.0.13"])
50
+ s.add_runtime_dependency(%q<faraday>, ["~> 0.4.1"])
50
51
  s.add_runtime_dependency(%q<json_pure>, [">= 0"])
52
+ s.add_runtime_dependency(%q<oauth2>, ["= 0.0.13"])
51
53
  else
52
- s.add_dependency(%q<oauth2>, ["= 0.0.13"])
54
+ s.add_dependency(%q<faraday>, ["~> 0.4.1"])
53
55
  s.add_dependency(%q<json_pure>, [">= 0"])
56
+ s.add_dependency(%q<oauth2>, ["= 0.0.13"])
54
57
  end
55
58
  else
56
- s.add_dependency(%q<oauth2>, ["= 0.0.13"])
59
+ s.add_dependency(%q<faraday>, ["~> 0.4.1"])
57
60
  s.add_dependency(%q<json_pure>, [">= 0"])
61
+ s.add_dependency(%q<oauth2>, ["= 0.0.13"])
58
62
  end
59
63
  end
60
64
 
data/lib/dailymile.rb CHANGED
@@ -1,8 +1,10 @@
1
- require 'oauth2'
1
+ require 'faraday'
2
2
  require 'json'
3
+ require 'oauth2'
3
4
 
4
5
  require 'oauth2_monkey_patches'
5
- require 'dailymile/token'
6
+ require 'dailymile/connection'
7
+ require 'dailymile/connection/token'
6
8
  require 'dailymile/client'
7
9
 
8
10
  module Dailymile
@@ -2,41 +2,41 @@ require 'forwardable'
2
2
 
3
3
  module Dailymile
4
4
 
5
- DEFAULT_FORMAT = 'json'
6
5
  STREAM_FILTERS = %w(nearby popular)
7
6
 
8
7
  class Client
9
8
  extend Forwardable
10
9
 
11
- attr_reader :access_token
12
- def_delegators :access_token, :get, :post, :put, :delete
10
+ def_instance_delegators :@connection, :get, :post, :put, :delete
11
+
12
+ def initialize(token = nil)
13
+ raise "Please call set_client_credentials first" if @@oauth_client.nil?
14
+
15
+ @connection = Connection::Token.new(@@oauth_client, token)
16
+ end
17
+
18
+ def self.get(*args); connection.get(*args) end
13
19
 
14
20
  def self.set_client_credentials(client_id, client_secret)
15
- @@client = OAuth2::Client.new(client_id, client_secret,
21
+ @@oauth_client = OAuth2::Client.new(client_id, client_secret,
16
22
  :site => BASE_URI,
17
23
  :access_token_path => OAUTH_TOKEN_PATH,
18
24
  :authorize_path => OAUTH_AUTHORIZE_PATH
19
25
  )
20
26
  end
21
27
 
22
- def initialize(token = nil)
23
- @@client ||= OAuth2::Client.new('', '', :site => BASE_URI) # HACK: dummy client
24
-
25
- @access_token = Token.new(@@client, token)
26
- end
27
-
28
28
  # EXAMPLES:
29
29
  # everyone stream: client.entries
30
30
  # nearby stream: client.entries :nearby, 37.77916, -122.420049, :page => 2
31
- # ben's stream: client.entries :ben, :page => 2
32
- def entries(*args)
31
+ # ben's stream: client.entries 'ben', :page => 2
32
+ def self.entries(*args)
33
33
  params = extract_options_from_args!(args)
34
34
  filter = args.shift
35
35
 
36
36
  entries_path = case filter
37
37
  when String, Symbol
38
38
  filter = filter.to_s.strip
39
-
39
+
40
40
  if STREAM_FILTERS.include?(filter)
41
41
  if filter == 'nearby'
42
42
  lat, lon = args
@@ -55,12 +55,17 @@ module Dailymile
55
55
  data["entries"]
56
56
  end
57
57
 
58
+
58
59
  private
59
60
 
60
- def extract_options_from_args!(args)
61
+ def self.extract_options_from_args!(args)
61
62
  args.last.is_a?(Hash) ? args.pop : {}
62
63
  end
63
64
 
65
+ def self.connection
66
+ @@connection ||= Connection.new
67
+ end
68
+
64
69
  end
65
70
 
66
71
  end
@@ -1,15 +1,12 @@
1
1
  module Dailymile
2
2
 
3
- class Token
3
+ class Connection
4
4
 
5
- def initialize(client, token)
6
- @client = client
7
- set_access_token token
8
- end
9
-
10
- def access_token=(token)
11
- set_access_token token
12
- end
5
+ DEFAULT_FORMAT = :json
6
+ DEFAULT_HEADERS = {
7
+ 'Accept' => 'application/json',
8
+ 'User-Agent' => "dailymile-ruby/#{VERSION}"
9
+ }
13
10
 
14
11
  def get(path, params = {})
15
12
  request :get, path, params
@@ -27,16 +24,36 @@ module Dailymile
27
24
  request :delete, path
28
25
  end
29
26
 
30
- private
27
+ protected
31
28
 
32
- def request(verb, path, params = {}, headers = {})
29
+ def make_request(verb, path, params = {}, headers = {}, &block)
33
30
  path << ".#{DEFAULT_FORMAT}" unless path =~ /.+\.\w+$/
34
31
  path << to_query_string(params) unless params.empty?
35
32
 
36
- response = @access_token.request(verb, path, {}, default_headers.merge(headers))
33
+ response = block.call verb, path, {}, DEFAULT_HEADERS.merge(headers)
34
+
37
35
  handle_response(response)
38
36
  end
39
37
 
38
+ private
39
+
40
+ def request(verb, path, params = {}, headers = {})
41
+ @connection ||= Faraday::Connection.new(:url => "http://api.dailymile.com", :headers => DEFAULT_HEADERS) do |builder|
42
+ builder.adapter Faraday.default_adapter
43
+ #builder.use Faraday::Response::Mashify
44
+ end
45
+
46
+ make_request(verb, path, params, headers) do |verb, path, params, headers|
47
+ if verb == :get
48
+ @connection.run_request(verb, path, nil, headers) do |req|
49
+ req.params.update(params)
50
+ end
51
+ else
52
+ @connection.run_request(verb, path, params, headers)
53
+ end
54
+ end
55
+ end
56
+
40
57
  def handle_response(response)
41
58
  case response.status
42
59
  when 200, 201
@@ -47,7 +64,7 @@ module Dailymile
47
64
  raise Unauthorized
48
65
  when 403
49
66
  raise Forbidden, "Not using HTTP over TLS"
50
- when 503, 502
67
+ when 503, 502
51
68
  if response.status == 503 && response['Retry-After']
52
69
  raise RateLimitExceeded
53
70
  else
@@ -72,17 +89,6 @@ module Dailymile
72
89
  end
73
90
  end.join('&')
74
91
  end
75
-
76
- def default_headers
77
- {
78
- 'Accept' => 'application/json',
79
- 'User-Agent' => "dailymile-ruby/#{VERSION}"
80
- }
81
- end
82
-
83
- def set_access_token(token)
84
- @access_token = OAuth2::AccessToken.new(@client, token)
85
- end
86
92
 
87
93
  end
88
94
 
@@ -0,0 +1,28 @@
1
+ module Dailymile
2
+
3
+ class Connection::Token < Connection
4
+
5
+ def initialize(client, token)
6
+ @client = client
7
+ set_access_token token
8
+ end
9
+
10
+ def access_token=(token)
11
+ set_access_token token
12
+ end
13
+
14
+ private
15
+
16
+ def request(verb, path, params = {}, headers = {})
17
+ make_request(verb, path, params, headers) do |verb, path, params, headers|
18
+ @access_token.request(verb, path, params, headers)
19
+ end
20
+ end
21
+
22
+ def set_access_token(token)
23
+ @access_token = OAuth2::AccessToken.new(@client, token)
24
+ end
25
+
26
+ end
27
+
28
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dailymile-ruby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - lostinpatterns
@@ -19,19 +19,19 @@ date: 2010-10-11 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: oauth2
22
+ name: faraday
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - "="
27
+ - - ~>
28
28
  - !ruby/object:Gem::Version
29
- hash: 5
29
+ hash: 13
30
30
  segments:
31
31
  - 0
32
- - 0
33
- - 13
34
- version: 0.0.13
32
+ - 4
33
+ - 1
34
+ version: 0.4.1
35
35
  type: :runtime
36
36
  version_requirements: *id001
37
37
  - !ruby/object:Gem::Dependency
@@ -48,6 +48,22 @@ dependencies:
48
48
  version: "0"
49
49
  type: :runtime
50
50
  version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: oauth2
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - "="
58
+ - !ruby/object:Gem::Version
59
+ hash: 5
60
+ segments:
61
+ - 0
62
+ - 0
63
+ - 13
64
+ version: 0.0.13
65
+ type: :runtime
66
+ version_requirements: *id003
51
67
  description: This gem wraps the dailymile API that's available at http://www.dailymile.com/api
52
68
  email: blweiner@gmail.com
53
69
  executables: []
@@ -67,7 +83,8 @@ files:
67
83
  - dailymile-ruby.gemspec
68
84
  - lib/dailymile.rb
69
85
  - lib/dailymile/client.rb
70
- - lib/dailymile/token.rb
86
+ - lib/dailymile/connection.rb
87
+ - lib/dailymile/connection/token.rb
71
88
  - lib/oauth2_monkey_patches.rb
72
89
  - test/helper.rb
73
90
  - test/test_dailymile-ruby.rb