coach_assist 0.2.0 → 0.2.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.
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