coach_assist 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 278bc2ac79ab1f23248370336dc8263ad042dc5e
4
- data.tar.gz: 9ce647e23df24610214a04f09612ce5e7175a550
3
+ metadata.gz: 825a48ddff4715336e5d350d6651ec94fb6a5f1b
4
+ data.tar.gz: 35661453cbfd0e9b09deb5a6b5ada71a162ca75a
5
5
  SHA512:
6
- metadata.gz: 50c6d6f01ad4ec1f2b1930665dba59c5245f75790596e5c9724e87d4aa544fb1efb405a2c8feb10a25a82b61170642f1c63673160f826283650bcb91bc1474f3
7
- data.tar.gz: edeb36fe187eb95091c29e4216db029bcf3285d2ee73cb52974a2e6ab21b8eab63b03ef7d68adfbd6acac9602d5c91ac3c5ef3af7a870ed5c02555e761b8518d
6
+ metadata.gz: 580256fba7b637106ea57732c267a345945f85dfe59672f4de187d85ffa1699e1d07d01571d5fdedc581da4c2c4837299d0d36edcaec77931305884330036ab0
7
+ data.tar.gz: b9e58a80ee1bbe031973f0f4b20e5cc88e19206356d03f71fc7a477b3c55c3ac1e0a52f07a90effbff97ef6ddcf0ea5613336dd39bac4b635267124fd21001be
data/coach_assist.gemspec CHANGED
@@ -21,9 +21,9 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_development_dependency "bundler", "~> 1.10"
23
23
  spec.add_development_dependency "rake", "~> 10.0"
24
- spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "rspec", "~> 3.3"
25
25
 
26
- spec.add_dependency 'httparty'
27
- spec.add_dependency 'hashie'
28
- spec.add_dependency 'activesupport'
26
+ spec.add_dependency 'httparty', '~> 0.13.7'
27
+ spec.add_dependency 'hashie', '~> 3.4'
28
+ spec.add_dependency 'activesupport', '~> 4.2'
29
29
  end
data/lib/coach/client.rb CHANGED
@@ -13,7 +13,7 @@ module Coach
13
13
  end
14
14
 
15
15
  def post(path, options={})
16
- Client.post(path, options.merge(basic_auth: @auth))
16
+ Client.post(path, options.merge(basic_auth: @auth))
17
17
  end
18
18
 
19
19
  def put(path, options={})
@@ -54,5 +54,9 @@ module Coach
54
54
  @sub_finder || (@sub_finder = Finders::SubscriptionFinder.new(self))
55
55
  end
56
56
 
57
+ def entries
58
+ @entry_finder || (@entry_finder = Finders::EntryFinder.new(self))
59
+ end
60
+
57
61
  end
58
62
  end
data/lib/coach/entity.rb CHANGED
@@ -13,8 +13,8 @@ module Coach
13
13
  def fetch
14
14
  assert_has_uri!
15
15
 
16
- response = client.get clean_uri
17
- update_attributes! JSON.parse(response.body)
16
+ response = client.get clean_uri, query: { start: 0, size: 10000 }
17
+ update_attributes! filter_response_body(JSON.parse(response.body))
18
18
 
19
19
  self
20
20
  end
@@ -27,7 +27,7 @@ module Coach
27
27
  def update(attributes={})
28
28
  assert_has_uri!
29
29
  response = client.put clean_uri, body: attributes
30
- update_attributes! JSON.parse(response.body) if response.code == 200
30
+ update_attributes! filter_response_body(JSON.parse(response.body)) if response.code == 200
31
31
  end
32
32
 
33
33
  def set_client(client)
@@ -44,5 +44,10 @@ module Coach
44
44
  def assert_has_uri!
45
45
  raise 'Entity has no URI associated with it' unless self.uri
46
46
  end
47
+
48
+ def filter_response_body(body)
49
+ # This is necessary because of the shitty REST implemenation by CyberCoach :(
50
+ body['entryrunning'] || body['entrycycling'] || body
51
+ end
47
52
  end
48
53
  end
@@ -0,0 +1,16 @@
1
+ module Coach
2
+ class Entry < Coach::Entity
3
+
4
+ property :modified_at, from: :datemodified
5
+ property :subscription
6
+ property :rounds, from: :numberofrounds
7
+ property :distance, from: :courselength
8
+ property :duration, from: :entryduration
9
+
10
+ alias_method :subscription_orig, :subscription
11
+
12
+ def subscription
13
+ client.subscriptions.build(subscription_orig).fetch
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,34 @@
1
+ module Coach
2
+ module Finders
3
+ class EntryFinder < Finder
4
+
5
+ def all(username, sport, options={})
6
+ eager = options[:eager]
7
+ response = client.get "/users/#{username}/#{sport}", query: { start: 0, size: 10000 }
8
+ JSON.parse(response.body)['entries'].map { |e| eager ? build(e).fetch : build(e) }
9
+ end
10
+
11
+ def find(username, sport)
12
+ response = client.get "/users/#{username}/#{sport}/"
13
+ build(JSON.parse(response.body))
14
+ end
15
+
16
+ def create(username, sport, attributes={})
17
+ client.assert_authenticated!
18
+
19
+ body = { "entry#{sport}".to_s => attributes }
20
+ response = client.post "/users/#{username}/#{sport}", body: body.to_json, headers: {'Content-Type' => 'application/json'}
21
+ response.code.in?([200, 201]) ? build(JSON.parse(response.body).merge(uri: response.response['Location'])).fetch : nil
22
+ end
23
+
24
+ def build(attributes={})
25
+ attrs = attributes['entryrunning'] || attributes['entrycycling'] || attributes
26
+
27
+ e = Coach::Entry.new(attrs)
28
+ e.set_client client
29
+ e
30
+ end
31
+
32
+ end
33
+ end
34
+ end
@@ -31,7 +31,7 @@ module Coach
31
31
  # Create new user
32
32
  def create(username, attributes={})
33
33
  response = client.put "/users/#{username}", body: attributes
34
- [200, 201].include?(response.code) ? build(JSON.parse(response.body)) : nil
34
+ response.code.in?([200, 201]) ? build(JSON.parse(response.body)) : nil
35
35
  end
36
36
 
37
37
  def find_or_create(username, attributes={})
@@ -5,14 +5,19 @@ module Coach
5
5
  property :user
6
6
  property :entries
7
7
 
8
- alias_method :old_user, :user
8
+ alias_method :user_orig, :user
9
+ alias_method :entries_orig, :entries
9
10
 
10
11
  def user
11
- client.users.build(old_user).fetch
12
+ client.users.build(user_orig).fetch
12
13
  end
13
14
 
14
15
  def self.types
15
16
  [:running, :cycling]
16
17
  end
18
+
19
+ def entries
20
+ (entries_orig || []).map { |e| client.entries.build(e).fetch }
21
+ end
17
22
  end
18
23
  end
data/lib/coach/user.rb CHANGED
@@ -38,7 +38,7 @@ module Coach
38
38
  super
39
39
  end
40
40
 
41
- private
41
+
42
42
  def destroy_partnerships
43
43
  partnerships.each(&:destroy)
44
44
  end
@@ -1,3 +1,3 @@
1
1
  module CoachAssist
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
data/lib/coach_assist.rb CHANGED
@@ -8,7 +8,9 @@ require 'coach/user'
8
8
  require 'coach/subscription'
9
9
  require 'coach/partnership'
10
10
  require 'coach/client'
11
+ require 'coach/entry'
11
12
  require 'coach/finders/finder'
12
13
  require 'coach/finders/user_finder'
13
14
  require 'coach/finders/subscription_finder'
14
15
  require 'coach/finders/partnership_finder'
16
+ require 'coach/finders/entry_finder'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coach_assist
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Urs Gerber
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-10-23 00:00:00.000000000 Z
11
+ date: 2015-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -42,58 +42,58 @@ dependencies:
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '3.3'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '3.3'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: httparty
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 0.13.7
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 0.13.7
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: hashie
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '3.4'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '3.4'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: activesupport
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '4.2'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '4.2'
97
97
  description:
98
98
  email:
99
99
  - ug.gerber@gmail.com
@@ -113,6 +113,8 @@ files:
113
113
  - coach_assist.gemspec
114
114
  - lib/coach/client.rb
115
115
  - lib/coach/entity.rb
116
+ - lib/coach/entry.rb
117
+ - lib/coach/finders/entry_finder.rb
116
118
  - lib/coach/finders/finder.rb
117
119
  - lib/coach/finders/partnership_finder.rb
118
120
  - lib/coach/finders/subscription_finder.rb