run_keeper 0.0.2

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/.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: []