run_keeper 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in run_keeper.gemspec
4
+ gemspec
data/README.md ADDED
File without changes
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
@@ -0,0 +1,16 @@
1
+ module RunKeeper
2
+ class Activity
3
+ attr_accessor :type, :total_distance, :duration, :uri
4
+ attr_reader :start_time
5
+
6
+ def initialize attributes = {}
7
+ attributes.each do |attribute, value|
8
+ send :"#{attribute}=", value
9
+ end
10
+ end
11
+
12
+ def start_time= value
13
+ @start_time = Time.zone.parse value
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,48 @@
1
+ module RunKeeper
2
+ class Base
3
+ HEADERS = {
4
+ 'fitness_activities' => 'application/vnd.com.runkeeper.FitnessActivityFeed+json',
5
+ 'profile' => 'application/vnd.com.runkeeper.Profile+json',
6
+ 'user' => 'application/vnd.com.runkeeper.User+json'
7
+ }
8
+
9
+ attr_reader :token
10
+
11
+ def initialize client_id, client_secret, token
12
+ @client_id, @client_secret, @token = client_id, client_secret, token
13
+ user
14
+ end
15
+
16
+ def request endpoint
17
+ response = access_token.get user.send(endpoint), :headers => {'Accept' => HEADERS[endpoint]}, :parse => :json
18
+ end
19
+
20
+ def fitness_activities
21
+ response = request 'fitness_activities'
22
+ response.parsed['items'].inject([]) do |activities, activity|
23
+ activities << RunKeeper::Activity.new(activity)
24
+ end
25
+ end
26
+
27
+ def profile
28
+ response = request 'profile'
29
+ RunKeeper::Profile.new response.parsed.merge(:username => user.username, :userid => user.userid)
30
+ end
31
+
32
+ def user
33
+ @user ||= begin
34
+ response = access_token.get '/user', :headers => {'Accept' => HEADERS['user']}, :parse => :json
35
+ User.new response.parsed
36
+ end
37
+ end
38
+
39
+ private
40
+ def access_token
41
+ OAuth2::AccessToken.new client, token
42
+ end
43
+
44
+ def client
45
+ OAuth2::Client.new @client_id, @client_secret, :site => 'https://api.runkeeper.com', :authorize_url => '/apps/authorize', :token_url => '/apps/token', :raise_errors => false
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,15 @@
1
+ module RunKeeper
2
+ class Profile
3
+ attr_accessor :name, :location, :athlete_type, :goal, :gender, :birthday, :elite, :profile, :small_picture, :normal_picture, :medium_picture, :large_picture, :username, :userid
4
+
5
+ def initialize attributes = {}
6
+ attributes.each do |attribute, value|
7
+ send :"#{attribute}=", value
8
+ end
9
+ end
10
+
11
+ def birthday= value
12
+ @birthday = Time.zone.parse value
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module RunKeeper
2
+ class User
3
+ attr_accessor :userid, :profile, :settings, :fitness_activities, :background_activities, :sleep, :nutrition, :weight, :general_measurements, :diabetes, :records, :team
4
+
5
+ def initialize attributes = {}
6
+ attributes.each do |attribute, value|
7
+ send :"#{attribute}=", value
8
+ end
9
+ end
10
+
11
+ def username
12
+ profile.split('/').last
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,3 @@
1
+ module RunKeeper
2
+ VERSION = "0.0.2"
3
+ end
data/lib/run_keeper.rb ADDED
@@ -0,0 +1,13 @@
1
+ require "active_support"
2
+ require "oauth2"
3
+ require "run_keeper/activity"
4
+ require "run_keeper/base"
5
+ require "run_keeper/profile"
6
+ require "run_keeper/user"
7
+ require "run_keeper/version"
8
+
9
+ module RunKeeper
10
+ def self.new client_id, client_secret
11
+ Base.new client_id, client_secret
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "run_keeper/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "run_keeper"
7
+ s.version = RunKeeper::VERSION
8
+ s.authors = ["Tim Cooper"]
9
+ s.email = ["coop@latrobest.com"]
10
+ s.homepage = "http://github.com/coop/run_keeper"
11
+ s.summary = "Run Keeper API client"
12
+ s.description = "Run Keeper API client"
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.require_paths = ["lib"]
18
+
19
+ s.add_dependency 'activesupport', '~> 3.1.0'
20
+ s.add_dependency 'oauth2', '~> 0.5.0'
21
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: run_keeper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Tim Cooper
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-09-06 00:00:00.000000000 +10:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ requirement: &70210205400740 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: 3.1.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *70210205400740
26
+ - !ruby/object:Gem::Dependency
27
+ name: oauth2
28
+ requirement: &70210205400240 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 0.5.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *70210205400240
37
+ description: Run Keeper API client
38
+ email:
39
+ - coop@latrobest.com
40
+ executables: []
41
+ extensions: []
42
+ extra_rdoc_files: []
43
+ files:
44
+ - .gitignore
45
+ - Gemfile
46
+ - README.md
47
+ - Rakefile
48
+ - lib/run_keeper.rb
49
+ - lib/run_keeper/activity.rb
50
+ - lib/run_keeper/base.rb
51
+ - lib/run_keeper/profile.rb
52
+ - lib/run_keeper/user.rb
53
+ - lib/run_keeper/version.rb
54
+ - run_keeper.gemspec
55
+ has_rdoc: true
56
+ homepage: http://github.com/coop/run_keeper
57
+ licenses: []
58
+ post_install_message:
59
+ rdoc_options: []
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubyforge_project:
76
+ rubygems_version: 1.6.2
77
+ signing_key:
78
+ specification_version: 3
79
+ summary: Run Keeper API client
80
+ test_files: []