coach_client 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,10 +1,16 @@
1
1
  # CoachClient
2
2
  [![Gem Version](https://badge.fury.io/rb/coach_client.svg)](https://badge.fury.io/rb/coach_client)
3
+ [![Code Climate](https://codeclimate.com/github/jungomi/coach_client/badges/gpa.svg)](https://codeclimate.com/github/jungomi/coach_client)
4
+ [![Test Coverage](https://codeclimate.com/github/jungomi/coach_client/badges/coverage.svg)](https://codeclimate.com/github/jungomi/coach_client/coverage)
3
5
 
4
6
  A wrapper around the
5
7
  [CyberCoach](https://diuf.unifr.ch/drupal/softeng/teaching/studentprojects/cyber-coach-rest)
6
8
  API of the University of Fribourg.
7
9
 
10
+ - [Rubygem website](https://rubygems.org/gems/coach_client)
11
+ - [API Documentation](http://www.rubydoc.info/gems/coach_client)
12
+ - [GitHub](https://github.com/jungomi/coach_client)
13
+
8
14
  ## Installation
9
15
 
10
16
  Add this line to your application's Gemfile:
@@ -21,12 +27,6 @@ Or install it yourself as:
21
27
 
22
28
  $ gem install coach_client
23
29
 
24
- ## Documentation
25
-
26
- - [Rubygem website](https://rubygems.org/gems/coach_client)
27
- - [Documentation](http://www.rubydoc.info/gems/coach_client/0.1.0)
28
- - [GitHub](https://github.com/jungomi/coach_client)
29
-
30
30
  ## Usage
31
31
 
32
32
  ### Client
@@ -150,7 +150,8 @@ user.partnerships.all? { |partnership| partnership.user1 == user } #=> true
150
150
  The partnership uses the following methods to modify its status:
151
151
  - `propose` proposes a partnership by user1
152
152
  - `confirm` confirms a partnership by user2
153
- - `invalidate` invalidates the confirmations of user2
153
+ - `cancel` cancels the confirmation of user1
154
+ - `invalidate` invalidates the confirmation of user2
154
155
 
155
156
  When using `save` on a partnership that is not operational, it first tries to
156
157
  propose and confirm it. Similarly `delete` will try to invalidate it before
@@ -187,9 +188,9 @@ used almost identically.
187
188
  As for the other resources the user or partnership and the sport may be passed
188
189
  as the corresponding object. When an argument is not the object, it tries to
189
190
  create it. For partnerships a string representation is expected in that case,
190
- which represents the two users involved separated by a semicolon.
191
- Using already existing objects is recommended to preserve the already assigned
192
- attributes.
191
+ which represents the two users involved separated by a semicolon (e.g.
192
+ `'user1;user2'`). Using already existing objects is recommended to preserve the
193
+ already assigned attributes.
193
194
 
194
195
  ```ruby
195
196
  user_sub = CoachClient::UserSubscription.new(client, user, sport)
@@ -209,9 +210,9 @@ partnership.subscriptions
209
210
 
210
211
  #### Entry
211
212
 
212
- An entry corresponds to subscription. The entry provides the method `create` to
213
- create a new entry. This is automatically invoked when trying to save it, if the
214
- entry does not exist on the CyberCoach service. When create is used on an
213
+ An entry corresponds to a subscription. The entry provides the method `create` to
214
+ create a new entry. This is automatically invoked when trying to save the entry,
215
+ if the it does not exist on the CyberCoach service. When create is used on an
215
216
  already existing entry, it creates a new one with the same attributes (apart
216
217
  from the id).
217
218
 
data/Rakefile CHANGED
@@ -3,4 +3,4 @@ require "rspec/core/rake_task"
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
data/coach_client.gemspec CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Michael Jungo", "Amanda Karavolia", "Andrea Liechti", "Jocelyn Thode", "Simon Brulhart"]
10
10
  spec.email = ["michael.jungo@unifr.ch"]
11
11
 
12
- spec.summary = %q{A wrapper around the CyberCoach API of unifr}
12
+ spec.summary = %q{A wrapper around the CyberCoach API of the University of Fribourg}
13
13
  spec.homepage = "https://github.com/jungomi/coach_client"
14
14
  spec.license = "MIT"
15
15
 
@@ -26,6 +26,8 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency "rspec", "~> 3.4.0"
27
27
  spec.add_development_dependency "webmock", "~> 1.22.3"
28
28
  spec.add_development_dependency "vcr", "~> 2.9.3"
29
+ spec.add_development_dependency "simplecov", "~> 0.11.1"
30
+ spec.add_development_dependency "codeclimate-test-reporter"
29
31
 
30
32
  spec.add_dependency "gyoku", "~> 1.3.1"
31
33
  spec.add_dependency "rest-client", "~> 1.8"
@@ -61,6 +61,12 @@ module CoachClient
61
61
  # @option info [Date] :entrydate
62
62
  # @option info [Integer] :entryduration
63
63
  # @option info [String] :entrylocation
64
+ # @option info [Integer] :roundduration for boxing
65
+ # @option info [Integer] :numberofrounds except for soccer
66
+ # @option info [Integer] :courselength for cycling and running
67
+ # @option info [String] :coursetype for cycling and running
68
+ # @option info [String] :track for cycling and running
69
+ # @option info [String] :bicycletype for cycling
64
70
  # @return [CoachClient::Entry]
65
71
  def initialize(client, subscription, info = {})
66
72
  super(client)
@@ -90,13 +96,9 @@ module CoachClient
90
96
  # @raise [CoachClient::NotFound] if the entry does not exist
91
97
  # @return [CoachClient::User] the updated user
92
98
  def update
93
- raise CoachClient::NotFound, 'Entry not found' unless exist?
94
- response = if user.authenticated?
95
- CoachClient::Request.get(url, username: user.username,
96
- password: user.password)
97
- else
98
- CoachClient::Request.get(url)
99
- end
99
+ fail CoachClient::NotFound.new(self), 'Entry not found' if @id.nil?
100
+ response = CoachClient::Request.get(url, username: user.username,
101
+ password: user.password)
100
102
  tag = "entry#{@subscription.sport}"
101
103
  response = response.to_h[tag.to_sym]
102
104
  @datecreated = response[:datecreated]
@@ -129,20 +131,13 @@ module CoachClient
129
131
  # @raise [CoachClient::NotSaved] if the entry could not be saved
130
132
  # @return [CoachClient::Entry] the created entry
131
133
  def create
132
- unless user.authenticated?
133
- raise CoachClient::Unauthorized.new(user), 'Unauthorized'
134
- end
135
- begin
136
- response = CoachClient::Request.post(@subscription.url,
137
- username: user.username,
138
- password: user.password,
139
- payload: payload,
140
- content_type: :xml)
141
- rescue RestClient::Conflict
142
- raise CoachClient::IncompleteInformation.new(self), 'Incomplete information'
143
- end
134
+ response = CoachClient::Request.post(@subscription.url,
135
+ username: user.username,
136
+ password: user.password,
137
+ payload: payload,
138
+ content_type: :xml)
144
139
  unless response.code == 200 || response.code == 201
145
- raise CoachClient::NotSaved.new(self), 'Could not create entry'
140
+ fail CoachClient::NotSaved.new(self), 'Could not create entry'
146
141
  end
147
142
  @id = self.class.extract_id_from_uri(response.header[:location])
148
143
  self
@@ -160,19 +155,12 @@ module CoachClient
160
155
  # @return [CoachClient::Entry] the created entry
161
156
  def save
162
157
  return create unless @id
163
- unless user.authenticated?
164
- raise CoachClient::Unauthorized.new(user), 'Unauthorized'
165
- end
166
- begin
167
- response = CoachClient::Request.put(url, username: user.username,
168
- password: user.password,
169
- payload: payload,
170
- content_type: :xml)
171
- rescue RestClient::Conflict
172
- raise CoachClient::IncompleteInformation.new(self), 'Incomplete information'
173
- end
158
+ response = CoachClient::Request.put(url, username: user.username,
159
+ password: user.password,
160
+ payload: payload,
161
+ content_type: :xml)
174
162
  unless response.code == 200 || response.code == 201
175
- raise CoachClient::NotSaved.new(self), 'Could not save entry'
163
+ fail CoachClient::NotSaved.new(self), 'Could not save entry'
176
164
  end
177
165
  self
178
166
  end
@@ -199,10 +187,7 @@ module CoachClient
199
187
  # @raise [CoachClient::Unauthorized] if not authorized
200
188
  # @return [true]
201
189
  def delete
202
- raise CoachClient::NotFound.new(self), 'Entry not found' unless exist?
203
- unless user.authenticated?
204
- raise CoachClient::Unauthorized.new(user), 'Unauthorized'
205
- end
190
+ fail CoachClient::NotFound.new(self), 'Entry not found' unless exist?
206
191
  CoachClient::Request.delete(url, username: user.username,
207
192
  password: user.password)
208
193
  true
@@ -213,11 +198,7 @@ module CoachClient
213
198
  # @return [Boolean]
214
199
  def exist?
215
200
  return false unless @id
216
- if user.authenticated?
217
- super(username: user.username, password: user.password)
218
- else
219
- super
220
- end
201
+ super(username: user.username, password: user.password)
221
202
  end
222
203
 
223
204
  # Returns the URL of the entry.
@@ -237,7 +218,7 @@ module CoachClient
237
218
  private
238
219
 
239
220
  def payload
240
- vals = self.to_h
221
+ vals = to_h
241
222
  vals.delete(:subscription)
242
223
  vals.delete_if { |_k, v| v.nil? || v.to_s.empty? }
243
224
  tag = "entry#{@subscription.sport}"
@@ -58,7 +58,7 @@ module CoachClient
58
58
  # @yieldreturn [Boolean] whether the partnership should be added to the list
59
59
  # @return [Array<CoachClient::Partnership>] the list of partnerships
60
60
  def self.list(client, size: 20, start: 0, all: false)
61
- list = []
61
+ list = []
62
62
  if all
63
63
  total = self.total(client)
64
64
  start = 0
@@ -69,7 +69,7 @@ module CoachClient
69
69
  params: { start: start, size: size })
70
70
  response.to_h[:partnerships].each do |p|
71
71
  user1, user2 = extract_users_from_uri(p[:uri])
72
- partnership = self.new(client, user1, user2)
72
+ partnership = new(client, user1, user2)
73
73
  list << partnership if !block_given? || yield(partnership)
74
74
  end
75
75
  break unless all
@@ -106,22 +106,18 @@ module CoachClient
106
106
  # @raise [CoachClient::NotFound] if the partnership does not exist
107
107
  # @return [CoachClient::Partnership] the updated partnership
108
108
  def update
109
- raise CoachClient::NotFound.new(self), 'Partnership not found' unless exist?
110
- response = if @user1.authenticated?
109
+ response = begin
111
110
  CoachClient::Request.get(url, username: @user1.username,
112
111
  password: @user1.password)
113
- elsif @user2.authenticated?
114
- CoachClient::Request.get(url, username:@user2.username,
112
+ rescue CoachClient::Exception
113
+ CoachClient::Request.get(url, username: @user2.username,
115
114
  password: @user2.password)
116
- else
117
- CoachClient::Request.get(url)
118
115
  end
119
116
  response = response.to_h
120
117
  @id = response[:id]
121
118
  @datecreated = response[:datecreated]
122
119
  @publicvisible = response[:publicvisible]
123
- @user1_confirmed = response[:userconfirmed1]
124
- @user2_confirmed = response[:userconfirmed2]
120
+ set_user_confirmed(response)
125
121
  @subscriptions = []
126
122
  unless response[:subscriptions].nil?
127
123
  response[:subscriptions].each do |s|
@@ -148,28 +144,19 @@ module CoachClient
148
144
  propose unless @user1_confirmed
149
145
  return confirm
150
146
  end
151
- user1 = @user1.authenticated?
152
- user2 = @user2.authenticated? unless user1
153
- unless user1 || user2
154
- raise CoachClient::Unauthorized.new(@user2), 'Unauthorized'
155
- end
156
- begin
157
- response = if user1
158
- CoachClient::Request.put(url, username: @user1.username,
159
- password: @user1.password,
160
- payload: payload,
161
- content_type: :xml)
162
- else
163
- CoachClient::Request.put(url, username: @user2.username,
164
- password: @user2.password,
165
- payload: payload,
166
- content_type: :xml)
167
- end
168
- rescue RestClient::Conflict
169
- raise CoachClient::IncompleteInformation.new(self), 'Incomplete information'
170
- end
147
+ response = begin
148
+ CoachClient::Request.put(url, username: @user1.username,
149
+ password: @user1.password,
150
+ payload: payload,
151
+ content_type: :xml)
152
+ rescue CoachClient::Exception
153
+ CoachClient::Request.put(url, username: @user2.username,
154
+ password: @user2.password,
155
+ payload: payload,
156
+ content_type: :xml)
157
+ end
171
158
  unless response.code == 200 || response.code == 201
172
- raise CoachClient::NotSaved.new(self), 'Could not save partnership'
159
+ fail CoachClient::NotSaved.new(self), 'Could not save partnership'
173
160
  end
174
161
  self
175
162
  end
@@ -182,21 +169,14 @@ module CoachClient
182
169
  # @raise [CoachClient::NotProposed] if the partnership could not be proposed
183
170
  # @return [CoachClient::Partnership] the proposed partnership
184
171
  def propose
185
- unless @user1.authenticated?
186
- raise CoachClient::Unauthorized.new(@user1), 'Unauthorized'
187
- end
188
- begin
189
- response = CoachClient::Request.put(url, username: @user1.username,
190
- password: @user1.password,
191
- payload: payload,
192
- content_type: :xml)
193
- rescue RestClient::Conflict
194
- raise CoachClient::IncompleteInformation.new(self), 'Incomplete information'
195
- end
172
+ response = CoachClient::Request.put(url, username: @user1.username,
173
+ password: @user1.password,
174
+ payload: payload,
175
+ content_type: :xml)
196
176
  unless response.code == 200 || response.code == 201
197
- raise CoachClient::NotProposed.new(self), 'Could not propose partnership'
177
+ fail CoachClient::NotProposed.new(self), 'Could not propose partnership'
198
178
  end
199
- @user1_confirmed = true
179
+ set_user_confirmed(response.to_h)
200
180
  self
201
181
  end
202
182
 
@@ -208,35 +188,40 @@ module CoachClient
208
188
  # @raise [CoachClient::NotConfirmed] if the partnership could not be proposed
209
189
  # @return [CoachClient::Partnership] the confirmed partnership
210
190
  def confirm
211
- unless @user2.authenticated?
212
- raise CoachClient::Unauthorized.new(@user2), 'Unauthorized'
213
- end
214
- begin
215
- response = CoachClient::Request.put(url, username: @user2.username,
216
- password: @user2.password,
217
- payload: payload,
218
- content_type: :xml)
219
- rescue RestClient::Conflict
220
- raise CoachClient::IncompleteInformation.new(self), 'Incomplete information'
221
- end
191
+ response = CoachClient::Request.put(url, username: @user2.username,
192
+ password: @user2.password,
193
+ payload: payload,
194
+ content_type: :xml)
222
195
  unless response.code == 200 || response.code == 201
223
- raise CoachClient::NotConfirmed.new(self), 'Could not confirm partnership'
196
+ fail CoachClient::NotConfirmed.new(self), 'Could not confirm partnership'
224
197
  end
225
- @user2_confirmed = true
198
+ set_user_confirmed(response.to_h)
199
+ self
200
+ end
201
+
202
+ # Cancels the partnership on the CyberCoach service.
203
+ #
204
+ # This sets the confirmation status of user1 to false.
205
+ #
206
+ # @raise [CoachClient::Unauthorized] if not authorized
207
+ # @return [CoachClient::Partnership] the invalidated partnership
208
+ def cancel
209
+ response = CoachClient::Request.delete(url, username: @user1.username,
210
+ password: @user1.password)
211
+ set_user_confirmed(response.to_h)
226
212
  self
227
213
  end
228
214
 
229
215
  # Invalidates the partnership on the CyberCoach service.
230
216
  #
217
+ # This sets the confirmation status of user2 to false.
218
+ #
231
219
  # @raise [CoachClient::Unauthorized] if not authorized
232
220
  # @return [CoachClient::Partnership] the invalidated partnership
233
221
  def invalidate
234
- unless @user2.authenticated?
235
- raise CoachClient::Unauthorized.new(@user2), 'Unauthorized'
236
- end
237
- CoachClient::Request.delete(url, username: @user2.username,
238
- password: @user2.password)
239
- @user2_confirmed = false
222
+ response = CoachClient::Request.delete(url, username: @user2.username,
223
+ password: @user2.password)
224
+ set_user_confirmed(response.to_h)
240
225
  self
241
226
  end
242
227
 
@@ -246,16 +231,13 @@ module CoachClient
246
231
  # @raise [CoachClient::Unauthorized] if not authorized
247
232
  # @return [true]
248
233
  def delete
249
- raise CoachClient::NotFound unless exist?
250
- invalidate if user2_confirmed
251
- if user1_confirmed
252
- unless @user1.authenticated?
253
- raise CoachClient::Unauthorized.new(@user1), 'Unauthorized'
254
- end
255
- CoachClient::Request.delete(url, username: @user1.username,
256
- password: @user1.password)
234
+ fail CoachClient::NotFound unless exist?
235
+ invalidate if @user2_confirmed
236
+ if @user1_confirmed
237
+ response = CoachClient::Request.delete(url, username: @user1.username,
238
+ password: @user1.password)
239
+ set_user_confirmed(response.to_h)
257
240
  end
258
- @user1_confirmed = false
259
241
  true
260
242
  end
261
243
 
@@ -283,12 +265,22 @@ module CoachClient
283
265
  private
284
266
 
285
267
  def payload
286
- vals = self.to_h
268
+ vals = to_h
287
269
  vals.delete(:user1)
288
270
  vals.delete(:user2)
289
271
  vals.delete_if { |_k, v| v.nil? || v.to_s.empty? }
290
272
  Gyoku.xml(partnership: vals)
291
273
  end
274
+
275
+ def set_user_confirmed(response)
276
+ if response[:user1][:username] == @user1.username
277
+ @user1_confirmed = response[:userconfirmed1]
278
+ @user2_confirmed = response[:userconfirmed2]
279
+ else
280
+ @user1_confirmed = response[:userconfirmed2]
281
+ @user2_confirmed = response[:userconfirmed1]
282
+ end
283
+ end
292
284
  end
293
285
  end
294
286
 
@@ -40,9 +40,9 @@ module CoachClient
40
40
  # @return [CoachClient::PartnershipSubscription] the updated partnership
41
41
  # subscription
42
42
  def update
43
- if @partnership.user1.authenticated?
43
+ begin
44
44
  super(@partnership.user1)
45
- else
45
+ rescue CoachClient::Exception
46
46
  super(@partnership.user2)
47
47
  end
48
48
  end
@@ -60,9 +60,9 @@ module CoachClient
60
60
  # @return [CoachClient::PartnershipSubscription] the saved partnership
61
61
  # subscription
62
62
  def save
63
- if @partnership.user1.authenticated?
63
+ begin
64
64
  super(@partnership.user1)
65
- else
65
+ rescue CoachClient::Exception
66
66
  super(@partnership.user2)
67
67
  end
68
68
  end
@@ -74,9 +74,9 @@ module CoachClient
74
74
  # @raise [CoachClient::Unauthorized] if not authorized
75
75
  # @return [true]
76
76
  def delete
77
- if @partnership.user1.authenticated?
77
+ begin
78
78
  super(@partnership.user1)
79
- else
79
+ rescue CoachClient::Exception
80
80
  super(@partnership.user2)
81
81
  end
82
82
  end
@@ -46,6 +46,8 @@ module CoachClient
46
46
  raise CoachClient::NotFound, e.message
47
47
  rescue RestClient::Unauthorized => e
48
48
  raise CoachClient::Unauthorized, e.message
49
+ rescue RestClient::Conflict
50
+ raise CoachClient::IncompleteInformation, 'Incomplete Information'
49
51
  end
50
52
  CoachClient::Response.new(response.headers, response.body, response.code)
51
53
  end
@@ -70,6 +72,8 @@ module CoachClient
70
72
  raise CoachClient::NotFound, e.message
71
73
  rescue RestClient::Unauthorized => e
72
74
  raise CoachClient::Unauthorized, e.message
75
+ rescue RestClient::Conflict
76
+ raise CoachClient::IncompleteInformation, 'Incomplete Information'
73
77
  end
74
78
  CoachClient::Response.new(response.headers, response.body, response.code)
75
79
  end
@@ -82,6 +86,7 @@ module CoachClient
82
86
  # @param [Hash] header
83
87
  # @return [CoachClient::Response]
84
88
  def self.delete(url, username: nil, password: nil, **header)
89
+ header.merge!(DEFAULT_HEADER)
85
90
  begin
86
91
  response = RestClient::Request.execute(method: :delete, url: url,
87
92
  user: username,
@@ -40,7 +40,7 @@ module CoachClient
40
40
  sportlist = []
41
41
  response = CoachClient::Request.get(client.url + path)
42
42
  response.to_h[:sports].each do |s|
43
- sport = self.new(client, s[:name])
43
+ sport = new(client, s[:name])
44
44
  sportlist << sport if !block_given? || yield(sport)
45
45
  end
46
46
  sportlist
@@ -61,7 +61,6 @@ module CoachClient
61
61
  # @raise [CoachClient::NotFound] if the sport does not exist
62
62
  # @return [CoachClient::Sport] the updated sport
63
63
  def update
64
- raise CoachClient::NotFound, 'Sport not found' unless exist?
65
64
  response = CoachClient::Request.get(url)
66
65
  response = response.to_h
67
66
  @id = response[:id]
@@ -39,13 +39,8 @@ module CoachClient
39
39
  # @param [CoachClient::User] user
40
40
  # @return [CoachClient::Subscription] the updated subscription
41
41
  def update(user)
42
- raise CoachClient::NotFound, 'Subscription not found' unless exist?
43
- response = if user.authenticated?
44
- CoachClient::Request.get(url, username: user.username,
45
- password: user.password)
46
- else
47
- CoachClient::Request.get(url)
48
- end
42
+ response = CoachClient::Request.get(url, username: user.username,
43
+ password: user.password)
49
44
  response = response.to_h
50
45
  @id = response[:id]
51
46
  @datesubscribed = response[:datesubscribed]
@@ -73,25 +68,18 @@ module CoachClient
73
68
  # @param [CoachClient::User] user
74
69
  # @return [CoachClient::Subscription] the saved subscription
75
70
  def save(user)
76
- vals = self.to_h
71
+ vals = to_h
77
72
  vals.delete(:user)
78
73
  vals.delete(:partnership)
79
74
  vals.delete(:sport)
80
75
  vals.delete_if { |_k, v| v.nil? || v.to_s.empty? }
81
76
  payload = Gyoku.xml(subscription: vals)
82
- unless user.authenticated?
83
- raise CoachClient::Unauthorized.new(user), 'Unauthorized'
84
- end
85
- begin
86
- response = CoachClient::Request.put(url, username: user.username,
87
- password: user.password,
88
- payload: payload,
89
- content_type: :xml)
90
- rescue RestClient::Conflict
91
- raise CoachClient::IncompleteInformation.new(self), 'Incomplete information'
92
- end
77
+ response = CoachClient::Request.put(url, username: user.username,
78
+ password: user.password,
79
+ payload: payload,
80
+ content_type: :xml)
93
81
  unless response.code == 200 || response.code == 201
94
- raise CoachClient::NotSaved.new(self), 'Could not save subscription'
82
+ fail CoachClient::NotSaved.new(self), 'Could not save subscription'
95
83
  end
96
84
  self
97
85
  end
@@ -103,10 +91,6 @@ module CoachClient
103
91
  # @param [CoachClient::User] user
104
92
  # @return [true]
105
93
  def delete(user)
106
- raise CoachClient::NotFound unless exist?
107
- unless user.authenticated?
108
- raise CoachClient::Unauthorized.new(user), 'Unauthorized'
109
- end
110
94
  CoachClient::Request.delete(url, username: user.username,
111
95
  password: user.password)
112
96
  true
@@ -52,7 +52,7 @@ module CoachClient
52
52
  # @yieldreturn [Boolean] whether the user should be added to the list
53
53
  # @return [Array<CoachClient::User>] the list of users
54
54
  def self.list(client, size: 20, start: 0, all: false)
55
- userlist = []
55
+ userlist = []
56
56
  if all
57
57
  total = self.total(client)
58
58
  start = 0
@@ -62,7 +62,7 @@ module CoachClient
62
62
  response = CoachClient::Request.get(client.url + path,
63
63
  params: { start: start, size: size })
64
64
  response.to_h[:users].each do |u|
65
- user = self.new(client, u[:username])
65
+ user = new(client, u[:username])
66
66
  userlist << user if !block_given? || yield(user)
67
67
  end
68
68
  break unless all
@@ -96,13 +96,8 @@ module CoachClient
96
96
  # @raise [CoachClient::NotFound] if the user does not exist
97
97
  # @return [CoachClient::User] the updated user
98
98
  def update
99
- raise CoachClient::NotFound, 'User not found' unless exist?
100
- response = if authenticated?
101
- CoachClient::Request.get(url, username: @username,
102
- password: @password)
103
- else
104
- CoachClient::Request.get(url)
105
- end
99
+ response = CoachClient::Request.get(url, username: @username,
100
+ password: @password)
106
101
  response = response.to_h
107
102
  @realname = response[:realname]
108
103
  @email = response[:email]
@@ -137,30 +132,17 @@ module CoachClient
137
132
  # @raise [CoachClient::NotSaved] if the user could not be saved
138
133
  # @return [CoachClient::User] the saved user
139
134
  def save
140
- vals = self.to_h
135
+ vals = to_h
141
136
  vals.delete(:username)
142
137
  vals.delete_if { |_k, v| v.nil? || v.to_s.empty? }
143
138
  vals[:password] = vals.delete(:newpassword) if vals[:newpassword]
144
139
  payload = Gyoku.xml(user: vals)
145
- response = if exist?
146
- unless authenticated?
147
- raise CoachClient::Unauthorized.new(self), 'Unauthorized'
148
- end
149
- CoachClient::Request.put(url, username: @username,
150
- password: @password,
151
- payload: payload,
152
- content_type: :xml)
153
- else
154
- begin
155
- CoachClient::Request.put(url, payload: payload,
156
- content_type: :xml)
157
- rescue RestClient::Conflict
158
- raise CoachClient::IncompleteInformation.new(self),
159
- 'Incomplete user information'
160
- end
161
- end
140
+ response = CoachClient::Request.put(url, username: @username,
141
+ password: @password,
142
+ payload: payload,
143
+ content_type: :xml)
162
144
  unless response.code == 200 || response.code == 201
163
- raise CoachClient::NotSaved.new(self), 'Could not save user'
145
+ fail CoachClient::NotSaved.new(self), 'Could not save user'
164
146
  end
165
147
  @password = vals[:password]
166
148
  @newpassword = nil
@@ -173,10 +155,7 @@ module CoachClient
173
155
  # @raise [CoachClient::Unauthorized] if the user is not authorized
174
156
  # @return [true]
175
157
  def delete
176
- raise CoachClient::NotFound unless exist?
177
- unless authenticated?
178
- raise CoachClient::Unauthorized.new(self), 'Unauthorized'
179
- end
158
+ fail CoachClient::NotFound.new(self), 'User not found' unless exist?
180
159
  CoachClient::Request.delete(url, username: @username, password: @password)
181
160
  true
182
161
  end
@@ -1,5 +1,5 @@
1
1
  module CoachClient
2
2
  # The version of the gem
3
- VERSION = '0.1.1'
3
+ VERSION = '0.2.0'
4
4
  end
5
5