authlete 0.3.6 → 0.3.7
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 +4 -4
- data/lib/authlete.rb +14 -14
- data/lib/authlete/api.rb +115 -35
- data/lib/authlete/authentication-server.rb +4 -4
- data/lib/authlete/model/client-list.rb +127 -181
- data/lib/authlete/model/client.rb +444 -492
- data/lib/authlete/model/hashable.rb +65 -0
- data/lib/authlete/model/request/authentication-callback-request.rb +91 -0
- data/lib/authlete/model/request/authorization-fail-request.rb +107 -0
- data/lib/authlete/model/request/authorization-issue-request.rb +136 -0
- data/lib/authlete/model/request/authorization-request.rb +104 -0
- data/lib/authlete/model/request/developer-authentication-callback-request.rb +85 -0
- data/lib/authlete/model/request/introspection-request.rb +40 -0
- data/lib/authlete/model/request/token-fail-request.rb +104 -0
- data/lib/authlete/model/request/token-issue-request.rb +104 -0
- data/lib/authlete/model/request/token-request.rb +124 -0
- data/lib/authlete/model/response/authentication-callback-response.rb +54 -0
- data/lib/authlete/model/response/authorization-fail-response.rb +47 -0
- data/lib/authlete/model/response/authorization-issue-response.rb +47 -0
- data/lib/authlete/model/response/authorization-response.rb +146 -0
- data/lib/authlete/model/response/developer-authentication-callback-response.rb +56 -0
- data/lib/authlete/model/response/introspection-response.rb +129 -0
- data/lib/authlete/model/response/result.rb +45 -0
- data/lib/authlete/model/response/service-creatable-response.rb +51 -0
- data/lib/authlete/model/response/token-fail-response.rb +48 -0
- data/lib/authlete/model/response/token-issue-response.rb +48 -0
- data/lib/authlete/model/response/token-response.rb +69 -0
- data/lib/authlete/model/scope.rb +17 -42
- data/lib/authlete/model/service-list.rb +19 -74
- data/lib/authlete/model/service-owner.rb +16 -40
- data/lib/authlete/model/service.rb +20 -76
- data/lib/authlete/model/sns-credentials.rb +16 -41
- data/lib/authlete/model/tagged-value.rb +105 -135
- data/lib/authlete/utility.rb +29 -5
- data/lib/authlete/version.rb +1 -1
- metadata +24 -10
- data/lib/authlete/request/authentication-callback-request.rb +0 -90
- data/lib/authlete/request/developer-authentication-callback-request.rb +0 -84
- data/lib/authlete/response/authentication-callback-response.rb +0 -58
- data/lib/authlete/response/base-response.rb +0 -41
- data/lib/authlete/response/developer-authentication-callback-response.rb +0 -60
- data/lib/authlete/response/introspection-response.rb +0 -130
- data/lib/authlete/response/service-creatable-response.rb +0 -52
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db827aa9d47c8832b6f2472046bdf4d7a2eb560a
|
4
|
+
data.tar.gz: 8ca80b2dcb5e7746c69775c860adc9041800cffe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d55ae0fe32f6e14a1f79cb832b8554000015e897af58156aae7c8014e5c14d0c864a45941d3c902ea26f608f44f5b4ae05965011c52dfa36cb4d27e9894a0fda
|
7
|
+
data.tar.gz: 1f38e0904b2e68f7d2ef4ecd68311c472c5a3e69853dc00cbad084a3bc746f6524e93f98ab0489ce8c2721303d380c4d9830fffe9ce13e4eeaef41cd02d6c39d
|
data/lib/authlete.rb
CHANGED
@@ -20,8 +20,7 @@ require 'authlete/version'
|
|
20
20
|
|
21
21
|
# == Authlete Module
|
22
22
|
#
|
23
|
-
# A library for
|
24
|
-
#
|
23
|
+
# A library for Authlete Web APIs.
|
25
24
|
module Authlete
|
26
25
|
autoload :AuthenticationServer, 'authlete/authentication-server'
|
27
26
|
autoload :Api, 'authlete/api'
|
@@ -30,6 +29,7 @@ module Authlete
|
|
30
29
|
autoload :Utility, 'authlete/utility'
|
31
30
|
|
32
31
|
module Model
|
32
|
+
autoload :Hashable, 'authlete/model/hashable'
|
33
33
|
autoload :Client, 'authlete/model/client'
|
34
34
|
autoload :ClientList, 'authlete/model/client-list'
|
35
35
|
autoload :Scope, 'authlete/model/scope'
|
@@ -38,18 +38,18 @@ module Authlete
|
|
38
38
|
autoload :ServiceOwner, 'authlete/model/service-owner'
|
39
39
|
autoload :SnsCredentials, 'authlete/model/sns-credentials'
|
40
40
|
autoload :TaggedValue, 'authlete/model/tagged-value'
|
41
|
-
end
|
42
41
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
module Request
|
43
|
+
autoload :AuthenticationCallbackRequest, 'authlete/model/request/authentication-callback-request'
|
44
|
+
autoload :DeveloperAuthenticationCallbackRequest, 'authlete/model/request/developer-authentication-callback-request'
|
45
|
+
end
|
47
46
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
47
|
+
module Response
|
48
|
+
autoload :AuthenticationCallbackResponse, 'authlete/model/response/authentication-callback-response'
|
49
|
+
autoload :Result, 'authlete/model/response/result'
|
50
|
+
autoload :DeveloperAuthenticationCallbackResponse, 'authlete/model/response/developer-authentication-callback-response'
|
51
|
+
autoload :IntrospectionResponse, 'authlete/model/response/introspection-response'
|
52
|
+
autoload :ServiceCreatableResponse, 'authlete/model/response/service-creatable-response'
|
53
|
+
end
|
54
54
|
end
|
55
|
-
end
|
55
|
+
end
|
data/lib/authlete/api.rb
CHANGED
@@ -69,13 +69,9 @@ module Authlete
|
|
69
69
|
def call_api(method, path, content_type, payload, user, password)
|
70
70
|
headers = {}
|
71
71
|
|
72
|
-
|
73
|
-
headers.merge!(:content_type => content_type)
|
74
|
-
end
|
72
|
+
headers.merge!(:content_type => content_type) unless content_type.nil?
|
75
73
|
|
76
|
-
|
77
|
-
headers.merge!(@extra_headers)
|
78
|
-
end
|
74
|
+
headers.merge!(@extra_headers) unless @extra_headers.nil?
|
79
75
|
|
80
76
|
response = execute(
|
81
77
|
:method => method,
|
@@ -88,11 +84,7 @@ module Authlete
|
|
88
84
|
|
89
85
|
body = body_as_string(response)
|
90
86
|
|
91
|
-
|
92
|
-
return nil
|
93
|
-
end
|
94
|
-
|
95
|
-
JSON.parse(response.body.to_s, :symbolize_names => true)
|
87
|
+
body.nil? ? nil : JSON.parse(response.body.to_s, :symbolize_names => true)
|
96
88
|
end
|
97
89
|
|
98
90
|
def execute(parameters)
|
@@ -151,17 +143,11 @@ module Authlete
|
|
151
143
|
end
|
152
144
|
|
153
145
|
def body_as_string(response)
|
154
|
-
if response.body.nil?
|
155
|
-
return nil
|
156
|
-
end
|
146
|
+
return nil if response.body.nil?
|
157
147
|
|
158
148
|
body = response.body.to_s
|
159
149
|
|
160
|
-
|
161
|
-
return nil
|
162
|
-
end
|
163
|
-
|
164
|
-
return body
|
150
|
+
body.length == 0 ? nil : body
|
165
151
|
end
|
166
152
|
|
167
153
|
def call_api_service_owner(method, path, content_type, payload)
|
@@ -213,19 +199,19 @@ module Authlete
|
|
213
199
|
array.push("#{key}=#{value}")
|
214
200
|
end
|
215
201
|
|
216
|
-
|
202
|
+
"?" + array.join("&")
|
217
203
|
end
|
218
204
|
|
219
205
|
public
|
220
206
|
|
221
207
|
# Call Authlete's /api/service/creatable API.
|
222
208
|
#
|
223
|
-
# On success, an instance of Authlete::Response::ServiceCreatableResponse is returned.
|
209
|
+
# On success, an instance of Authlete::Model::Response::ServiceCreatableResponse is returned.
|
224
210
|
# On error, Authlete::Exception is raised.
|
225
211
|
def service_creatable(api_key)
|
226
212
|
hash = call_api_service_owner(:get, "/api/service/creatable", nil, nil)
|
227
213
|
|
228
|
-
Authlete::Response::ServiceCreatableResponse.new(hash)
|
214
|
+
Authlete::Model::Response::ServiceCreatableResponse.new(hash)
|
229
215
|
end
|
230
216
|
|
231
217
|
# Call Authlete's /api/service/create API.
|
@@ -390,9 +376,103 @@ module Authlete
|
|
390
376
|
Authlete::Model::Client.new(hash)
|
391
377
|
end
|
392
378
|
|
393
|
-
# Call Authlete's
|
394
|
-
#
|
395
|
-
#
|
379
|
+
# Call Authlete's /api/auth/authorization API.
|
380
|
+
#
|
381
|
+
# On success, an instance of Authlete::Model::Response::AuthorizationResponse is returned.
|
382
|
+
# On error, Authlete::Exception is raised.
|
383
|
+
def authorization(request)
|
384
|
+
if request.kind_of?(Hash) == false
|
385
|
+
if request.respond_to?('to_hash')
|
386
|
+
request = request.to_hash
|
387
|
+
end
|
388
|
+
end
|
389
|
+
|
390
|
+
hash = call_api_json_service("/api/auth/authorization", request)
|
391
|
+
|
392
|
+
Authlete::Model::Response::AuthorizationResponse.new(hash)
|
393
|
+
end
|
394
|
+
|
395
|
+
# Call Authlete's /api/auth/authorization/issue API.
|
396
|
+
#
|
397
|
+
# On success, an instance of Authlete::Model::Response::AuthorizationIssueResponse is returned.
|
398
|
+
# On error, Authlete::Exception is raised.
|
399
|
+
def authorization_Issue(request)
|
400
|
+
if request.kind_of?(Hash) == false
|
401
|
+
if request.respond_to?('to_hash')
|
402
|
+
request = request.to_hash
|
403
|
+
end
|
404
|
+
end
|
405
|
+
|
406
|
+
hash = call_api_json_service("/api/auth/authorization/issue", request)
|
407
|
+
|
408
|
+
Authlete::Model::Response::AuthorizationIssueResponse.new(hash)
|
409
|
+
end
|
410
|
+
|
411
|
+
# Call Authlete's /api/auth/authorization/fail API.
|
412
|
+
#
|
413
|
+
# On success, an instance of Authlete::Model::Response::AuthorizationFailResponse is returned.
|
414
|
+
# On error, Authlete::Exception is raised.
|
415
|
+
def authorization_fail(request)
|
416
|
+
if request.kind_of?(Hash) == false
|
417
|
+
if request.respond_to?('to_hash')
|
418
|
+
request = request.to_hash
|
419
|
+
end
|
420
|
+
end
|
421
|
+
|
422
|
+
hash = call_api_json_service("/api/auth/authorization/fail", request)
|
423
|
+
|
424
|
+
Authlete::Model::Response::AuthorizationFailResponse.new(hash)
|
425
|
+
end
|
426
|
+
|
427
|
+
# Call Authlete's /api/auth/token API.
|
428
|
+
#
|
429
|
+
# On success, an instance of Authlete::Model::Response::TokenResponse is returned.
|
430
|
+
# On error, Authlete::Exception is raised.
|
431
|
+
def token(request)
|
432
|
+
if request.kind_of?(Hash) == false
|
433
|
+
if request.respond_to?('to_hash')
|
434
|
+
request = request.to_hash
|
435
|
+
end
|
436
|
+
end
|
437
|
+
|
438
|
+
hash = call_api_json_service("/api/auth/token", request)
|
439
|
+
|
440
|
+
Authlete::Model::Response::TokenResponse.new(hash)
|
441
|
+
end
|
442
|
+
|
443
|
+
# Call Authlete's /api/auth/token/issue API.
|
444
|
+
#
|
445
|
+
# On success, an instance of Authlete::Model::Response::TokenIssueResponse is returned.
|
446
|
+
# On error, Authlete::Exception is raised.
|
447
|
+
def token_issue(request)
|
448
|
+
if request.kind_of?(Hash) == false
|
449
|
+
if request.respond_to?('to_hash')
|
450
|
+
request = request.to_hash
|
451
|
+
end
|
452
|
+
end
|
453
|
+
|
454
|
+
hash = call_api_json_service("/api/auth/token/issue", request)
|
455
|
+
|
456
|
+
Authlete::Model::Response::TokenIssueResponse.new(hash)
|
457
|
+
end
|
458
|
+
|
459
|
+
# Call Authlete's /api/auth/token/fail API.
|
460
|
+
#
|
461
|
+
# On success, an instance of Authlete::Model::Response::TokenFailResponse is returned.
|
462
|
+
# On error, Authlete::Exception is raised.
|
463
|
+
def token_fail(request)
|
464
|
+
if request.kind_of?(Hash) == false
|
465
|
+
if request.respond_to?('to_hash')
|
466
|
+
request = request.to_hash
|
467
|
+
end
|
468
|
+
end
|
469
|
+
|
470
|
+
hash = call_api_json_service("/api/auth/token/fail", request)
|
471
|
+
|
472
|
+
Authlete::Model::Response::TokenFailResponse.new(hash)
|
473
|
+
end
|
474
|
+
|
475
|
+
# Call Authlete's /api/auth/introspection API.
|
396
476
|
#
|
397
477
|
# <tt>token</tt> is an access token presented by a client application.
|
398
478
|
# This is a must parameter. In a typical case, a client application uses
|
@@ -409,13 +489,13 @@ module Authlete
|
|
409
489
|
# subject, Authlete prepares the content of the error response.
|
410
490
|
#
|
411
491
|
# On success, this method returns an instance of
|
412
|
-
# <tt>Authlete::Response::IntrospectionResponse</tt>. On error, this method
|
492
|
+
# <tt>Authlete::Model::Response::IntrospectionResponse</tt>. On error, this method
|
413
493
|
# throws <tt>RestClient::Exception</tt>.
|
414
494
|
def introspection(token, scopes = nil, subject = nil)
|
415
495
|
hash = call_api_json_service('/api/auth/introspection',
|
416
496
|
:token => token, :scopes => scopes, :subject => subject)
|
417
497
|
|
418
|
-
Authlete::Response::IntrospectionResponse.new(hash)
|
498
|
+
Authlete::Model::Response::IntrospectionResponse.new(hash)
|
419
499
|
end
|
420
500
|
|
421
501
|
|
@@ -423,7 +503,7 @@ module Authlete
|
|
423
503
|
#
|
424
504
|
# This method extracts an access token from the given request based on the
|
425
505
|
# rules described in RFC 6750 and introspects the access token by calling
|
426
|
-
# Authlete's /auth/introspection API.
|
506
|
+
# Authlete's /api/auth/introspection API.
|
427
507
|
#
|
428
508
|
# The first argument <tt>request</tt> is a Rack request.
|
429
509
|
#
|
@@ -435,7 +515,7 @@ module Authlete
|
|
435
515
|
# is optional.
|
436
516
|
#
|
437
517
|
# This method returns an instance of
|
438
|
-
# <tt>Authlete::Response::IntrospectionResponse</tt>. If its <tt>action</tt>
|
518
|
+
# <tt>Authlete::Model::Response::IntrospectionResponse</tt>. If its <tt>action</tt>
|
439
519
|
# method returns 'OK', it means that the access token exists, has not
|
440
520
|
# expired, covers the requested scopes (if specified), and is associated
|
441
521
|
# with the requested subject (if specified). Otherwise, it means that the
|
@@ -448,31 +528,31 @@ module Authlete
|
|
448
528
|
# If the request does not contain any access token.
|
449
529
|
if access_token.nil?
|
450
530
|
# The request does not contain a valid access token.
|
451
|
-
return Authlete::Response::IntrospectionResponse.new(
|
531
|
+
return Authlete::Model::Response::IntrospectionResponse.new(
|
452
532
|
:action => 'BAD_REQUEST',
|
453
533
|
:responseContent => 'Bearer error="invalid_token",error_description="The request does not contain a valid access token."'
|
454
534
|
)
|
455
535
|
end
|
456
536
|
|
457
537
|
begin
|
458
|
-
# Call Authlete's /auth/introspection API to introspect the access token.
|
538
|
+
# Call Authlete's /api/auth/introspection API to introspect the access token.
|
459
539
|
result = introspection(access_token, scopes, subject)
|
460
540
|
rescue => e
|
461
541
|
# Error message.
|
462
|
-
message = build_error_message('/auth/introspection', e)
|
542
|
+
message = build_error_message('/api/auth/introspection', e)
|
463
543
|
|
464
544
|
# Emit a Rack error message.
|
465
545
|
emit_rack_error_message(request, message)
|
466
546
|
|
467
547
|
# Failed to introspect the access token.
|
468
|
-
return Authlete::Response::IntrospectionResponse.new(
|
548
|
+
return Authlete::Model::Response::IntrospectionResponse.new(
|
469
549
|
:action => 'INTERNAL_SERVER_ERROR',
|
470
550
|
:responseContent => "Bearer error=\"server_error\",error_description=\"#{message}\""
|
471
551
|
)
|
472
552
|
end
|
473
553
|
|
474
|
-
# Return the response from Authlete's /auth/introspection API.
|
554
|
+
# Return the response from Authlete's /api/auth/introspection API.
|
475
555
|
result
|
476
556
|
end
|
477
557
|
end
|
478
|
-
end
|
558
|
+
end
|
@@ -67,7 +67,7 @@ module Authlete
|
|
67
67
|
end
|
68
68
|
|
69
69
|
# Prepare an empty response.
|
70
|
-
res = Authlete::Response::AuthenticationCallbackResponse.new
|
70
|
+
res = Authlete::Model::Response::AuthenticationCallbackResponse.new
|
71
71
|
|
72
72
|
# Let the subclass authenticate the end-user.
|
73
73
|
# When authenticated successfully, a non-nil value is returned.
|
@@ -163,7 +163,7 @@ module Authlete
|
|
163
163
|
json = request.body.read
|
164
164
|
|
165
165
|
# Parse the authentication callback request.
|
166
|
-
Authlete::Request::AuthenticationCallbackRequest.parse(json)
|
166
|
+
Authlete::Model::Request::AuthenticationCallbackRequest.parse(json)
|
167
167
|
end
|
168
168
|
|
169
169
|
protected
|
@@ -184,7 +184,7 @@ module Authlete
|
|
184
184
|
# This default implementation returns nil, meaning 'invalid end-user'.
|
185
185
|
#
|
186
186
|
# The argument of this method is an instance of
|
187
|
-
# <tt>Authlete::Request::AuthenticationCallbackRequest</tt>.
|
187
|
+
# <tt>Authlete::Model::Request::AuthenticationCallbackRequest</tt>.
|
188
188
|
# When the end-user is successfully authenticated, this method must
|
189
189
|
# return a unique identifier (= subject) of the end-user. Otherwise,
|
190
190
|
# nil must be returned to indicate authentication failure.
|
@@ -197,7 +197,7 @@ module Authlete
|
|
197
197
|
# method. This default implementation returns nil, meaning 'no claim values'.
|
198
198
|
#
|
199
199
|
# The argument of this method is an instance of
|
200
|
-
# <tt>Authlete::Request::AuthenticationCallbackRequest</tt> and the subject
|
200
|
+
# <tt>Authlete::Model::Request::AuthenticationCallbackRequest</tt> and the subject
|
201
201
|
# which has been returned from the preceding call of <tt>authenticate_user</tt>
|
202
202
|
# method.
|
203
203
|
#
|
@@ -1,181 +1,127 @@
|
|
1
|
-
# :nodoc:
|
2
|
-
#
|
3
|
-
# Copyright (C) 2014-2015 Authlete, Inc.
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
|
17
|
-
|
18
|
-
require 'set'
|
19
|
-
|
20
|
-
|
21
|
-
module Authlete
|
22
|
-
module Model
|
23
|
-
class ClientList
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
alias_method :total_count
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
if
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
if hash.nil? or (hash.kind_of?(Hash) == false)
|
129
|
-
return nil
|
130
|
-
end
|
131
|
-
|
132
|
-
return ClientList.new(hash)
|
133
|
-
end
|
134
|
-
|
135
|
-
# Set attribute values using the given hash.
|
136
|
-
def update(hash)
|
137
|
-
authlete_model_clientList_update(hash)
|
138
|
-
end
|
139
|
-
|
140
|
-
# Convert this object into a hash.
|
141
|
-
def to_hash
|
142
|
-
hash = {}
|
143
|
-
|
144
|
-
instance_variables.each do |var|
|
145
|
-
key = var.to_s.delete("@").to_sym
|
146
|
-
val = instance_variable_get(var)
|
147
|
-
|
148
|
-
if authlete_model_clientList_simple_attribute?(key) or val.nil?
|
149
|
-
hash[key] = val
|
150
|
-
elsif val.kind_of?(Array)
|
151
|
-
hash[key] = val.map {|element| element.to_hash}
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
return hash
|
156
|
-
end
|
157
|
-
|
158
|
-
def [](key)
|
159
|
-
key = authlete_model_clientList_to_key(key)
|
160
|
-
|
161
|
-
if respond_to?(key)
|
162
|
-
return send(key)
|
163
|
-
else
|
164
|
-
return nil
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
def []=(key, value)
|
169
|
-
key = authlete_model_clientList_to_key(key)
|
170
|
-
method = "#{key}="
|
171
|
-
|
172
|
-
if respond_to?(method)
|
173
|
-
return send(method, value)
|
174
|
-
else
|
175
|
-
return nil
|
176
|
-
end
|
177
|
-
end
|
178
|
-
end
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
1
|
+
# :nodoc:
|
2
|
+
#
|
3
|
+
# Copyright (C) 2014-2015 Authlete, Inc.
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
|
18
|
+
require 'set'
|
19
|
+
|
20
|
+
|
21
|
+
module Authlete
|
22
|
+
module Model
|
23
|
+
class ClientList < Authlete::Model::Hashable
|
24
|
+
include Authlete::Utility
|
25
|
+
# The start index (inclusive) of the clients in this list.
|
26
|
+
attr_accessor :start
|
27
|
+
|
28
|
+
# The end index (exclusive) of the clients in this list.
|
29
|
+
attr_accessor :end
|
30
|
+
|
31
|
+
# The total count of clients.
|
32
|
+
attr_accessor :totalCount
|
33
|
+
alias_method :total_count, :totalCount
|
34
|
+
alias_method :total_count=, :totalCount=
|
35
|
+
|
36
|
+
# The list of clients.
|
37
|
+
attr_accessor :clients
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
# Integer attributes.
|
42
|
+
INTEGER_ATTRIBUTES = ::Set.new([ :start, :end, :totalCount ])
|
43
|
+
|
44
|
+
# Mapping from snake cases to camel cases.
|
45
|
+
SNAKE_TO_CAMEL = { :total_count => :totalCount }
|
46
|
+
|
47
|
+
# The constructor
|
48
|
+
def initialize(hash = nil)
|
49
|
+
# Set default values to integer attributes.
|
50
|
+
INTEGER_ATTRIBUTES.each do |attr|
|
51
|
+
send("#{attr}=", 0)
|
52
|
+
end
|
53
|
+
|
54
|
+
@clients = nil
|
55
|
+
|
56
|
+
# Set attribute values using the given hash.
|
57
|
+
authlete_model_update(hash)
|
58
|
+
end
|
59
|
+
|
60
|
+
def authlete_model_convert_key(key)
|
61
|
+
key = key.to_sym
|
62
|
+
|
63
|
+
# Convert snakecase to camelcase, if necessary.
|
64
|
+
if SNAKE_TO_CAMEL.has_key?(key)
|
65
|
+
key = SNAKE_TO_CAMEL[key]
|
66
|
+
end
|
67
|
+
|
68
|
+
key
|
69
|
+
end
|
70
|
+
|
71
|
+
def authlete_model_simple_attribute?(key)
|
72
|
+
INTEGER_ATTRIBUTES.include?(key)
|
73
|
+
end
|
74
|
+
|
75
|
+
def authlete_model_update(hash)
|
76
|
+
return if hash.nil?
|
77
|
+
|
78
|
+
hash.each do |key, value|
|
79
|
+
key = authlete_model_convert_key(key)
|
80
|
+
|
81
|
+
if authlete_model_simple_attribute?(key)
|
82
|
+
send("#{key}=", value)
|
83
|
+
elsif key == :clients
|
84
|
+
# Get an array consisting of "Client" objects.
|
85
|
+
@clients = get_parsed_array(value) do |element|
|
86
|
+
Authlete::Model::Client.parse(element)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
self
|
92
|
+
end
|
93
|
+
|
94
|
+
public
|
95
|
+
|
96
|
+
# Construct an instance from the given hash.
|
97
|
+
#
|
98
|
+
# If the given argument is nil or is not a Hash, nil is returned.
|
99
|
+
# Otherwise, ClientList.new(hash) is returned.
|
100
|
+
def self.parse(hash)
|
101
|
+
if hash.nil? or (hash.kind_of?(Hash) == false)
|
102
|
+
return nil
|
103
|
+
end
|
104
|
+
|
105
|
+
return ClientList.new(hash)
|
106
|
+
end
|
107
|
+
|
108
|
+
# Convert this object into a hash.
|
109
|
+
def to_hash
|
110
|
+
hash = {}
|
111
|
+
|
112
|
+
instance_variables.each do |var|
|
113
|
+
key = var.to_s.delete("@").to_sym
|
114
|
+
val = instance_variable_get(var)
|
115
|
+
|
116
|
+
if authlete_model_simple_attribute?(key) or val.nil?
|
117
|
+
hash[key] = val
|
118
|
+
elsif val.kind_of?(Array)
|
119
|
+
hash[key] = val.map { |element| element.to_hash }
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
hash
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|