clever-ruby 0.14.0 → 1.0.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 +4 -0
- data/Gemfile +4 -1
- data/Makefile +10 -0
- data/README.md +175 -68
- data/Rakefile +6 -36
- data/circle.yml +1 -1
- data/clever-ruby.gemspec +43 -33
- data/docs/BadRequest.md +8 -0
- data/docs/DataApi.md +2144 -0
- data/docs/District.md +10 -0
- data/docs/DistrictAdmin.md +12 -0
- data/docs/DistrictAdminResponse.md +8 -0
- data/docs/DistrictAdminsResponse.md +8 -0
- data/docs/DistrictObject.md +8 -0
- data/docs/DistrictResponse.md +8 -0
- data/docs/DistrictStatus.md +15 -0
- data/docs/DistrictStatusResponse.md +8 -0
- data/docs/DistrictsCreated.md +10 -0
- data/docs/DistrictsDeleted.md +10 -0
- data/docs/DistrictsResponse.md +8 -0
- data/docs/DistrictsUpdated.md +10 -0
- data/docs/Event.md +9 -0
- data/docs/EventResponse.md +8 -0
- data/docs/EventsApi.md +424 -0
- data/docs/EventsResponse.md +8 -0
- data/docs/GradeLevelsResponse.md +8 -0
- data/docs/InternalError.md +8 -0
- data/docs/Location.md +13 -0
- data/docs/Name.md +10 -0
- data/docs/NotFound.md +8 -0
- data/docs/Principal.md +9 -0
- data/docs/School.md +22 -0
- data/docs/SchoolAdmin.md +14 -0
- data/docs/SchoolAdminObject.md +8 -0
- data/docs/SchoolAdminResponse.md +8 -0
- data/docs/SchoolAdminsResponse.md +8 -0
- data/docs/SchoolObject.md +8 -0
- data/docs/SchoolResponse.md +8 -0
- data/docs/SchooladminsCreated.md +10 -0
- data/docs/SchooladminsDeleted.md +10 -0
- data/docs/SchooladminsUpdated.md +10 -0
- data/docs/SchoolsCreated.md +10 -0
- data/docs/SchoolsDeleted.md +10 -0
- data/docs/SchoolsResponse.md +8 -0
- data/docs/SchoolsUpdated.md +10 -0
- data/docs/Section.md +25 -0
- data/docs/SectionObject.md +8 -0
- data/docs/SectionResponse.md +8 -0
- data/docs/SectionsCreated.md +10 -0
- data/docs/SectionsDeleted.md +10 -0
- data/docs/SectionsResponse.md +8 -0
- data/docs/SectionsUpdated.md +10 -0
- data/docs/Student.md +27 -0
- data/docs/StudentContact.md +16 -0
- data/docs/StudentContactObject.md +8 -0
- data/docs/StudentContactResponse.md +8 -0
- data/docs/StudentContactsResponse.md +8 -0
- data/docs/StudentObject.md +8 -0
- data/docs/StudentResponse.md +8 -0
- data/docs/StudentcontactsCreated.md +10 -0
- data/docs/StudentcontactsDeleted.md +10 -0
- data/docs/StudentcontactsUpdated.md +10 -0
- data/docs/StudentsCreated.md +10 -0
- data/docs/StudentsDeleted.md +10 -0
- data/docs/StudentsResponse.md +8 -0
- data/docs/StudentsUpdated.md +10 -0
- data/docs/Teacher.md +19 -0
- data/docs/TeacherObject.md +8 -0
- data/docs/TeacherResponse.md +8 -0
- data/docs/TeachersCreated.md +10 -0
- data/docs/TeachersDeleted.md +10 -0
- data/docs/TeachersResponse.md +8 -0
- data/docs/TeachersUpdated.md +10 -0
- data/docs/Term.md +10 -0
- data/git_push.sh +55 -0
- data/instructions.md +12 -0
- data/lib/clever-ruby.rb +89 -318
- data/lib/clever-ruby/api/data_api.rb +2090 -0
- data/lib/clever-ruby/api/events_api.rb +429 -0
- data/lib/clever-ruby/api_client.rb +401 -0
- data/lib/clever-ruby/api_error.rb +37 -0
- data/lib/clever-ruby/configuration.rb +187 -25
- data/lib/clever-ruby/models/bad_request.rb +187 -0
- data/lib/clever-ruby/models/district.rb +205 -0
- data/lib/clever-ruby/models/district_admin.rb +223 -0
- data/lib/clever-ruby/models/district_admin_response.rb +187 -0
- data/lib/clever-ruby/models/district_admins_response.rb +189 -0
- data/lib/clever-ruby/models/district_object.rb +187 -0
- data/lib/clever-ruby/models/district_response.rb +187 -0
- data/lib/clever-ruby/models/district_status.rb +250 -0
- data/lib/clever-ruby/models/district_status_response.rb +187 -0
- data/lib/clever-ruby/models/districts_created.rb +206 -0
- data/lib/clever-ruby/models/districts_deleted.rb +207 -0
- data/lib/clever-ruby/models/districts_response.rb +189 -0
- data/lib/clever-ruby/models/districts_updated.rb +207 -0
- data/lib/clever-ruby/models/event.rb +201 -0
- data/lib/clever-ruby/models/event_response.rb +187 -0
- data/lib/clever-ruby/models/events_response.rb +189 -0
- data/lib/clever-ruby/models/grade_levels_response.rb +189 -0
- data/lib/clever-ruby/models/internal_error.rb +187 -0
- data/lib/clever-ruby/models/location.rb +232 -0
- data/lib/clever-ruby/models/name.rb +205 -0
- data/lib/clever-ruby/models/not_found.rb +187 -0
- data/lib/clever-ruby/models/principal.rb +196 -0
- data/lib/clever-ruby/models/school.rb +313 -0
- data/lib/clever-ruby/models/school_admin.rb +243 -0
- data/lib/clever-ruby/models/school_admin_object.rb +187 -0
- data/lib/clever-ruby/models/school_admin_response.rb +187 -0
- data/lib/clever-ruby/models/school_admins_response.rb +189 -0
- data/lib/clever-ruby/models/school_object.rb +187 -0
- data/lib/clever-ruby/models/school_response.rb +187 -0
- data/lib/clever-ruby/models/schooladmins_created.rb +207 -0
- data/lib/clever-ruby/models/schooladmins_deleted.rb +207 -0
- data/lib/clever-ruby/models/schooladmins_updated.rb +207 -0
- data/lib/clever-ruby/models/schools_created.rb +207 -0
- data/lib/clever-ruby/models/schools_deleted.rb +207 -0
- data/lib/clever-ruby/models/schools_response.rb +189 -0
- data/lib/clever-ruby/models/schools_updated.rb +207 -0
- data/lib/clever-ruby/models/section.rb +344 -0
- data/lib/clever-ruby/models/section_object.rb +187 -0
- data/lib/clever-ruby/models/section_response.rb +187 -0
- data/lib/clever-ruby/models/sections_created.rb +207 -0
- data/lib/clever-ruby/models/sections_deleted.rb +207 -0
- data/lib/clever-ruby/models/sections_response.rb +189 -0
- data/lib/clever-ruby/models/sections_updated.rb +207 -0
- data/lib/clever-ruby/models/student.rb +360 -0
- data/lib/clever-ruby/models/student_contact.rb +259 -0
- data/lib/clever-ruby/models/student_contact_object.rb +187 -0
- data/lib/clever-ruby/models/student_contact_response.rb +187 -0
- data/lib/clever-ruby/models/student_contacts_response.rb +189 -0
- data/lib/clever-ruby/models/student_object.rb +187 -0
- data/lib/clever-ruby/models/student_response.rb +187 -0
- data/lib/clever-ruby/models/studentcontacts_created.rb +207 -0
- data/lib/clever-ruby/models/studentcontacts_deleted.rb +207 -0
- data/lib/clever-ruby/models/studentcontacts_updated.rb +207 -0
- data/lib/clever-ruby/models/students_created.rb +196 -0
- data/lib/clever-ruby/models/students_deleted.rb +206 -0
- data/lib/clever-ruby/models/students_response.rb +189 -0
- data/lib/clever-ruby/models/students_updated.rb +207 -0
- data/lib/clever-ruby/models/teacher.rb +288 -0
- data/lib/clever-ruby/models/teacher_object.rb +187 -0
- data/lib/clever-ruby/models/teacher_response.rb +187 -0
- data/lib/clever-ruby/models/teachers_created.rb +207 -0
- data/lib/clever-ruby/models/teachers_deleted.rb +207 -0
- data/lib/clever-ruby/models/teachers_response.rb +189 -0
- data/lib/clever-ruby/models/teachers_updated.rb +207 -0
- data/lib/clever-ruby/models/term.rb +205 -0
- data/lib/clever-ruby/version.rb +12 -4
- data/override/api_client.rb +401 -0
- data/override/config.json +5 -0
- data/override/models/districts_created.rb +206 -0
- data/override/models/districts_deleted.rb +207 -0
- data/override/models/districts_updated.rb +207 -0
- data/override/models/schooladmins_created.rb +207 -0
- data/override/models/schooladmins_deleted.rb +207 -0
- data/override/models/schooladmins_updated.rb +207 -0
- data/override/models/schools_created.rb +207 -0
- data/override/models/schools_deleted.rb +207 -0
- data/override/models/schools_updated.rb +207 -0
- data/override/models/sections_created.rb +207 -0
- data/override/models/sections_deleted.rb +207 -0
- data/override/models/sections_updated.rb +207 -0
- data/override/models/studentcontacts_created.rb +207 -0
- data/override/models/studentcontacts_deleted.rb +207 -0
- data/override/models/studentcontacts_updated.rb +207 -0
- data/override/models/students_created.rb +196 -0
- data/override/models/students_deleted.rb +206 -0
- data/override/models/students_updated.rb +207 -0
- data/override/models/teachers_created.rb +207 -0
- data/override/models/teachers_deleted.rb +207 -0
- data/override/models/teachers_updated.rb +207 -0
- data/override/override.sh +9 -0
- data/sample/sample.rb +16 -0
- metadata +252 -293
- data/.document +0 -5
- data/.gitignore +0 -22
- data/.rubocop.yml +0 -4
- data/.yardopts +0 -2
- data/LICENSE.txt +0 -20
- data/lib/clever-ruby/api_operations/list.rb +0 -130
- data/lib/clever-ruby/api_operations/nested_list.rb +0 -95
- data/lib/clever-ruby/api_operations/page.rb +0 -71
- data/lib/clever-ruby/api_operations/pagelist.rb +0 -43
- data/lib/clever-ruby/api_operations/results_list.rb +0 -31
- data/lib/clever-ruby/api_resource.rb +0 -174
- data/lib/clever-ruby/clever_object.rb +0 -246
- data/lib/clever-ruby/district.rb +0 -75
- data/lib/clever-ruby/district_admin.rb +0 -45
- data/lib/clever-ruby/errors/api_connection_error.rb +0 -5
- data/lib/clever-ruby/errors/api_error.rb +0 -5
- data/lib/clever-ruby/errors/authentication_error.rb +0 -5
- data/lib/clever-ruby/errors/clever_error.rb +0 -52
- data/lib/clever-ruby/errors/invalid_request_error.rb +0 -17
- data/lib/clever-ruby/event.rb +0 -61
- data/lib/clever-ruby/json.rb +0 -34
- data/lib/clever-ruby/nested_resource.rb +0 -41
- data/lib/clever-ruby/school.rb +0 -17
- data/lib/clever-ruby/school_admin.rb +0 -19
- data/lib/clever-ruby/section.rb +0 -17
- data/lib/clever-ruby/student.rb +0 -30
- data/lib/clever-ruby/teacher.rb +0 -17
- data/lib/clever-ruby/util.rb +0 -108
- data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_district_properly.yml +0 -52
- data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_event_properly.yml +0 -52
- data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_school_admin_properly.yml +0 -52
- data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_school_properly.yml +0 -52
- data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_section_properly.yml +0 -52
- data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_student_properly.yml +0 -52
- data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_teacher_properly.yml +0 -52
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district_admin.yml +0 -90
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_event.yml +0 -124
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school.yml +0 -113
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school_admin.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_section.yml +0 -368
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_student.yml +0 -176
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_teacher.yml +0 -191
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_districts_by_page.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_districts_with_multiple_ids.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_events_by_page.yml +0 -122
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_events_with_multiple_ids.yml +0 -131
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_school_admins_by_page.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_school_admins_with_multiple_ids.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_schools_by_page.yml +0 -110
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_schools_with_multiple_ids.yml +0 -116
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_sections_by_page.yml +0 -1168
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_sections_with_multiple_ids.yml +0 -163
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_students_by_page.yml +0 -1207
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_students_with_multiple_ids.yml +0 -127
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_teachers_by_page.yml +0 -190
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_teachers_with_multiple_ids.yml +0 -131
- data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_district.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_event.yml +0 -122
- data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_school.yml +0 -110
- data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_school_admin.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_section.yml +0 -1168
- data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_student.yml +0 -1207
- data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_teacher.yml +0 -190
- data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_events.yml +0 -526
- data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_schools.yml +0 -240
- data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_sections.yml +0 -3674
- data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_students.yml +0 -2387
- data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_teachers.yml +0 -717
- data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_events.yml +0 -152
- data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_schools.yml +0 -211
- data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_sections.yml +0 -3649
- data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_students.yml +0 -2362
- data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_teachers.yml +0 -688
- data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_events.yml +0 -89
- data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_school_admins.yml +0 -101
- data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_schools.yml +0 -164
- data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_sections.yml +0 -1168
- data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_students.yml +0 -1207
- data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_teachers.yml +0 -324
- data/test/data/vcr_cassettes/Clever_NestedResource/must_include_auth_token_in_linked_resources.yml +0 -197
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_events.yml +0 -237
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_schools.yml +0 -217
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_sections.yml +0 -2333
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_students.yml +0 -2411
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_teachers.yml +0 -377
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_admin_s_schools.yml +0 -205
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_district.yml +0 -162
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_events.yml +0 -215
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_sections.yml +0 -1153
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_students.yml +0 -1081
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_teachers.yml +0 -283
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_district.yml +0 -417
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_events.yml +0 -470
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_school.yml +0 -420
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_students.yml +0 -482
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_teacher.yml +0 -418
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_district.yml +0 -226
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_events.yml +0 -279
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_school.yml +0 -229
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_sections.yml +0 -301
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_teachers.yml +0 -277
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_district.yml +0 -240
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_events.yml +0 -293
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_school.yml +0 -243
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_sections.yml +0 -321
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_students.yml +0 -323
- data/test/data/vcr_cassettes/Error_handling/raises_an_InvalidRequestError_when_given_a_bad_created_since.yml +0 -151
- data/test/data/vcr_cassettes/Optional_attributes/has_the_expected_value_for_an_optional_attribute_that_is_present.yml +0 -55
- data/test/data/vcr_cassettes/last_method/page/has_working_first_and_last_methods.yml +0 -800
- data/test/integration/api_operations/list_test.rb +0 -117
- data/test/integration/district_test.rb +0 -53
- data/test/integration/district_with_non_global_token_test.rb +0 -88
- data/test/integration/error_handling_test.rb +0 -17
- data/test/integration/last_test.rb +0 -56
- data/test/integration/nested_resource_test.rb +0 -31
- data/test/test_helper.rb +0 -18
- data/test/unit/api_resource_test.rb +0 -48
- data/test/unit/clever_test.rb +0 -65
- data/test/unit/configuration_test.rb +0 -37
- data/test/unit/event_test.rb +0 -57
- data/test/unit/optional_attributes_test.rb +0 -27
data/.document
DELETED
data/.gitignore
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
*.gem
|
|
2
|
-
*.rbc
|
|
3
|
-
.bundle
|
|
4
|
-
.config
|
|
5
|
-
.yardoc
|
|
6
|
-
doc_coverage.txt
|
|
7
|
-
.rvmrc
|
|
8
|
-
.ruby-version
|
|
9
|
-
.ruby-gemset
|
|
10
|
-
Gemfile.lock
|
|
11
|
-
InstalledFiles
|
|
12
|
-
_yardoc
|
|
13
|
-
coverage
|
|
14
|
-
doc/
|
|
15
|
-
lib/bundler/man
|
|
16
|
-
pkg
|
|
17
|
-
rdoc
|
|
18
|
-
spec/reports
|
|
19
|
-
test/tmp
|
|
20
|
-
test/version_tmp
|
|
21
|
-
tmp
|
|
22
|
-
*~
|
data/.rubocop.yml
DELETED
data/.yardopts
DELETED
data/LICENSE.txt
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
Copyright (c) 2012 Rafael Garcia
|
|
2
|
-
|
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
-
a copy of this software and associated documentation files (the
|
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
-
the following conditions:
|
|
10
|
-
|
|
11
|
-
The above copyright notice and this permission notice shall be
|
|
12
|
-
included in all copies or substantial portions of the Software.
|
|
13
|
-
|
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
module Clever
|
|
2
|
-
# API Operations
|
|
3
|
-
module APIOperations
|
|
4
|
-
# A list of API resource instances
|
|
5
|
-
module List
|
|
6
|
-
# Class methods for those that include List
|
|
7
|
-
# @api public
|
|
8
|
-
module ClassMethods
|
|
9
|
-
# Get all elements of a resource
|
|
10
|
-
# @api public
|
|
11
|
-
# @deprecated This can be costly since it places all matching elements
|
|
12
|
-
# in memory. Instead just iterate over the collection using each.
|
|
13
|
-
# @param filters [Hash] parameters to apply, as per the Clever API spec
|
|
14
|
-
# @return [Array] array of all elements matching the request
|
|
15
|
-
# @example
|
|
16
|
-
# Clever::District.all
|
|
17
|
-
def all(filters = {}, headers = {})
|
|
18
|
-
accum = []
|
|
19
|
-
Clever::APIOperations::PageList.new(url, filters, headers).each do |page|
|
|
20
|
-
accum += page.all
|
|
21
|
-
end
|
|
22
|
-
accum
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# Get elements of a resource. Supports 1 or more ids, or open-ended query
|
|
26
|
-
# @api public
|
|
27
|
-
# @param id [String, Array, nil] ID or array of ids to match, or nil
|
|
28
|
-
# for query
|
|
29
|
-
# @param filters [Hash, nil] Query parameters to pass, as per Clever API spec
|
|
30
|
-
# @return [Clever::APIResource, Clever::APIOperations::ResultsList]
|
|
31
|
-
# single resource or iterable list of results
|
|
32
|
-
# @raise [ArgumentError] Bad ID/IDs provided
|
|
33
|
-
# @example
|
|
34
|
-
# # Get first 20 clever districts
|
|
35
|
-
# districts = Clever::District.find.take 20
|
|
36
|
-
#
|
|
37
|
-
# # Get specific district
|
|
38
|
-
# id = '...'
|
|
39
|
-
# district = Clever::District.find id
|
|
40
|
-
#
|
|
41
|
-
# # Get districts with given ids
|
|
42
|
-
# ids = ['...', '...']
|
|
43
|
-
# districts = Clever::District.find ids
|
|
44
|
-
def find(id = nil, filters = {}, headers = {})
|
|
45
|
-
if id.is_a? Array
|
|
46
|
-
unless id.select { |e| !Clever::Util.valid_id? e }.empty?
|
|
47
|
-
fail ArgumentError, 'Array of IDs must only contain valid ObjectIDs'
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
filters[:where] = JSON.dump(_id: { :'$in' => id })
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
if id.nil? || id.is_a?(Array)
|
|
54
|
-
Clever::APIOperations::PageList.new(url, filters, headers).to_results_list
|
|
55
|
-
elsif Clever::Util.valid_id? id
|
|
56
|
-
retrieve id
|
|
57
|
-
else
|
|
58
|
-
fail ArgumentError, 'id must be a valid ObjectID, an array of them, or nil.'
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
# Query for the first element or n elements in the resource
|
|
63
|
-
# @api public
|
|
64
|
-
# @param num [nil, Integer] If nil, first elem; else, num elems to fetch
|
|
65
|
-
# @param filters [Hash] Filters to request with, as per Clever API spec
|
|
66
|
-
# @return [CleverObject, Clever::APIOperations::Page] elem, or
|
|
67
|
-
# elems found.
|
|
68
|
-
# @example
|
|
69
|
-
# first_elem = Clever::District.first
|
|
70
|
-
# first_elems = Clever::District.first 20
|
|
71
|
-
# first_elems.each do |e|
|
|
72
|
-
# puts e.name
|
|
73
|
-
# end
|
|
74
|
-
def first(num = nil, filters = {}, headers = {})
|
|
75
|
-
if num.nil?
|
|
76
|
-
filters[:limit] = 1
|
|
77
|
-
response = Clever.request :get, url, filters, headers
|
|
78
|
-
Util.convert_to_clever_object response[:data].last
|
|
79
|
-
else
|
|
80
|
-
filters[:limit] = num
|
|
81
|
-
Clever::APIOperations::PageList.new(url, filters, headers).first
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
# Query for the last element or n elements in the resource
|
|
86
|
-
# @api public
|
|
87
|
-
# @param num [nil, Integer] If nil, last elem; else, num elems to fetch
|
|
88
|
-
# @param filters [Hash] Filters to request with, as per Clever API spec
|
|
89
|
-
# @return [CleverObject, Clever::APIOperations::ResultsList] elem, or
|
|
90
|
-
# elems found. If list, sorted in ascending order of ids.
|
|
91
|
-
# @example
|
|
92
|
-
# last_elem = Clever::District.last
|
|
93
|
-
# last_elems = Clever::District.last 20
|
|
94
|
-
# last_elems.each do |e|
|
|
95
|
-
# puts e.name
|
|
96
|
-
# end
|
|
97
|
-
def last(num = nil, filters = {}, headers = {})
|
|
98
|
-
filters[:ending_before] = 'last'
|
|
99
|
-
if num.nil?
|
|
100
|
-
filters[:limit] = 1
|
|
101
|
-
response = Clever.request :get, url, filters, headers
|
|
102
|
-
Util.convert_to_clever_object response[:data].last
|
|
103
|
-
else
|
|
104
|
-
filters[:limit] = num
|
|
105
|
-
Clever::APIOperations::PageList.new(url, filters, headers).to_results_list
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
# Requests number of elements matching the query
|
|
110
|
-
# @api public
|
|
111
|
-
# @param filters [Hash, nil] Query parameters to pass, as per Clever API spec
|
|
112
|
-
# @return [Integer] Number of elements matching
|
|
113
|
-
# @example
|
|
114
|
-
# num_districts = Clever::District.count
|
|
115
|
-
def count(filters = {}, headers = {})
|
|
116
|
-
filters[:count] = true
|
|
117
|
-
response = Clever.request :get, url, filters, headers
|
|
118
|
-
response[:count]
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
# Add ClassMethods to classes that include List
|
|
123
|
-
# @api private
|
|
124
|
-
# @return [nil]
|
|
125
|
-
def self.included(base)
|
|
126
|
-
base.extend ClassMethods
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
end
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
module Clever
|
|
2
|
-
module APIOperations
|
|
3
|
-
# Methods for interacting with the API on nested resources
|
|
4
|
-
# TODO: find a way to not duplicate list.rb code
|
|
5
|
-
module NestedList
|
|
6
|
-
# Query a nested list with Clever API params, overriding initialized keys
|
|
7
|
-
# @api public
|
|
8
|
-
# @note You don't need to call this if you aren't using additional filters;
|
|
9
|
-
# instead just iterate on the NestedResource itself.
|
|
10
|
-
# @param filters [Hash] Parameters to use
|
|
11
|
-
# @return [Clever::APIOperations::ResultList] list of results
|
|
12
|
-
# @example
|
|
13
|
-
# # Without any overriding
|
|
14
|
-
# district = Clever::Districts.retrieve id
|
|
15
|
-
# district.schools.find(starting_after: lower_bound).each do |school|
|
|
16
|
-
# puts school.name
|
|
17
|
-
# end
|
|
18
|
-
#
|
|
19
|
-
# # With overriding
|
|
20
|
-
# district = Clever::Districts.retrieve id
|
|
21
|
-
# schools = district.schools(starting_after: lower_bound)
|
|
22
|
-
# # The above filter has been overridden for the query below!
|
|
23
|
-
# schools.find(starting_after: even_lower_bound).each do |school|
|
|
24
|
-
# puts school.name
|
|
25
|
-
# end
|
|
26
|
-
def find(filters = {})
|
|
27
|
-
filters = @filters.merge filters
|
|
28
|
-
Clever::APIOperations::PageList.new(@uri, filters, headers).to_results_list
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Request the number of elements in a nested list from the API
|
|
32
|
-
# @note This does not count a data structure in memory; it runs an HTTP query!
|
|
33
|
-
# @api public
|
|
34
|
-
# @param filters [Hash] Parameters to use
|
|
35
|
-
# @return [Integer] Results
|
|
36
|
-
# @example
|
|
37
|
-
# district = Clever::Districts.retrieve id
|
|
38
|
-
# num_schools_in_district = district.schools.count
|
|
39
|
-
def count(filters = {})
|
|
40
|
-
filters = @filters.merge filters
|
|
41
|
-
filters[:count] = true
|
|
42
|
-
response = Clever.request :get, @uri, filters, headers
|
|
43
|
-
response[:count]
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Query for the first element or n elements in the resource
|
|
47
|
-
# @api public
|
|
48
|
-
# @param num [nil, Integer] If nil, last elem; else, num elems to fetch
|
|
49
|
-
# @param filters [Hash] Filters to request with, as per Clever API spec
|
|
50
|
-
# @return [CleverObject, Clever::APIOperations::Page] elem, or
|
|
51
|
-
# elems found. If list, sorted in ascending order of ids.
|
|
52
|
-
# @example
|
|
53
|
-
# first_elem = Clever::District.first
|
|
54
|
-
# first_elems = Clever::District.first 20
|
|
55
|
-
# first_elems.each do |e|
|
|
56
|
-
# puts e.name
|
|
57
|
-
# end
|
|
58
|
-
def first(num = nil, filters = {})
|
|
59
|
-
filters = @filters.merge filters
|
|
60
|
-
if num.nil?
|
|
61
|
-
filters[:limit] = 1
|
|
62
|
-
response = Clever.request :get, url, filters, headers
|
|
63
|
-
Util.convert_to_clever_object response[:data].last
|
|
64
|
-
else
|
|
65
|
-
filters[:limit] = num
|
|
66
|
-
Clever::APIOperations::PageList.new(url, filters, headers).first
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
# Query for the last element or n elements in the resource
|
|
71
|
-
# @api public
|
|
72
|
-
# @param num [nil, Integer] If nil, last elem; else, num elems to fetch
|
|
73
|
-
# @return [CleverObject, Clever::APIOperations::ResultsList] elem, or
|
|
74
|
-
# elems found. If list, sorted in ascending order of ids.
|
|
75
|
-
# @example
|
|
76
|
-
# last_elem = Clever::District.last
|
|
77
|
-
# last_elems = Clever::District.last 20
|
|
78
|
-
# last_elems.each do |e|
|
|
79
|
-
# puts e.name
|
|
80
|
-
# end
|
|
81
|
-
def last(num = nil, filters = {})
|
|
82
|
-
filters = @filters.merge filters
|
|
83
|
-
filters[:ending_before] = 'last'
|
|
84
|
-
if num.nil?
|
|
85
|
-
filters[:limit] = 1
|
|
86
|
-
response = Clever.request :get, @uri, filters, headers
|
|
87
|
-
Util.convert_to_clever_object response[:data].last
|
|
88
|
-
else
|
|
89
|
-
filters[:limit] = num
|
|
90
|
-
Clever::APIOperations::PageList.new(@uri, filters, headers).to_results_list
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
end
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
module Clever
|
|
2
|
-
module APIOperations
|
|
3
|
-
# Represents a page of data
|
|
4
|
-
class Page
|
|
5
|
-
include Enumerable
|
|
6
|
-
|
|
7
|
-
# Request a page of data and store the results in this instance
|
|
8
|
-
# @api private
|
|
9
|
-
# @return [Clever::APIOperations::Page]
|
|
10
|
-
# @example
|
|
11
|
-
# page = Page.new '/v1.1/districts'
|
|
12
|
-
def initialize(uri, filters = {}, headers = {})
|
|
13
|
-
@uri = uri
|
|
14
|
-
@filters = filters
|
|
15
|
-
@headers = headers
|
|
16
|
-
|
|
17
|
-
response = Clever.request :get, uri, filters, @headers
|
|
18
|
-
|
|
19
|
-
@auth_token = @headers[:Authorization].split[1]
|
|
20
|
-
response[:data].map { |x| x[:data][:auth_token] = @auth_token }
|
|
21
|
-
|
|
22
|
-
@all = Util.convert_to_clever_object response[:data]
|
|
23
|
-
@links = {}
|
|
24
|
-
response[:links].each do |link|
|
|
25
|
-
@links[link[:rel].to_sym] = link[:uri]
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# Gets next page if one is present, nil otherwise
|
|
30
|
-
# @api private
|
|
31
|
-
# @return [Clever::APIOperations::Page, nil] Next page, or nil if last
|
|
32
|
-
# @example
|
|
33
|
-
# next_page = page.next
|
|
34
|
-
# unless next_page.nil?
|
|
35
|
-
# next_page.each do |elem| puts elem; end
|
|
36
|
-
def next
|
|
37
|
-
@links.key?(:next) ? Page.new(@links[:next], {}, @headers) : nil
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# Iterate over all elements in the page
|
|
41
|
-
# @api private
|
|
42
|
-
# @return [Array] List of all elements
|
|
43
|
-
# @example
|
|
44
|
-
# page.each { |elem| puts elem }
|
|
45
|
-
def each(&blk)
|
|
46
|
-
@all.each(&blk)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# Get all elements in page
|
|
50
|
-
# @api private
|
|
51
|
-
# @return [Array] List of all elements
|
|
52
|
-
# @example
|
|
53
|
-
# all_elems = page.all
|
|
54
|
-
attr_reader :all
|
|
55
|
-
|
|
56
|
-
# Retrieve the last element or n elements in the resource
|
|
57
|
-
# @api public
|
|
58
|
-
# @param num [nil, Integer] If nil, last elem; else, num elems to fetch
|
|
59
|
-
# @return [CleverObject, Clever::APIOperations::Page] elem, or
|
|
60
|
-
# elems found. If list, sorted in ascending order of ids.
|
|
61
|
-
# @example
|
|
62
|
-
# elems = Clever::District.first(20)
|
|
63
|
-
# last_elem = elems.last
|
|
64
|
-
# last_elems = elems.last 5
|
|
65
|
-
def last(num = nil)
|
|
66
|
-
return @all.last num if num
|
|
67
|
-
@all.last
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
module Clever
|
|
2
|
-
module APIOperations
|
|
3
|
-
# Handles paginated requests.
|
|
4
|
-
class PageList
|
|
5
|
-
include Enumerable
|
|
6
|
-
|
|
7
|
-
# Create a new PageList, without making any requests immediately
|
|
8
|
-
# @api private
|
|
9
|
-
# @return [PageList]
|
|
10
|
-
def initialize(uri, filters = {}, headers = {})
|
|
11
|
-
@uri = uri
|
|
12
|
-
@filters = filters
|
|
13
|
-
@headers = headers
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# Iterate through each page, making requests as you iterate
|
|
17
|
-
# @api private
|
|
18
|
-
# @return [nil]
|
|
19
|
-
# @example
|
|
20
|
-
# pagelist.each do |page|
|
|
21
|
-
# page.each do |elem|
|
|
22
|
-
# puts elem
|
|
23
|
-
# end
|
|
24
|
-
# end
|
|
25
|
-
def each
|
|
26
|
-
page = Page.new @uri, @filters, @headers
|
|
27
|
-
until page.nil?
|
|
28
|
-
yield page
|
|
29
|
-
page = page.next
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# Convert PageList into a ResultsList for easier iteration
|
|
34
|
-
# @api private
|
|
35
|
-
# @return [Clever::APIOperations::ResultsList]
|
|
36
|
-
# @example
|
|
37
|
-
# pagelist.to_results_list.each { |elem| puts elem }
|
|
38
|
-
def to_results_list
|
|
39
|
-
Clever::APIOperations::ResultsList.new self
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
module Clever
|
|
2
|
-
module APIOperations
|
|
3
|
-
# Represents a list of results for a paged request.
|
|
4
|
-
class ResultsList
|
|
5
|
-
include Enumerable
|
|
6
|
-
|
|
7
|
-
# Create a results list from a PageList
|
|
8
|
-
# @api private
|
|
9
|
-
# @return [ResultsList]
|
|
10
|
-
def initialize(pagelist)
|
|
11
|
-
@pages = pagelist
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# Iterate over results list
|
|
15
|
-
# @api public
|
|
16
|
-
# @return [nil]
|
|
17
|
-
# @example
|
|
18
|
-
# results = Clever::District.find # returns a ResultsList
|
|
19
|
-
# results.each do |district|
|
|
20
|
-
# puts district.name
|
|
21
|
-
# end
|
|
22
|
-
def each
|
|
23
|
-
@pages.each do |page|
|
|
24
|
-
page.each do |elem|
|
|
25
|
-
yield elem
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
module Clever
|
|
2
|
-
# Superclass of API resources in the Clever API. API objects are to be
|
|
3
|
-
# singular, not plural; as in class Student, for the /students endpoint.
|
|
4
|
-
class APIResource < CleverObject
|
|
5
|
-
@resources = []
|
|
6
|
-
|
|
7
|
-
class << self
|
|
8
|
-
# Get valid API resources
|
|
9
|
-
# @api private
|
|
10
|
-
# @return [Array] List of valid API resource classes
|
|
11
|
-
attr_reader :resources
|
|
12
|
-
|
|
13
|
-
# Get a list of nested resources in the Clever API for this resource
|
|
14
|
-
# @api private
|
|
15
|
-
# @return [Array] List of resources nested under this resource
|
|
16
|
-
attr_reader :linked_resources
|
|
17
|
-
|
|
18
|
-
# Get the plural form of a resource's name
|
|
19
|
-
#
|
|
20
|
-
# For instance, for class Student, returns "students"
|
|
21
|
-
# @api private
|
|
22
|
-
# @return [String] Plural name of a resource
|
|
23
|
-
attr_reader :plural
|
|
24
|
-
|
|
25
|
-
# Get the URI corresponding to a resource
|
|
26
|
-
#
|
|
27
|
-
# For instance, for class Student, urls start with /v1.1/students, so
|
|
28
|
-
# this returns "students"
|
|
29
|
-
# @api private
|
|
30
|
-
# @return [String] URI corresponding to a resource
|
|
31
|
-
attr_reader :uri
|
|
32
|
-
|
|
33
|
-
# Get the event name corresponding to a resource
|
|
34
|
-
#
|
|
35
|
-
# For some events, event type names have an inconsistent format with plurals and URIs.
|
|
36
|
-
# For example, SchoolAdmin events are "schooladmins"
|
|
37
|
-
# @api private
|
|
38
|
-
# @return [String] event type name of a resource
|
|
39
|
-
attr_reader :event_name
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
# Registers valid API resources
|
|
43
|
-
# @api private
|
|
44
|
-
# @return [Object]
|
|
45
|
-
def self.inherited(child_class)
|
|
46
|
-
@resources << child_class
|
|
47
|
-
super
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
# Check if the name of an APIResource is in its singular form
|
|
51
|
-
#
|
|
52
|
-
# For instance, the Student API resource can be referred to as
|
|
53
|
-
# "student" or "students"; this returns true on the former.
|
|
54
|
-
# @api private
|
|
55
|
-
# @param word [String] APIResource name to check
|
|
56
|
-
# @return [Boolean] False if plural, true if singular
|
|
57
|
-
def self.singular?(resource_name)
|
|
58
|
-
klass = named resource_name
|
|
59
|
-
unless klass
|
|
60
|
-
fail 'Clever::APIResource only supports checking singularity of words '\
|
|
61
|
-
'that refer to children of Clever::APIResource; received ' \
|
|
62
|
-
"'#{resource_name}'"
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
klass.plural != resource_name.downcase
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# Get a canonical name for a resource
|
|
69
|
-
# @api private
|
|
70
|
-
# @return [String]
|
|
71
|
-
def self.shortname
|
|
72
|
-
name.split('::')[-1].gsub(/([a-z\d])([A-Z])/, '\1_\2'.freeze).downcase
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
# Convert the uri of a resource to its APIResource subclass
|
|
76
|
-
# @api private
|
|
77
|
-
# @return [APIResource]
|
|
78
|
-
def self.named(name)
|
|
79
|
-
name = name.to_s.downcase
|
|
80
|
-
matching = resources.select do |res|
|
|
81
|
-
(name == res.shortname) || (name == res.plural) || (name == res.event_name)
|
|
82
|
-
end
|
|
83
|
-
return nil if matching.empty?
|
|
84
|
-
matching.first
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
# Get URL for a resource
|
|
88
|
-
# @api private
|
|
89
|
-
# @return [String] url to query for a resource
|
|
90
|
-
def self.url
|
|
91
|
-
if self == APIResource
|
|
92
|
-
fail NotImplementedError, 'APIResource is an abstract class. You should perform actions '\
|
|
93
|
-
'on its subclasses (School, Student, etc.)'
|
|
94
|
-
end
|
|
95
|
-
"v1.1/#{uri}"
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
# Get URL for an instance of a resource
|
|
99
|
-
# @api private
|
|
100
|
-
# @return [String] url to query for an instance of a resource
|
|
101
|
-
def url
|
|
102
|
-
id = self['id']
|
|
103
|
-
unless id
|
|
104
|
-
fail InvalidRequestError.new(
|
|
105
|
-
"Could not determine which URL to request: #{self.class} instance has " \
|
|
106
|
-
"invalid ID: #{id.inspect}", 'id')
|
|
107
|
-
end
|
|
108
|
-
"#{self.class.url}/#{CGI.escape id}"
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
# Request the current resource data and update this object
|
|
112
|
-
# @api private
|
|
113
|
-
# @return [APIResource] The updated resource instance
|
|
114
|
-
def refresh
|
|
115
|
-
response = Clever.request :get, url, nil, headers
|
|
116
|
-
refresh_from response[:data]
|
|
117
|
-
|
|
118
|
-
@links = response[:links].map do
|
|
119
|
-
|link| { :"#{link[:rel]}" => link[:uri] }
|
|
120
|
-
end.reduce({}, :merge)
|
|
121
|
-
self
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
# Get hypermedia links for this resource instance
|
|
125
|
-
# @api private
|
|
126
|
-
# @return [Array] list of links for this resource instance
|
|
127
|
-
attr_reader :links
|
|
128
|
-
|
|
129
|
-
# Get an instance of a resource
|
|
130
|
-
# @api public
|
|
131
|
-
# @param id [String] ID of the instance to find
|
|
132
|
-
# @return [APIResource] resource instance
|
|
133
|
-
# @example
|
|
134
|
-
# id = '...'
|
|
135
|
-
# district = Clever::District.retrieve id
|
|
136
|
-
def self.retrieve(id, auth_token = nil)
|
|
137
|
-
instance = new id, auth_token
|
|
138
|
-
instance.refresh
|
|
139
|
-
instance
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
# Get the URI for a hypermedia link
|
|
143
|
-
# @api private
|
|
144
|
-
# @return [String]
|
|
145
|
-
def get_link_uri(resource_type)
|
|
146
|
-
refresh if links.nil?
|
|
147
|
-
links[resource_type.to_sym]
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
# Construct an APIResource. Generates methods for nested resources
|
|
151
|
-
# @abstract
|
|
152
|
-
# @api private
|
|
153
|
-
# @return [APIResource]
|
|
154
|
-
def initialize(id, auth_token = nil)
|
|
155
|
-
super id, auth_token
|
|
156
|
-
return if self.class.linked_resources.nil?
|
|
157
|
-
|
|
158
|
-
self.class.linked_resources.each do |resource|
|
|
159
|
-
if APIResource.singular? resource.to_s
|
|
160
|
-
# Get single resource
|
|
161
|
-
self.class.send :define_method, resource do
|
|
162
|
-
response = Clever.request :get, get_link_uri(resource), {}, headers
|
|
163
|
-
return Util.convert_to_clever_object response
|
|
164
|
-
end
|
|
165
|
-
else
|
|
166
|
-
# Get list of nested resources
|
|
167
|
-
self.class.send :define_method, resource do |filters = {}|
|
|
168
|
-
Clever::NestedResource.new get_link_uri(resource), filters, headers
|
|
169
|
-
end
|
|
170
|
-
end
|
|
171
|
-
end
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
end
|