dailymile-ruby 0.1.0 → 0.1.1

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/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