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
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Clever::StudentcontactsDeleted
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
Name | Type | Description | Notes
|
|
5
|
+
------------ | ------------- | ------------- | -------------
|
|
6
|
+
**type** | **String** | |
|
|
7
|
+
**id** | **String** | | [optional]
|
|
8
|
+
**data** | [**StudentContactObject**](StudentContactObject.md) | | [optional]
|
|
9
|
+
|
|
10
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Clever::StudentcontactsUpdated
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
Name | Type | Description | Notes
|
|
5
|
+
------------ | ------------- | ------------- | -------------
|
|
6
|
+
**type** | **String** | |
|
|
7
|
+
**id** | **String** | | [optional]
|
|
8
|
+
**data** | [**StudentContactObject**](StudentContactObject.md) | | [optional]
|
|
9
|
+
|
|
10
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Clever::StudentsCreated
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
Name | Type | Description | Notes
|
|
5
|
+
------------ | ------------- | ------------- | -------------
|
|
6
|
+
**type** | **String** | |
|
|
7
|
+
**id** | **String** | | [optional]
|
|
8
|
+
**data** | [**StudentObject**](StudentObject.md) | | [optional]
|
|
9
|
+
|
|
10
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Clever::StudentsDeleted
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
Name | Type | Description | Notes
|
|
5
|
+
------------ | ------------- | ------------- | -------------
|
|
6
|
+
**type** | **String** | |
|
|
7
|
+
**id** | **String** | | [optional]
|
|
8
|
+
**data** | [**StudentObject**](StudentObject.md) | | [optional]
|
|
9
|
+
|
|
10
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Clever::StudentsUpdated
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
Name | Type | Description | Notes
|
|
5
|
+
------------ | ------------- | ------------- | -------------
|
|
6
|
+
**type** | **String** | |
|
|
7
|
+
**id** | **String** | | [optional]
|
|
8
|
+
**data** | [**StudentObject**](StudentObject.md) | | [optional]
|
|
9
|
+
|
|
10
|
+
|
data/docs/Teacher.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Clever::Teacher
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
Name | Type | Description | Notes
|
|
5
|
+
------------ | ------------- | ------------- | -------------
|
|
6
|
+
**id** | **String** | | [optional]
|
|
7
|
+
**created** | **String** | | [optional]
|
|
8
|
+
**district** | **String** | | [optional]
|
|
9
|
+
**email** | **String** | | [optional]
|
|
10
|
+
**last_modified** | **String** | | [optional]
|
|
11
|
+
**name** | [**Name**](Name.md) | | [optional]
|
|
12
|
+
**school** | **String** | | [optional]
|
|
13
|
+
**schools** | **Array<String>** | | [optional]
|
|
14
|
+
**sis_id** | **String** | | [optional]
|
|
15
|
+
**state_id** | **String** | | [optional]
|
|
16
|
+
**teacher_number** | **String** | | [optional]
|
|
17
|
+
**title** | **String** | | [optional]
|
|
18
|
+
|
|
19
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Clever::TeachersCreated
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
Name | Type | Description | Notes
|
|
5
|
+
------------ | ------------- | ------------- | -------------
|
|
6
|
+
**type** | **String** | |
|
|
7
|
+
**id** | **String** | | [optional]
|
|
8
|
+
**data** | [**TeacherObject**](TeacherObject.md) | | [optional]
|
|
9
|
+
|
|
10
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Clever::TeachersDeleted
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
Name | Type | Description | Notes
|
|
5
|
+
------------ | ------------- | ------------- | -------------
|
|
6
|
+
**type** | **String** | |
|
|
7
|
+
**id** | **String** | | [optional]
|
|
8
|
+
**data** | [**TeacherObject**](TeacherObject.md) | | [optional]
|
|
9
|
+
|
|
10
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Clever::TeachersUpdated
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
Name | Type | Description | Notes
|
|
5
|
+
------------ | ------------- | ------------- | -------------
|
|
6
|
+
**type** | **String** | |
|
|
7
|
+
**id** | **String** | | [optional]
|
|
8
|
+
**data** | [**TeacherObject**](TeacherObject.md) | | [optional]
|
|
9
|
+
|
|
10
|
+
|
data/docs/Term.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Clever::Term
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
Name | Type | Description | Notes
|
|
5
|
+
------------ | ------------- | ------------- | -------------
|
|
6
|
+
**name** | **String** | | [optional]
|
|
7
|
+
**start_date** | **String** | | [optional]
|
|
8
|
+
**end_date** | **String** | | [optional]
|
|
9
|
+
|
|
10
|
+
|
data/git_push.sh
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
#
|
|
3
|
+
# Generated by: https://github.com/swagger-api/swagger-codegen.git
|
|
4
|
+
#
|
|
5
|
+
# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
|
|
6
|
+
#
|
|
7
|
+
# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update"
|
|
8
|
+
|
|
9
|
+
git_user_id=$1
|
|
10
|
+
git_repo_id=$2
|
|
11
|
+
release_note=$3
|
|
12
|
+
|
|
13
|
+
if [ "$git_user_id" = "" ]; then
|
|
14
|
+
git_user_id="GIT_USER_ID"
|
|
15
|
+
echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
if [ "$git_repo_id" = "" ]; then
|
|
19
|
+
git_repo_id="GIT_REPO_ID"
|
|
20
|
+
echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
if [ "$release_note" = "" ]; then
|
|
24
|
+
release_note="Minor update"
|
|
25
|
+
echo "[INFO] No command line input provided. Set \$release_note to $release_note"
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# Initialize the local directory as a Git repository
|
|
29
|
+
git init
|
|
30
|
+
|
|
31
|
+
# Adds the files in the local repository and stages them for commit.
|
|
32
|
+
git add .
|
|
33
|
+
|
|
34
|
+
# Commits the tracked changes and prepares them to be pushed to a remote repository.
|
|
35
|
+
git commit -m "$release_note"
|
|
36
|
+
|
|
37
|
+
# Sets the new remote
|
|
38
|
+
git_remote=`git remote`
|
|
39
|
+
if [ "$git_remote" = "" ]; then # git remote not defined
|
|
40
|
+
|
|
41
|
+
if [ "$GIT_TOKEN" = "" ]; then
|
|
42
|
+
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git crediential in your environment."
|
|
43
|
+
git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
|
|
44
|
+
else
|
|
45
|
+
git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
git pull origin master
|
|
51
|
+
|
|
52
|
+
# Pushes (Forces) the changes in the local repository up to the remote repository
|
|
53
|
+
echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git"
|
|
54
|
+
git push origin master 2>&1 | grep -v 'To https'
|
|
55
|
+
|
data/instructions.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
## Updating the Library
|
|
2
|
+
|
|
3
|
+
1. Git clone swagger-codegen (https://github.com/swagger-api/swagger-codegen)
|
|
4
|
+
|
|
5
|
+
2. Git clone Clever's swagger-api repo (https://github.com/Clever/swagger-api)
|
|
6
|
+
|
|
7
|
+
3. Run this command in the swagger-codegen repo
|
|
8
|
+
```
|
|
9
|
+
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate -i $PATH_TO_SWAGGER_API_REPO/v1.2-client.yml -c $PATH_TO_THIS_REPO/override/config.json -l ruby -o $PATH_TO_THIS_REPO
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
4. Run `make build` to copy over the override files
|
data/lib/clever-ruby.rb
CHANGED
|
@@ -1,334 +1,105 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require 'multi_json'
|
|
4
|
-
require 'open-uri'
|
|
5
|
-
require 'set'
|
|
6
|
-
require 'uri'
|
|
7
|
-
require 'cgi'
|
|
8
|
-
require 'json'
|
|
1
|
+
=begin
|
|
2
|
+
#Clever API
|
|
9
3
|
|
|
10
|
-
|
|
4
|
+
#The Clever API
|
|
11
5
|
|
|
12
|
-
|
|
13
|
-
require 'clever-ruby/api_operations/list'
|
|
14
|
-
require 'clever-ruby/api_operations/nested_list'
|
|
15
|
-
require 'clever-ruby/api_operations/pagelist'
|
|
16
|
-
require 'clever-ruby/api_operations/results_list'
|
|
17
|
-
require 'clever-ruby/api_operations/page'
|
|
6
|
+
OpenAPI spec version: 1.2.0
|
|
18
7
|
|
|
19
|
-
|
|
20
|
-
require 'clever-ruby/util'
|
|
21
|
-
require 'clever-ruby/json'
|
|
22
|
-
require 'clever-ruby/configuration'
|
|
8
|
+
Generated by: https://github.com/swagger-api/swagger-codegen.git
|
|
23
9
|
|
|
24
|
-
|
|
25
|
-
require 'clever-ruby/clever_object'
|
|
26
|
-
require 'clever-ruby/api_resource'
|
|
27
|
-
require 'clever-ruby/nested_resource'
|
|
28
|
-
require 'clever-ruby/district'
|
|
29
|
-
require 'clever-ruby/school'
|
|
30
|
-
require 'clever-ruby/student'
|
|
31
|
-
require 'clever-ruby/section'
|
|
32
|
-
require 'clever-ruby/teacher'
|
|
33
|
-
require 'clever-ruby/event'
|
|
34
|
-
require 'clever-ruby/school_admin'
|
|
35
|
-
require 'clever-ruby/district_admin'
|
|
10
|
+
=end
|
|
36
11
|
|
|
37
|
-
#
|
|
38
|
-
require 'clever-ruby/
|
|
12
|
+
# Common files
|
|
13
|
+
require 'clever-ruby/api_client'
|
|
14
|
+
require 'clever-ruby/api_error'
|
|
15
|
+
require 'clever-ruby/version'
|
|
16
|
+
require 'clever-ruby/configuration'
|
|
39
17
|
|
|
40
|
-
|
|
41
|
-
require 'clever-ruby/
|
|
42
|
-
require 'clever-ruby/
|
|
43
|
-
require 'clever-ruby/
|
|
18
|
+
# Models
|
|
19
|
+
require 'clever-ruby/models/bad_request'
|
|
20
|
+
require 'clever-ruby/models/district'
|
|
21
|
+
require 'clever-ruby/models/district_admin'
|
|
22
|
+
require 'clever-ruby/models/district_admin_response'
|
|
23
|
+
require 'clever-ruby/models/district_admins_response'
|
|
24
|
+
require 'clever-ruby/models/district_object'
|
|
25
|
+
require 'clever-ruby/models/district_response'
|
|
26
|
+
require 'clever-ruby/models/district_status'
|
|
27
|
+
require 'clever-ruby/models/district_status_response'
|
|
28
|
+
require 'clever-ruby/models/districts_created'
|
|
29
|
+
require 'clever-ruby/models/districts_deleted'
|
|
30
|
+
require 'clever-ruby/models/districts_response'
|
|
31
|
+
require 'clever-ruby/models/districts_updated'
|
|
32
|
+
require 'clever-ruby/models/event'
|
|
33
|
+
require 'clever-ruby/models/event_response'
|
|
34
|
+
require 'clever-ruby/models/events_response'
|
|
35
|
+
require 'clever-ruby/models/grade_levels_response'
|
|
36
|
+
require 'clever-ruby/models/internal_error'
|
|
37
|
+
require 'clever-ruby/models/location'
|
|
38
|
+
require 'clever-ruby/models/name'
|
|
39
|
+
require 'clever-ruby/models/not_found'
|
|
40
|
+
require 'clever-ruby/models/principal'
|
|
41
|
+
require 'clever-ruby/models/school'
|
|
42
|
+
require 'clever-ruby/models/school_admin'
|
|
43
|
+
require 'clever-ruby/models/school_admin_object'
|
|
44
|
+
require 'clever-ruby/models/school_admin_response'
|
|
45
|
+
require 'clever-ruby/models/school_admins_response'
|
|
46
|
+
require 'clever-ruby/models/school_object'
|
|
47
|
+
require 'clever-ruby/models/school_response'
|
|
48
|
+
require 'clever-ruby/models/schooladmins_created'
|
|
49
|
+
require 'clever-ruby/models/schooladmins_deleted'
|
|
50
|
+
require 'clever-ruby/models/schooladmins_updated'
|
|
51
|
+
require 'clever-ruby/models/schools_created'
|
|
52
|
+
require 'clever-ruby/models/schools_deleted'
|
|
53
|
+
require 'clever-ruby/models/schools_response'
|
|
54
|
+
require 'clever-ruby/models/schools_updated'
|
|
55
|
+
require 'clever-ruby/models/section'
|
|
56
|
+
require 'clever-ruby/models/section_object'
|
|
57
|
+
require 'clever-ruby/models/section_response'
|
|
58
|
+
require 'clever-ruby/models/sections_created'
|
|
59
|
+
require 'clever-ruby/models/sections_deleted'
|
|
60
|
+
require 'clever-ruby/models/sections_response'
|
|
61
|
+
require 'clever-ruby/models/sections_updated'
|
|
62
|
+
require 'clever-ruby/models/student'
|
|
63
|
+
require 'clever-ruby/models/student_contact'
|
|
64
|
+
require 'clever-ruby/models/student_contact_object'
|
|
65
|
+
require 'clever-ruby/models/student_contact_response'
|
|
66
|
+
require 'clever-ruby/models/student_contacts_response'
|
|
67
|
+
require 'clever-ruby/models/student_object'
|
|
68
|
+
require 'clever-ruby/models/student_response'
|
|
69
|
+
require 'clever-ruby/models/studentcontacts_created'
|
|
70
|
+
require 'clever-ruby/models/studentcontacts_deleted'
|
|
71
|
+
require 'clever-ruby/models/studentcontacts_updated'
|
|
72
|
+
require 'clever-ruby/models/students_created'
|
|
73
|
+
require 'clever-ruby/models/students_deleted'
|
|
74
|
+
require 'clever-ruby/models/students_response'
|
|
75
|
+
require 'clever-ruby/models/students_updated'
|
|
76
|
+
require 'clever-ruby/models/teacher'
|
|
77
|
+
require 'clever-ruby/models/teacher_object'
|
|
78
|
+
require 'clever-ruby/models/teacher_response'
|
|
79
|
+
require 'clever-ruby/models/teachers_created'
|
|
80
|
+
require 'clever-ruby/models/teachers_deleted'
|
|
81
|
+
require 'clever-ruby/models/teachers_response'
|
|
82
|
+
require 'clever-ruby/models/teachers_updated'
|
|
83
|
+
require 'clever-ruby/models/term'
|
|
84
|
+
|
|
85
|
+
# APIs
|
|
86
|
+
require 'clever-ruby/api/data_api'
|
|
87
|
+
require 'clever-ruby/api/events_api'
|
|
44
88
|
|
|
45
|
-
# Clever Ruby library
|
|
46
89
|
module Clever
|
|
47
90
|
class << self
|
|
48
|
-
#
|
|
49
|
-
# @api public
|
|
50
|
-
# @example Configure your API key
|
|
91
|
+
# Customize default settings for the SDK using block.
|
|
51
92
|
# Clever.configure do |config|
|
|
52
|
-
# config.
|
|
93
|
+
# config.username = "xxx"
|
|
94
|
+
# config.password = "xxx"
|
|
53
95
|
# end
|
|
54
|
-
#
|
|
96
|
+
# If no block given, return the default Configuration object.
|
|
55
97
|
def configure
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
# @api private
|
|
61
|
-
# @return [String] API key
|
|
62
|
-
def api_key
|
|
63
|
-
configuration.api_key
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Retrieve the configured timeout
|
|
67
|
-
# @api private
|
|
68
|
-
# @return [Fixnum] Configuration timeout
|
|
69
|
-
def timeout
|
|
70
|
-
configuration.timeout
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
# Retrieve the configured open timeout
|
|
74
|
-
# @api private
|
|
75
|
-
# @return [Fixnum] Open timeout
|
|
76
|
-
def open_timeout
|
|
77
|
-
configuration.open_timeout
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
# Retrieve your stored API token
|
|
81
|
-
# @api private
|
|
82
|
-
# @return [String] API token
|
|
83
|
-
def token
|
|
84
|
-
configuration.token
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
# Retrieve the global Clever configuration object
|
|
88
|
-
# @api private
|
|
89
|
-
# @return [Hash] API configuration object
|
|
90
|
-
def configuration
|
|
91
|
-
@configuration ||= Clever::Configuration.new
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
# Retrieve the URL of the Clever API being used
|
|
95
|
-
# @api private
|
|
96
|
-
# @return [String] API url
|
|
97
|
-
def api_url(url = '')
|
|
98
|
-
configuration.api_base + url
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
# Convert a hash of params to a query string. Does not prepend the leading '?'
|
|
103
|
-
# @api private
|
|
104
|
-
# @param params [Hash] Parameters to stringify
|
|
105
|
-
# @return [String] Query string
|
|
106
|
-
def self.convert_to_query_string(params = nil)
|
|
107
|
-
if params && params.count
|
|
108
|
-
params_arr = Util.flatten_params(params).map do |p|
|
|
109
|
-
"#{URI.encode(p[0].to_s)}=#{URI.encode(p[1].to_s)}"
|
|
110
|
-
end
|
|
111
|
-
params_arr.join('&')
|
|
112
|
-
else
|
|
113
|
-
''
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
# Generate the URL and payload for a request based on data about the request
|
|
118
|
-
# @api private
|
|
119
|
-
# @param method [Symbol] HTTP method used
|
|
120
|
-
# @param url [String] URL to send to
|
|
121
|
-
# @param params [Hash] Parameters to send
|
|
122
|
-
# @return [String, String] URL and payload to send via HTTP
|
|
123
|
-
def self.create_payload(method, url, params)
|
|
124
|
-
case method.to_s.downcase.to_sym
|
|
125
|
-
when :get, :head, :delete
|
|
126
|
-
url_obj = URI.parse(url)
|
|
127
|
-
if url_obj.query
|
|
128
|
-
params = CGI.parse(url_obj.query).map { |k, v| { k => v[0] } }.reduce(:merge).merge params
|
|
129
|
-
end
|
|
130
|
-
url_obj.query = convert_to_query_string params
|
|
131
|
-
url = url_obj.to_s
|
|
132
|
-
payload = nil
|
|
133
|
-
else
|
|
134
|
-
payload = params
|
|
135
|
-
end
|
|
136
|
-
[url, payload]
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
# Headers hash for user-agent tracking
|
|
140
|
-
# @api private
|
|
141
|
-
# @return [Hash] headers to add to request
|
|
142
|
-
def self.tracking_headers
|
|
143
|
-
{
|
|
144
|
-
bindings_version: Clever::VERSION,
|
|
145
|
-
lang: 'ruby',
|
|
146
|
-
lang_version: RUBY_VERSION.to_s + ' p' + RUBY_PATCHLEVEL.to_s,
|
|
147
|
-
platform: RUBY_PLATFORM.to_s,
|
|
148
|
-
publisher: 'clever',
|
|
149
|
-
uname: uname
|
|
150
|
-
}
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
# Retrieves system's uname
|
|
154
|
-
# @api private
|
|
155
|
-
# @return [String] uname with the system's uname
|
|
156
|
-
def self.uname
|
|
157
|
-
`uname -a 2>/dev/null`.strip if RUBY_PLATFORM =~ /linux|darwin/i
|
|
158
|
-
rescue SystemCallError
|
|
159
|
-
'cannot get uname'
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
# Create options hash that specifies an HTTP request from request data
|
|
163
|
-
# @api private
|
|
164
|
-
# @return [Hash] parameters for executing a request
|
|
165
|
-
def self.create_request_opts(method, url, params, headers)
|
|
166
|
-
params = Util.objects_to_ids params
|
|
167
|
-
url = api_url url
|
|
168
|
-
url, payload = create_payload method, url, params
|
|
169
|
-
|
|
170
|
-
headers[:Authorization] = 'Bearer ' + Clever.token if Clever.token
|
|
171
|
-
headers[:user_agent] = 'Clever/RubyBindings/' + Clever::VERSION
|
|
172
|
-
headers[:x_clever_client_user_agent] = tracking_headers.to_json
|
|
173
|
-
|
|
174
|
-
opts = {
|
|
175
|
-
method: method,
|
|
176
|
-
url: url,
|
|
177
|
-
headers: headers,
|
|
178
|
-
open_timeout: Clever.open_timeout,
|
|
179
|
-
payload: payload,
|
|
180
|
-
timeout: Clever.timeout
|
|
181
|
-
}
|
|
182
|
-
if Clever.api_key
|
|
183
|
-
opts[:user] = Clever.api_key
|
|
184
|
-
opts[:password] = ''
|
|
185
|
-
end
|
|
186
|
-
opts
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
# Confirm API key or token are globally configured
|
|
190
|
-
# @api private
|
|
191
|
-
# @return [nil]
|
|
192
|
-
# @raise [AuthenticationError] Error if no authentication present
|
|
193
|
-
def self.check_authorization(headers)
|
|
194
|
-
unless Clever.api_key || Clever.token || headers.key?(:Authorization)
|
|
195
|
-
fail AuthenticationError, 'No API key provided. (HINT: set your API key using '\
|
|
196
|
-
'"Clever.configure { |config| config.api_key = <API-KEY> }" or your token using '\
|
|
197
|
-
'"Clever.configure { |config| config.token = <TOKEN> }" '\
|
|
198
|
-
'or pass the district token as a second argument to retrieve)'
|
|
199
|
-
end
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
# Send an HTTP request to the Clever API
|
|
203
|
-
# @api private
|
|
204
|
-
# @param method [Symbol] HTTP method used
|
|
205
|
-
# @param url [String] URL to send to
|
|
206
|
-
# @param params [Hash] parameters to send with the request
|
|
207
|
-
# @param headers [Hash] headers to send with the request
|
|
208
|
-
# @return [Hash] parsed JSON response
|
|
209
|
-
# @raise [APIError] Error if API fails to return valid JSON
|
|
210
|
-
def self.request(method, url, params = nil, headers = {})
|
|
211
|
-
check_authorization(headers)
|
|
212
|
-
opts = create_request_opts method, url, params, headers
|
|
213
|
-
response = execute_request opts
|
|
214
|
-
|
|
215
|
-
rbody = response.body
|
|
216
|
-
rcode = response.code
|
|
217
|
-
begin
|
|
218
|
-
resp = Clever::JSON.load rbody
|
|
219
|
-
rescue MultiJson::DecodeError
|
|
220
|
-
raise APIError.new(
|
|
221
|
-
"Invalid response object from API: #{rbody.inspect} (HTTP response code was #{rcode})",
|
|
222
|
-
rcode, rbody)
|
|
223
|
-
end
|
|
224
|
-
|
|
225
|
-
resp
|
|
226
|
-
end
|
|
227
|
-
|
|
228
|
-
private
|
|
229
|
-
|
|
230
|
-
# Execute an HTTP request safely
|
|
231
|
-
# @api private
|
|
232
|
-
# @param opts [Hash] Definition of the request to make
|
|
233
|
-
# @return [String] Request results
|
|
234
|
-
# @raise [APIConnectionError] Request failure
|
|
235
|
-
def self.execute_request(opts)
|
|
236
|
-
begin
|
|
237
|
-
request = RestClient::Request.execute opts
|
|
238
|
-
rescue SocketError => e
|
|
239
|
-
handle_restclient_error e
|
|
240
|
-
rescue NoMethodError => e
|
|
241
|
-
# TODO: investigate
|
|
242
|
-
# Work around RestClient bug
|
|
243
|
-
if e.message =~ /\WRequestFailed\W/
|
|
244
|
-
handle_restclient_error APIConnectionError.new 'Unexpected HTTP response code'
|
|
245
|
-
else raise
|
|
98
|
+
if block_given?
|
|
99
|
+
yield(Configuration.default)
|
|
100
|
+
else
|
|
101
|
+
Configuration.default
|
|
246
102
|
end
|
|
247
|
-
rescue RestClient::ExceptionWithResponse => e
|
|
248
|
-
rcode = e.http_code
|
|
249
|
-
rbody = e.http_body
|
|
250
|
-
if rcode && rbody
|
|
251
|
-
handle_api_error rcode, rbody
|
|
252
|
-
else handle_restclient_error e
|
|
253
|
-
end
|
|
254
|
-
rescue RestClient::Exception, Errno::ECONNREFUSED => e
|
|
255
|
-
handle_restclient_error e
|
|
256
103
|
end
|
|
257
|
-
|
|
258
|
-
request
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
# Translate errors thrown by RestClient into standardized APIConnectionErrors
|
|
262
|
-
# @api private
|
|
263
|
-
# @param e [Error] Error to handle
|
|
264
|
-
# @return [nil]
|
|
265
|
-
# @raise [APIConnectionError] Standardized error for request failures
|
|
266
|
-
def self.handle_restclient_error(e)
|
|
267
|
-
case e
|
|
268
|
-
when RestClient::ServerBrokeConnection, RestClient::RequestTimeout
|
|
269
|
-
message = "Could not connect to Clever (#{configuration.api_base}). " \
|
|
270
|
-
'Please check your internet connection and try again.'
|
|
271
|
-
when SocketError
|
|
272
|
-
message = 'Unexpected error communicating when trying to connect to Clever. HINT: ' \
|
|
273
|
-
'You may be seeing this message because your DNS is not working. To check, try running ' \
|
|
274
|
-
"'host api.clever.com' from the command line."
|
|
275
|
-
else
|
|
276
|
-
message = 'Unexpected error communicating with Clever.'
|
|
277
|
-
end
|
|
278
|
-
message += "\n\n(Network error: #{e.message})"
|
|
279
|
-
fail APIConnectionError, message
|
|
280
|
-
end
|
|
281
|
-
|
|
282
|
-
# Translate errors returned as JSON by the Clever API into CleverErrors
|
|
283
|
-
# @api private
|
|
284
|
-
# @param rcode [Integer] response code
|
|
285
|
-
# @param rbody [String] response body
|
|
286
|
-
# @return [nil]
|
|
287
|
-
# @raise [CleverError] Clever error corresponding to the failure observed
|
|
288
|
-
def self.handle_api_error(rcode, rbody)
|
|
289
|
-
begin
|
|
290
|
-
error_obj = Clever::JSON.load rbody
|
|
291
|
-
error = error_obj[:error]
|
|
292
|
-
fail CleverError unless error # escape from parsing
|
|
293
|
-
rescue MultiJson::DecodeError, CleverError
|
|
294
|
-
raise APIError.new(
|
|
295
|
-
"Invalid response object from API: #{rbody.inspect} (HTTP response code was #{rcode})",
|
|
296
|
-
rcode, rbody)
|
|
297
|
-
end
|
|
298
|
-
|
|
299
|
-
case rcode
|
|
300
|
-
when 400, 404 then
|
|
301
|
-
fail invalid_request_error error, rcode, rbody, error_obj
|
|
302
|
-
when 401
|
|
303
|
-
fail authentication_error error, rcode, rbody, error_obj
|
|
304
|
-
else
|
|
305
|
-
fail api_error error, rcode, rbody, error_obj
|
|
306
|
-
end
|
|
307
|
-
end
|
|
308
|
-
|
|
309
|
-
# Generate an InvalidRequestError
|
|
310
|
-
# @api private
|
|
311
|
-
# @return [InvalidRequestError]
|
|
312
|
-
def self.invalid_request_error(error, rcode, rbody, error_obj)
|
|
313
|
-
if error.is_a? Hash
|
|
314
|
-
InvalidRequestError.new error[:message], error[:param], rcode, rbody, error_obj
|
|
315
|
-
else
|
|
316
|
-
InvalidRequestError.new error, '', rcode, rbody, error_obj
|
|
317
|
-
end
|
|
318
|
-
end
|
|
319
|
-
|
|
320
|
-
# Generate an AuthenticationError
|
|
321
|
-
# @api private
|
|
322
|
-
# @return [AuthenticationError]
|
|
323
|
-
def self.authentication_error(error, rcode, rbody, error_obj)
|
|
324
|
-
AuthenticationError.new(error, rcode, rbody, error_obj)
|
|
325
|
-
end
|
|
326
|
-
|
|
327
|
-
# Generate an APIError
|
|
328
|
-
# @api private
|
|
329
|
-
# @return [APIError]
|
|
330
|
-
def self.api_error(error, rcode, rbody, error_obj)
|
|
331
|
-
error_msg = error.is_a?(Hash) ? error[:message] : error
|
|
332
|
-
APIError.new(error_msg, rcode, rbody, error_obj)
|
|
333
104
|
end
|
|
334
105
|
end
|