clever-ruby 0.13.2 → 0.14.0
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/CHANGELOG.md +5 -1
- data/README.md +4 -0
- data/Rakefile +1 -1
- data/circle.yml +11 -0
- data/clever-ruby.gemspec +2 -1
- data/lib/clever-ruby.rb +1 -0
- data/lib/clever-ruby/district.rb +13 -0
- data/lib/clever-ruby/district_admin.rb +45 -0
- data/lib/clever-ruby/errors/clever_error.rb +1 -1
- data/lib/clever-ruby/util.rb +1 -1
- data/lib/clever-ruby/version.rb +1 -1
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district_admin.yml +90 -0
- data/test/integration/api_operations/list_test.rb +10 -1
- data/test/integration/last_test.rb +1 -0
- data/test/integration/nested_resource_test.rb +1 -1
- data/test/unit/api_resource_test.rb +2 -1
- data/test/unit/clever_test.rb +1 -0
- metadata +24 -7
- data/.drone.yml +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6be18e2196824dd36bf951c67c66e98f261ceb6a
|
4
|
+
data.tar.gz: feadf8e0ab8d174d0297d166e7cfcf30daf7aad5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b50b445f558636447bbf8f7fdc7e87ef9467225b07f98b2602bb42fb6f25d9cf8762e976cc9020721bc7cb750e2fb8add9e267bfda1c7e8acbfebf300641f7c1
|
7
|
+
data.tar.gz: ed69a1c5c8ba10b5f62da9a7abc14bed287167087a5c8fbf09fd63051a67fbc1e9256a5a11c95f4a10be0a455fe710d554ea6e6c423a38d0ebc8ae1e901519d4
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -4,6 +4,10 @@
|
|
4
4
|
|
5
5
|
Ruby bindings to the Clever API. [Documentation](http://rubydoc.info/gems/clever-ruby/frames)
|
6
6
|
|
7
|
+
## Maintenance
|
8
|
+
|
9
|
+
Clever is moving to a community supported model with our client libraries. We will still respond to and merge incoming PRs but are looking to turn over ownership of these libraries to the community. If you are interested, please contact our partner-engineering team at tech-support@clever.com.
|
10
|
+
|
7
11
|
## Installation
|
8
12
|
|
9
13
|
Add this line to your application's Gemfile:
|
data/Rakefile
CHANGED
data/circle.yml
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
machine:
|
2
|
+
post:
|
3
|
+
- cd $HOME && git clone --depth 1 -v git@github.com:clever/ci-scripts.git && cd ci-scripts && git show --oneline -s
|
4
|
+
services:
|
5
|
+
- docker
|
6
|
+
test:
|
7
|
+
override:
|
8
|
+
- bundle install
|
9
|
+
- bundle exec rake
|
10
|
+
post:
|
11
|
+
- $HOME/ci-scripts/circleci/report-card $RC_DOCKER_USER $RC_DOCKER_PASS "$RC_DOCKER_EMAIL" $RC_GITHUB_TOKEN
|
data/clever-ruby.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |gem|
|
|
22
22
|
gem.add_runtime_dependency 'multi_json', '~> 1.1'
|
23
23
|
gem.add_runtime_dependency 'rest-client', '~> 1.6.7'
|
24
24
|
|
25
|
-
gem.add_development_dependency 'rake'
|
25
|
+
gem.add_development_dependency 'rake', '~> 11.1.2'
|
26
26
|
gem.add_development_dependency 'minitest', '~> 5.4.1'
|
27
27
|
gem.add_development_dependency 'yard', '~> 0.8.7'
|
28
28
|
gem.add_development_dependency 'yardstick', '~> 0.9.9'
|
@@ -31,4 +31,5 @@ Gem::Specification.new do |gem|
|
|
31
31
|
gem.add_development_dependency 'minitest-vcr', '~> 0.1.1'
|
32
32
|
gem.add_development_dependency 'webmock', '~> 1.9.0'
|
33
33
|
gem.add_development_dependency 'rubocop', '~> 0.26.0'
|
34
|
+
gem.add_development_dependency 'byebug', '~> 3.5'
|
34
35
|
end
|
data/lib/clever-ruby.rb
CHANGED
data/lib/clever-ruby/district.rb
CHANGED
@@ -30,6 +30,19 @@ module Clever
|
|
30
30
|
fail NotImplementedError, 'status nested resource not yet implemented.'
|
31
31
|
end
|
32
32
|
|
33
|
+
# Get district admins for the current district
|
34
|
+
# @api public
|
35
|
+
# @return [Object]
|
36
|
+
# @example
|
37
|
+
# district = district.retrieve id
|
38
|
+
# district_admins = district.district_admins
|
39
|
+
def district_admins(filters = {})
|
40
|
+
# The response for a district does not include a link to the district
|
41
|
+
# admins URI, so this can't be a linked_resource.
|
42
|
+
filters = filters.merge(show_links: true)
|
43
|
+
Clever::NestedResource.new '/v1.1/district_admins', filters, headers
|
44
|
+
end
|
45
|
+
|
33
46
|
# Get school admins for the current district
|
34
47
|
# @api public
|
35
48
|
# @return [Object]
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Clever
|
2
|
+
# District Admin resource
|
3
|
+
class DistrictAdmin < APIResource
|
4
|
+
include Clever::APIOperations::List
|
5
|
+
@uri = 'district_admins'
|
6
|
+
@plural = 'district_admins'
|
7
|
+
@linked_resources = []
|
8
|
+
|
9
|
+
# Override Clever::APIOperations::List.find so that response format
|
10
|
+
# has standard "data" and "uri" keys
|
11
|
+
# @api public
|
12
|
+
# array of ids will raise error since district admins do not allow 'where' param
|
13
|
+
def self.find(id = nil, filters = {}, headers = {})
|
14
|
+
filters = filters.merge(show_links: true)
|
15
|
+
super
|
16
|
+
end
|
17
|
+
|
18
|
+
# Override Clever::APIOperations::List.first so that response format
|
19
|
+
# has standard "data" and "uri" keys
|
20
|
+
# @api public
|
21
|
+
# 'num' argument is not implemented since district admins do not allow 'limit' param
|
22
|
+
def self.first(_num = nil, filters = {}, headers = {})
|
23
|
+
filters = filters.merge(show_links: true)
|
24
|
+
response = Clever.request :get, url, filters, headers
|
25
|
+
Util.convert_to_clever_object response[:data].first
|
26
|
+
end
|
27
|
+
|
28
|
+
# Optional attributes
|
29
|
+
# @see Clever::CleverObject.optional_attributes
|
30
|
+
# @api private
|
31
|
+
# @return [Array]
|
32
|
+
def optional_attributes
|
33
|
+
[:name, :title]
|
34
|
+
end
|
35
|
+
|
36
|
+
# Get all district admins
|
37
|
+
# @api public
|
38
|
+
# @param filters [Hash] parameters to apply, as per the Clever API spec
|
39
|
+
# @return [Array] array of all elements matching the request
|
40
|
+
def self.all(filters = {}, headers = {})
|
41
|
+
filters = filters.merge(show_links: true)
|
42
|
+
super
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/clever-ruby/util.rb
CHANGED
@@ -43,7 +43,7 @@ module Clever
|
|
43
43
|
uri = resp[:links].select { |l| l[:rel] == 'self' }[0][:uri]
|
44
44
|
end
|
45
45
|
|
46
|
-
klass_name = %r{
|
46
|
+
klass_name = %r{v1.1/([a-z_]+)/\S+$}.match(uri)[1]
|
47
47
|
klass = APIResource.named klass_name if klass_name
|
48
48
|
klass ||= CleverObject
|
49
49
|
klass.construct_from resp[:data]
|
data/lib/clever-ruby/version.rb
CHANGED
@@ -0,0 +1,90 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.clever.com/v1.1/district_admins?show_links=true
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- "*/*; q=0.5, application/xml"
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip, deflate
|
14
|
+
Authorization:
|
15
|
+
- Bearer DEMO_TOKEN
|
16
|
+
User-Agent:
|
17
|
+
- Ruby
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: OK
|
22
|
+
headers:
|
23
|
+
Access-Control-Allow-Headers:
|
24
|
+
- Content-Type,Authorization,X-Requested-With,Accept,Origin,Referer,User-Agent
|
25
|
+
Access-Control-Allow-Methods:
|
26
|
+
- GET,PATCH,POST,DELETE
|
27
|
+
Access-Control-Allow-Origin:
|
28
|
+
- "*"
|
29
|
+
Content-Type:
|
30
|
+
- application/json; charset=utf-8
|
31
|
+
Date:
|
32
|
+
- Fri, 16 Dec 2016 22:10:51 GMT
|
33
|
+
X-Powered-By:
|
34
|
+
- Express
|
35
|
+
X-Request-Id:
|
36
|
+
- 64e279a3-ebdd-48e4-9727-4402f095fa1d
|
37
|
+
Content-Length:
|
38
|
+
- '1009'
|
39
|
+
Connection:
|
40
|
+
- keep-alive
|
41
|
+
body:
|
42
|
+
encoding: UTF-8
|
43
|
+
string: '{"data":[{"data":{"id":"519edecb58b876b018000652","district":"4fd43cc56d11340000000005","email":"demo
|
44
|
+
account@demo account.com","name":{"first":"Demo","last":"Account"}},"uri":"/v1.1/district_admins/519edecb58b876b018000652"},{"data":{"id":"52a112ee3880c7c30b000966","district":"4fd43cc56d11340000000005","email":"aaron.sokol+launch@getclever.com","name":{"first":"Demo","last":"Account"}},"uri":"/v1.1/district_admins/52a112ee3880c7c30b000966"},{"data":{"id":"54a177d50a293fdb06000002","district":"4fd43cc56d11340000000005","email":"taylor.singletary+demo@clever.com","name":{"first":"Taylor","last":"Singletary"}},"uri":"/v1.1/district_admins/54a177d50a293fdb06000002"},{"data":{"id":"555a7ec9982b720100000002","district":"4fd43cc56d11340000000005","email":"aashay.desai+demotoken@clever.com","name":{"last":"Desai","first":"Aashay"},"title":"DevRel"},"uri":"/v1.1/district_admins/555a7ec9982b720100000002"}],"paging":{"current":1,"total":1,"count":4},"links":[{"rel":"self","uri":"/v1.1/district_admins"}]}'
|
45
|
+
http_version:
|
46
|
+
recorded_at: Fri, 16 Dec 2016 22:10:51 GMT
|
47
|
+
- request:
|
48
|
+
method: get
|
49
|
+
uri: https://api.clever.com/v1.1/district_admins/555a7ec9982b720100000002
|
50
|
+
body:
|
51
|
+
encoding: US-ASCII
|
52
|
+
string: ''
|
53
|
+
headers:
|
54
|
+
Accept:
|
55
|
+
- "*/*; q=0.5, application/xml"
|
56
|
+
Accept-Encoding:
|
57
|
+
- gzip, deflate
|
58
|
+
Authorization:
|
59
|
+
- Bearer DEMO_TOKEN
|
60
|
+
User-Agent:
|
61
|
+
- Ruby
|
62
|
+
response:
|
63
|
+
status:
|
64
|
+
code: 200
|
65
|
+
message: OK
|
66
|
+
headers:
|
67
|
+
Access-Control-Allow-Headers:
|
68
|
+
- Content-Type,Authorization,X-Requested-With,Accept,Origin,Referer,User-Agent
|
69
|
+
Access-Control-Allow-Methods:
|
70
|
+
- GET,PATCH,POST,DELETE
|
71
|
+
Access-Control-Allow-Origin:
|
72
|
+
- "*"
|
73
|
+
Content-Type:
|
74
|
+
- application/json; charset=utf-8
|
75
|
+
Date:
|
76
|
+
- Fri, 16 Dec 2016 22:10:51 GMT
|
77
|
+
X-Powered-By:
|
78
|
+
- Express
|
79
|
+
X-Request-Id:
|
80
|
+
- 5ded6e6d-20c2-4e3f-b091-4fe57cee6b70
|
81
|
+
Content-Length:
|
82
|
+
- '262'
|
83
|
+
Connection:
|
84
|
+
- keep-alive
|
85
|
+
body:
|
86
|
+
encoding: UTF-8
|
87
|
+
string: '{"data":{"id":"555a7ec9982b720100000002","district":"4fd43cc56d11340000000005","email":"aashay.desai+demotoken@clever.com","name":{"last":"Desai","first":"Aashay"},"title":"DevRel"},"links":[{"rel":"self","uri":"/v1.1/district_admins/555a7ec9982b720100000002"}]}'
|
88
|
+
http_version:
|
89
|
+
recorded_at: Fri, 16 Dec 2016 22:10:52 GMT
|
90
|
+
recorded_with: VCR 3.0.3
|
@@ -4,12 +4,17 @@ def resource_name(resource)
|
|
4
4
|
resource.shortname
|
5
5
|
end
|
6
6
|
|
7
|
-
|
7
|
+
# The DistrictAdmin resource does not support the count or limit parameters
|
8
|
+
def limitable_countable_resources
|
8
9
|
[Clever::District, Clever::School, Clever::Teacher,
|
9
10
|
Clever::Student, Clever::Section, Clever::Event,
|
10
11
|
Clever::SchoolAdmin]
|
11
12
|
end
|
12
13
|
|
14
|
+
def resources
|
15
|
+
limitable_countable_resources + [Clever::DistrictAdmin]
|
16
|
+
end
|
17
|
+
|
13
18
|
module Minitest
|
14
19
|
# Extend default Minitest assertions
|
15
20
|
module Assertions
|
@@ -56,6 +61,10 @@ describe Clever::APIOperations::List, :vcr do
|
|
56
61
|
assert_resource_type resource, elem
|
57
62
|
assert_equal id, elem.id
|
58
63
|
end
|
64
|
+
end
|
65
|
+
|
66
|
+
limitable_countable_resources.each do |resource|
|
67
|
+
name = resource_name resource
|
59
68
|
|
60
69
|
it 'rejects invalid ids for Clever::District.find multiple' do
|
61
70
|
# one valid, one invalid
|
@@ -7,6 +7,7 @@ describe 'last method', :vcr do
|
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
+
# The DistrictAdmin resource does not support the last method (limit parameter)
|
10
11
|
resources = [Clever::District, Clever::School, Clever::Student,
|
11
12
|
Clever::Event, Clever::Section, Clever::Teacher,
|
12
13
|
Clever::SchoolAdmin]
|
@@ -9,7 +9,7 @@ describe Clever::NestedResource, :vcr do
|
|
9
9
|
|
10
10
|
[Clever::District, Clever::School, Clever::Student,
|
11
11
|
Clever::Event, Clever::Section, Clever::Teacher,
|
12
|
-
Clever::SchoolAdmin].each do |resource|
|
12
|
+
Clever::SchoolAdmin, Clever::DistrictAdmin].each do |resource|
|
13
13
|
next if resource.linked_resources.nil?
|
14
14
|
resource.linked_resources.each do |link|
|
15
15
|
it "retrieves a #{resource.shortname}'s #{link}" do
|
@@ -8,7 +8,8 @@ describe Clever::APIResource do
|
|
8
8
|
event: { plural: 'events', klass: Clever::Event },
|
9
9
|
teacher: { plural: 'teachers', klass: Clever::Teacher },
|
10
10
|
student: { plural: 'students', klass: Clever::Student },
|
11
|
-
school_admin: { plural: 'school_admins', klass: Clever::SchoolAdmin }
|
11
|
+
school_admin: { plural: 'school_admins', klass: Clever::SchoolAdmin },
|
12
|
+
district_admin: { plural: 'district_admins', klass: Clever::DistrictAdmin } }
|
12
13
|
end
|
13
14
|
|
14
15
|
describe :singular do
|
data/test/unit/clever_test.rb
CHANGED
@@ -18,6 +18,7 @@ describe Clever do
|
|
18
18
|
assert_equal 'v1.1/teachers', Clever::Teacher.url
|
19
19
|
assert_equal 'v1.1/events', Clever::Event.url
|
20
20
|
assert_equal 'v1.1/school_admins', Clever::SchoolAdmin.url
|
21
|
+
assert_equal 'v1.1/district_admins', Clever::DistrictAdmin.url
|
21
22
|
end
|
22
23
|
|
23
24
|
it 'uri-encodes params' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clever-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Clever Dev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-04-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -42,16 +42,16 @@ dependencies:
|
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 11.1.2
|
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:
|
54
|
+
version: 11.1.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: minitest
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,6 +164,20 @@ dependencies:
|
|
164
164
|
- - ~>
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: 0.26.0
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: byebug
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ~>
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '3.5'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ~>
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '3.5'
|
167
181
|
description: Ruby bindings to the Clever API.
|
168
182
|
email:
|
169
183
|
- tech-support@clever.com
|
@@ -172,7 +186,6 @@ extensions: []
|
|
172
186
|
extra_rdoc_files: []
|
173
187
|
files:
|
174
188
|
- .document
|
175
|
-
- .drone.yml
|
176
189
|
- .gitignore
|
177
190
|
- .rubocop.yml
|
178
191
|
- .yardopts
|
@@ -182,6 +195,7 @@ files:
|
|
182
195
|
- LICENSE.txt
|
183
196
|
- README.md
|
184
197
|
- Rakefile
|
198
|
+
- circle.yml
|
185
199
|
- clever-ruby.gemspec
|
186
200
|
- lib/clever-ruby.rb
|
187
201
|
- lib/clever-ruby/api_operations/list.rb
|
@@ -193,6 +207,7 @@ files:
|
|
193
207
|
- lib/clever-ruby/clever_object.rb
|
194
208
|
- lib/clever-ruby/configuration.rb
|
195
209
|
- lib/clever-ruby/district.rb
|
210
|
+
- lib/clever-ruby/district_admin.rb
|
196
211
|
- lib/clever-ruby/errors/api_connection_error.rb
|
197
212
|
- lib/clever-ruby/errors/api_error.rb
|
198
213
|
- lib/clever-ruby/errors/authentication_error.rb
|
@@ -216,6 +231,7 @@ files:
|
|
216
231
|
- test/data/vcr_cassettes/Clever_APIOperations_List/counts_student_properly.yml
|
217
232
|
- test/data/vcr_cassettes/Clever_APIOperations_List/counts_teacher_properly.yml
|
218
233
|
- test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district.yml
|
234
|
+
- test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district_admin.yml
|
219
235
|
- test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_event.yml
|
220
236
|
- test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school.yml
|
221
237
|
- test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school_admin.yml
|
@@ -333,6 +349,7 @@ test_files:
|
|
333
349
|
- test/data/vcr_cassettes/Clever_APIOperations_List/counts_student_properly.yml
|
334
350
|
- test/data/vcr_cassettes/Clever_APIOperations_List/counts_teacher_properly.yml
|
335
351
|
- test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district.yml
|
352
|
+
- test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district_admin.yml
|
336
353
|
- test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_event.yml
|
337
354
|
- test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school.yml
|
338
355
|
- test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school_admin.yml
|