clever-ruby 0.14.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (297) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/Gemfile +4 -1
  4. data/Makefile +10 -0
  5. data/README.md +175 -68
  6. data/Rakefile +6 -36
  7. data/circle.yml +1 -1
  8. data/clever-ruby.gemspec +43 -33
  9. data/docs/BadRequest.md +8 -0
  10. data/docs/DataApi.md +2144 -0
  11. data/docs/District.md +10 -0
  12. data/docs/DistrictAdmin.md +12 -0
  13. data/docs/DistrictAdminResponse.md +8 -0
  14. data/docs/DistrictAdminsResponse.md +8 -0
  15. data/docs/DistrictObject.md +8 -0
  16. data/docs/DistrictResponse.md +8 -0
  17. data/docs/DistrictStatus.md +15 -0
  18. data/docs/DistrictStatusResponse.md +8 -0
  19. data/docs/DistrictsCreated.md +10 -0
  20. data/docs/DistrictsDeleted.md +10 -0
  21. data/docs/DistrictsResponse.md +8 -0
  22. data/docs/DistrictsUpdated.md +10 -0
  23. data/docs/Event.md +9 -0
  24. data/docs/EventResponse.md +8 -0
  25. data/docs/EventsApi.md +424 -0
  26. data/docs/EventsResponse.md +8 -0
  27. data/docs/GradeLevelsResponse.md +8 -0
  28. data/docs/InternalError.md +8 -0
  29. data/docs/Location.md +13 -0
  30. data/docs/Name.md +10 -0
  31. data/docs/NotFound.md +8 -0
  32. data/docs/Principal.md +9 -0
  33. data/docs/School.md +22 -0
  34. data/docs/SchoolAdmin.md +14 -0
  35. data/docs/SchoolAdminObject.md +8 -0
  36. data/docs/SchoolAdminResponse.md +8 -0
  37. data/docs/SchoolAdminsResponse.md +8 -0
  38. data/docs/SchoolObject.md +8 -0
  39. data/docs/SchoolResponse.md +8 -0
  40. data/docs/SchooladminsCreated.md +10 -0
  41. data/docs/SchooladminsDeleted.md +10 -0
  42. data/docs/SchooladminsUpdated.md +10 -0
  43. data/docs/SchoolsCreated.md +10 -0
  44. data/docs/SchoolsDeleted.md +10 -0
  45. data/docs/SchoolsResponse.md +8 -0
  46. data/docs/SchoolsUpdated.md +10 -0
  47. data/docs/Section.md +25 -0
  48. data/docs/SectionObject.md +8 -0
  49. data/docs/SectionResponse.md +8 -0
  50. data/docs/SectionsCreated.md +10 -0
  51. data/docs/SectionsDeleted.md +10 -0
  52. data/docs/SectionsResponse.md +8 -0
  53. data/docs/SectionsUpdated.md +10 -0
  54. data/docs/Student.md +27 -0
  55. data/docs/StudentContact.md +16 -0
  56. data/docs/StudentContactObject.md +8 -0
  57. data/docs/StudentContactResponse.md +8 -0
  58. data/docs/StudentContactsResponse.md +8 -0
  59. data/docs/StudentObject.md +8 -0
  60. data/docs/StudentResponse.md +8 -0
  61. data/docs/StudentcontactsCreated.md +10 -0
  62. data/docs/StudentcontactsDeleted.md +10 -0
  63. data/docs/StudentcontactsUpdated.md +10 -0
  64. data/docs/StudentsCreated.md +10 -0
  65. data/docs/StudentsDeleted.md +10 -0
  66. data/docs/StudentsResponse.md +8 -0
  67. data/docs/StudentsUpdated.md +10 -0
  68. data/docs/Teacher.md +19 -0
  69. data/docs/TeacherObject.md +8 -0
  70. data/docs/TeacherResponse.md +8 -0
  71. data/docs/TeachersCreated.md +10 -0
  72. data/docs/TeachersDeleted.md +10 -0
  73. data/docs/TeachersResponse.md +8 -0
  74. data/docs/TeachersUpdated.md +10 -0
  75. data/docs/Term.md +10 -0
  76. data/git_push.sh +55 -0
  77. data/instructions.md +12 -0
  78. data/lib/clever-ruby.rb +89 -318
  79. data/lib/clever-ruby/api/data_api.rb +2090 -0
  80. data/lib/clever-ruby/api/events_api.rb +429 -0
  81. data/lib/clever-ruby/api_client.rb +401 -0
  82. data/lib/clever-ruby/api_error.rb +37 -0
  83. data/lib/clever-ruby/configuration.rb +187 -25
  84. data/lib/clever-ruby/models/bad_request.rb +187 -0
  85. data/lib/clever-ruby/models/district.rb +205 -0
  86. data/lib/clever-ruby/models/district_admin.rb +223 -0
  87. data/lib/clever-ruby/models/district_admin_response.rb +187 -0
  88. data/lib/clever-ruby/models/district_admins_response.rb +189 -0
  89. data/lib/clever-ruby/models/district_object.rb +187 -0
  90. data/lib/clever-ruby/models/district_response.rb +187 -0
  91. data/lib/clever-ruby/models/district_status.rb +250 -0
  92. data/lib/clever-ruby/models/district_status_response.rb +187 -0
  93. data/lib/clever-ruby/models/districts_created.rb +206 -0
  94. data/lib/clever-ruby/models/districts_deleted.rb +207 -0
  95. data/lib/clever-ruby/models/districts_response.rb +189 -0
  96. data/lib/clever-ruby/models/districts_updated.rb +207 -0
  97. data/lib/clever-ruby/models/event.rb +201 -0
  98. data/lib/clever-ruby/models/event_response.rb +187 -0
  99. data/lib/clever-ruby/models/events_response.rb +189 -0
  100. data/lib/clever-ruby/models/grade_levels_response.rb +189 -0
  101. data/lib/clever-ruby/models/internal_error.rb +187 -0
  102. data/lib/clever-ruby/models/location.rb +232 -0
  103. data/lib/clever-ruby/models/name.rb +205 -0
  104. data/lib/clever-ruby/models/not_found.rb +187 -0
  105. data/lib/clever-ruby/models/principal.rb +196 -0
  106. data/lib/clever-ruby/models/school.rb +313 -0
  107. data/lib/clever-ruby/models/school_admin.rb +243 -0
  108. data/lib/clever-ruby/models/school_admin_object.rb +187 -0
  109. data/lib/clever-ruby/models/school_admin_response.rb +187 -0
  110. data/lib/clever-ruby/models/school_admins_response.rb +189 -0
  111. data/lib/clever-ruby/models/school_object.rb +187 -0
  112. data/lib/clever-ruby/models/school_response.rb +187 -0
  113. data/lib/clever-ruby/models/schooladmins_created.rb +207 -0
  114. data/lib/clever-ruby/models/schooladmins_deleted.rb +207 -0
  115. data/lib/clever-ruby/models/schooladmins_updated.rb +207 -0
  116. data/lib/clever-ruby/models/schools_created.rb +207 -0
  117. data/lib/clever-ruby/models/schools_deleted.rb +207 -0
  118. data/lib/clever-ruby/models/schools_response.rb +189 -0
  119. data/lib/clever-ruby/models/schools_updated.rb +207 -0
  120. data/lib/clever-ruby/models/section.rb +344 -0
  121. data/lib/clever-ruby/models/section_object.rb +187 -0
  122. data/lib/clever-ruby/models/section_response.rb +187 -0
  123. data/lib/clever-ruby/models/sections_created.rb +207 -0
  124. data/lib/clever-ruby/models/sections_deleted.rb +207 -0
  125. data/lib/clever-ruby/models/sections_response.rb +189 -0
  126. data/lib/clever-ruby/models/sections_updated.rb +207 -0
  127. data/lib/clever-ruby/models/student.rb +360 -0
  128. data/lib/clever-ruby/models/student_contact.rb +259 -0
  129. data/lib/clever-ruby/models/student_contact_object.rb +187 -0
  130. data/lib/clever-ruby/models/student_contact_response.rb +187 -0
  131. data/lib/clever-ruby/models/student_contacts_response.rb +189 -0
  132. data/lib/clever-ruby/models/student_object.rb +187 -0
  133. data/lib/clever-ruby/models/student_response.rb +187 -0
  134. data/lib/clever-ruby/models/studentcontacts_created.rb +207 -0
  135. data/lib/clever-ruby/models/studentcontacts_deleted.rb +207 -0
  136. data/lib/clever-ruby/models/studentcontacts_updated.rb +207 -0
  137. data/lib/clever-ruby/models/students_created.rb +196 -0
  138. data/lib/clever-ruby/models/students_deleted.rb +206 -0
  139. data/lib/clever-ruby/models/students_response.rb +189 -0
  140. data/lib/clever-ruby/models/students_updated.rb +207 -0
  141. data/lib/clever-ruby/models/teacher.rb +288 -0
  142. data/lib/clever-ruby/models/teacher_object.rb +187 -0
  143. data/lib/clever-ruby/models/teacher_response.rb +187 -0
  144. data/lib/clever-ruby/models/teachers_created.rb +207 -0
  145. data/lib/clever-ruby/models/teachers_deleted.rb +207 -0
  146. data/lib/clever-ruby/models/teachers_response.rb +189 -0
  147. data/lib/clever-ruby/models/teachers_updated.rb +207 -0
  148. data/lib/clever-ruby/models/term.rb +205 -0
  149. data/lib/clever-ruby/version.rb +12 -4
  150. data/override/api_client.rb +401 -0
  151. data/override/config.json +5 -0
  152. data/override/models/districts_created.rb +206 -0
  153. data/override/models/districts_deleted.rb +207 -0
  154. data/override/models/districts_updated.rb +207 -0
  155. data/override/models/schooladmins_created.rb +207 -0
  156. data/override/models/schooladmins_deleted.rb +207 -0
  157. data/override/models/schooladmins_updated.rb +207 -0
  158. data/override/models/schools_created.rb +207 -0
  159. data/override/models/schools_deleted.rb +207 -0
  160. data/override/models/schools_updated.rb +207 -0
  161. data/override/models/sections_created.rb +207 -0
  162. data/override/models/sections_deleted.rb +207 -0
  163. data/override/models/sections_updated.rb +207 -0
  164. data/override/models/studentcontacts_created.rb +207 -0
  165. data/override/models/studentcontacts_deleted.rb +207 -0
  166. data/override/models/studentcontacts_updated.rb +207 -0
  167. data/override/models/students_created.rb +196 -0
  168. data/override/models/students_deleted.rb +206 -0
  169. data/override/models/students_updated.rb +207 -0
  170. data/override/models/teachers_created.rb +207 -0
  171. data/override/models/teachers_deleted.rb +207 -0
  172. data/override/models/teachers_updated.rb +207 -0
  173. data/override/override.sh +9 -0
  174. data/sample/sample.rb +16 -0
  175. metadata +252 -293
  176. data/.document +0 -5
  177. data/.gitignore +0 -22
  178. data/.rubocop.yml +0 -4
  179. data/.yardopts +0 -2
  180. data/LICENSE.txt +0 -20
  181. data/lib/clever-ruby/api_operations/list.rb +0 -130
  182. data/lib/clever-ruby/api_operations/nested_list.rb +0 -95
  183. data/lib/clever-ruby/api_operations/page.rb +0 -71
  184. data/lib/clever-ruby/api_operations/pagelist.rb +0 -43
  185. data/lib/clever-ruby/api_operations/results_list.rb +0 -31
  186. data/lib/clever-ruby/api_resource.rb +0 -174
  187. data/lib/clever-ruby/clever_object.rb +0 -246
  188. data/lib/clever-ruby/district.rb +0 -75
  189. data/lib/clever-ruby/district_admin.rb +0 -45
  190. data/lib/clever-ruby/errors/api_connection_error.rb +0 -5
  191. data/lib/clever-ruby/errors/api_error.rb +0 -5
  192. data/lib/clever-ruby/errors/authentication_error.rb +0 -5
  193. data/lib/clever-ruby/errors/clever_error.rb +0 -52
  194. data/lib/clever-ruby/errors/invalid_request_error.rb +0 -17
  195. data/lib/clever-ruby/event.rb +0 -61
  196. data/lib/clever-ruby/json.rb +0 -34
  197. data/lib/clever-ruby/nested_resource.rb +0 -41
  198. data/lib/clever-ruby/school.rb +0 -17
  199. data/lib/clever-ruby/school_admin.rb +0 -19
  200. data/lib/clever-ruby/section.rb +0 -17
  201. data/lib/clever-ruby/student.rb +0 -30
  202. data/lib/clever-ruby/teacher.rb +0 -17
  203. data/lib/clever-ruby/util.rb +0 -108
  204. data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_district_properly.yml +0 -52
  205. data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_event_properly.yml +0 -52
  206. data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_school_admin_properly.yml +0 -52
  207. data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_school_properly.yml +0 -52
  208. data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_section_properly.yml +0 -52
  209. data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_student_properly.yml +0 -52
  210. data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_teacher_properly.yml +0 -52
  211. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district.yml +0 -101
  212. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district_admin.yml +0 -90
  213. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_event.yml +0 -124
  214. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school.yml +0 -113
  215. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school_admin.yml +0 -101
  216. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_section.yml +0 -368
  217. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_student.yml +0 -176
  218. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_teacher.yml +0 -191
  219. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_districts_by_page.yml +0 -101
  220. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_districts_with_multiple_ids.yml +0 -101
  221. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_events_by_page.yml +0 -122
  222. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_events_with_multiple_ids.yml +0 -131
  223. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_school_admins_by_page.yml +0 -101
  224. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_school_admins_with_multiple_ids.yml +0 -101
  225. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_schools_by_page.yml +0 -110
  226. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_schools_with_multiple_ids.yml +0 -116
  227. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_sections_by_page.yml +0 -1168
  228. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_sections_with_multiple_ids.yml +0 -163
  229. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_students_by_page.yml +0 -1207
  230. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_students_with_multiple_ids.yml +0 -127
  231. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_teachers_by_page.yml +0 -190
  232. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_teachers_with_multiple_ids.yml +0 -131
  233. data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_district.yml +0 -101
  234. data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_event.yml +0 -122
  235. data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_school.yml +0 -110
  236. data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_school_admin.yml +0 -101
  237. data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_section.yml +0 -1168
  238. data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_student.yml +0 -1207
  239. data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_teacher.yml +0 -190
  240. data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_events.yml +0 -526
  241. data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_schools.yml +0 -240
  242. data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_sections.yml +0 -3674
  243. data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_students.yml +0 -2387
  244. data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_teachers.yml +0 -717
  245. data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_events.yml +0 -152
  246. data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_schools.yml +0 -211
  247. data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_sections.yml +0 -3649
  248. data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_students.yml +0 -2362
  249. data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_teachers.yml +0 -688
  250. data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_events.yml +0 -89
  251. data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_school_admins.yml +0 -101
  252. data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_schools.yml +0 -164
  253. data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_sections.yml +0 -1168
  254. data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_students.yml +0 -1207
  255. data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_teachers.yml +0 -324
  256. data/test/data/vcr_cassettes/Clever_NestedResource/must_include_auth_token_in_linked_resources.yml +0 -197
  257. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_events.yml +0 -237
  258. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_schools.yml +0 -217
  259. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_sections.yml +0 -2333
  260. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_students.yml +0 -2411
  261. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_teachers.yml +0 -377
  262. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_admin_s_schools.yml +0 -205
  263. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_district.yml +0 -162
  264. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_events.yml +0 -215
  265. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_sections.yml +0 -1153
  266. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_students.yml +0 -1081
  267. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_teachers.yml +0 -283
  268. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_district.yml +0 -417
  269. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_events.yml +0 -470
  270. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_school.yml +0 -420
  271. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_students.yml +0 -482
  272. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_teacher.yml +0 -418
  273. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_district.yml +0 -226
  274. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_events.yml +0 -279
  275. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_school.yml +0 -229
  276. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_sections.yml +0 -301
  277. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_teachers.yml +0 -277
  278. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_district.yml +0 -240
  279. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_events.yml +0 -293
  280. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_school.yml +0 -243
  281. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_sections.yml +0 -321
  282. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_students.yml +0 -323
  283. data/test/data/vcr_cassettes/Error_handling/raises_an_InvalidRequestError_when_given_a_bad_created_since.yml +0 -151
  284. data/test/data/vcr_cassettes/Optional_attributes/has_the_expected_value_for_an_optional_attribute_that_is_present.yml +0 -55
  285. data/test/data/vcr_cassettes/last_method/page/has_working_first_and_last_methods.yml +0 -800
  286. data/test/integration/api_operations/list_test.rb +0 -117
  287. data/test/integration/district_test.rb +0 -53
  288. data/test/integration/district_with_non_global_token_test.rb +0 -88
  289. data/test/integration/error_handling_test.rb +0 -17
  290. data/test/integration/last_test.rb +0 -56
  291. data/test/integration/nested_resource_test.rb +0 -31
  292. data/test/test_helper.rb +0 -18
  293. data/test/unit/api_resource_test.rb +0 -48
  294. data/test/unit/clever_test.rb +0 -65
  295. data/test/unit/configuration_test.rb +0 -37
  296. data/test/unit/event_test.rb +0 -57
  297. data/test/unit/optional_attributes_test.rb +0 -27
@@ -0,0 +1,429 @@
1
+ =begin
2
+ #Clever API
3
+
4
+ #The Clever API
5
+
6
+ OpenAPI spec version: 1.2.0
7
+
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+
10
+ =end
11
+
12
+ require "uri"
13
+
14
+ module Clever
15
+ class EventsApi
16
+ attr_accessor :api_client
17
+
18
+ def initialize(api_client = ApiClient.default)
19
+ @api_client = api_client
20
+ end
21
+
22
+ # Retrieves a single event.
23
+ # Returns the specific event
24
+ # @param id
25
+ # @param [Hash] opts the optional parameters
26
+ # @return [EventResponse]
27
+ def get_event(id, opts = {})
28
+ data, _status_code, _headers = get_event_with_http_info(id, opts)
29
+ return data
30
+ end
31
+
32
+ # Retrieves a single event.
33
+ # Returns the specific event
34
+ # @param id
35
+ # @param [Hash] opts the optional parameters
36
+ # @return [Array<(EventResponse, Fixnum, Hash)>] EventResponse data, response status code and response headers
37
+ def get_event_with_http_info(id, opts = {})
38
+ if @api_client.config.debugging
39
+ @api_client.config.logger.debug "Calling API: EventsApi.get_event ..."
40
+ end
41
+ # verify the required parameter 'id' is set
42
+ fail ArgumentError, "Missing the required parameter 'id' when calling EventsApi.get_event" if id.nil?
43
+ # resource path
44
+ local_var_path = "/events/{id}".sub('{' + 'id' + '}', id.to_s)
45
+
46
+ # query parameters
47
+ query_params = {}
48
+
49
+ # header parameters
50
+ header_params = {}
51
+ # HTTP header 'Accept' (if needed)
52
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
53
+
54
+ # form parameters
55
+ form_params = {}
56
+
57
+ # http body (model)
58
+ post_body = nil
59
+ auth_names = ['oauth']
60
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path,
61
+ :header_params => header_params,
62
+ :query_params => query_params,
63
+ :form_params => form_params,
64
+ :body => post_body,
65
+ :auth_names => auth_names,
66
+ :return_type => 'EventResponse')
67
+ if @api_client.config.debugging
68
+ @api_client.config.logger.debug "API called: EventsApi#get_event\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
69
+ end
70
+ return data, status_code, headers
71
+ end
72
+
73
+ # Retrieves all events
74
+ # Returns a list of events
75
+ # @param [Hash] opts the optional parameters
76
+ # @option opts [Integer] :limit
77
+ # @option opts [String] :starting_after
78
+ # @option opts [String] :ending_before
79
+ # @return [EventsResponse]
80
+ def get_events(opts = {})
81
+ data, _status_code, _headers = get_events_with_http_info(opts)
82
+ return data
83
+ end
84
+
85
+ # Retrieves all events
86
+ # Returns a list of events
87
+ # @param [Hash] opts the optional parameters
88
+ # @option opts [Integer] :limit
89
+ # @option opts [String] :starting_after
90
+ # @option opts [String] :ending_before
91
+ # @return [Array<(EventsResponse, Fixnum, Hash)>] EventsResponse data, response status code and response headers
92
+ def get_events_with_http_info(opts = {})
93
+ if @api_client.config.debugging
94
+ @api_client.config.logger.debug "Calling API: EventsApi.get_events ..."
95
+ end
96
+ # resource path
97
+ local_var_path = "/events"
98
+
99
+ # query parameters
100
+ query_params = {}
101
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
102
+ query_params[:'starting_after'] = opts[:'starting_after'] if !opts[:'starting_after'].nil?
103
+ query_params[:'ending_before'] = opts[:'ending_before'] if !opts[:'ending_before'].nil?
104
+
105
+ # header parameters
106
+ header_params = {}
107
+ # HTTP header 'Accept' (if needed)
108
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
109
+
110
+ # form parameters
111
+ form_params = {}
112
+
113
+ # http body (model)
114
+ post_body = nil
115
+ auth_names = ['oauth']
116
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path,
117
+ :header_params => header_params,
118
+ :query_params => query_params,
119
+ :form_params => form_params,
120
+ :body => post_body,
121
+ :auth_names => auth_names,
122
+ :return_type => 'EventsResponse')
123
+ if @api_client.config.debugging
124
+ @api_client.config.logger.debug "API called: EventsApi#get_events\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
125
+ end
126
+ return data, status_code, headers
127
+ end
128
+
129
+ # Retrieves events for schools.
130
+ # Returns a list of events for a school
131
+ # @param id
132
+ # @param [Hash] opts the optional parameters
133
+ # @option opts [Integer] :limit
134
+ # @option opts [String] :starting_after
135
+ # @option opts [String] :ending_before
136
+ # @return [EventsResponse]
137
+ def get_events_for_school(id, opts = {})
138
+ data, _status_code, _headers = get_events_for_school_with_http_info(id, opts)
139
+ return data
140
+ end
141
+
142
+ # Retrieves events for schools.
143
+ # Returns a list of events for a school
144
+ # @param id
145
+ # @param [Hash] opts the optional parameters
146
+ # @option opts [Integer] :limit
147
+ # @option opts [String] :starting_after
148
+ # @option opts [String] :ending_before
149
+ # @return [Array<(EventsResponse, Fixnum, Hash)>] EventsResponse data, response status code and response headers
150
+ def get_events_for_school_with_http_info(id, opts = {})
151
+ if @api_client.config.debugging
152
+ @api_client.config.logger.debug "Calling API: EventsApi.get_events_for_school ..."
153
+ end
154
+ # verify the required parameter 'id' is set
155
+ fail ArgumentError, "Missing the required parameter 'id' when calling EventsApi.get_events_for_school" if id.nil?
156
+ # resource path
157
+ local_var_path = "/schools/{id}/events".sub('{' + 'id' + '}', id.to_s)
158
+
159
+ # query parameters
160
+ query_params = {}
161
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
162
+ query_params[:'starting_after'] = opts[:'starting_after'] if !opts[:'starting_after'].nil?
163
+ query_params[:'ending_before'] = opts[:'ending_before'] if !opts[:'ending_before'].nil?
164
+
165
+ # header parameters
166
+ header_params = {}
167
+ # HTTP header 'Accept' (if needed)
168
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
169
+
170
+ # form parameters
171
+ form_params = {}
172
+
173
+ # http body (model)
174
+ post_body = nil
175
+ auth_names = ['oauth']
176
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path,
177
+ :header_params => header_params,
178
+ :query_params => query_params,
179
+ :form_params => form_params,
180
+ :body => post_body,
181
+ :auth_names => auth_names,
182
+ :return_type => 'EventsResponse')
183
+ if @api_client.config.debugging
184
+ @api_client.config.logger.debug "API called: EventsApi#get_events_for_school\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
185
+ end
186
+ return data, status_code, headers
187
+ end
188
+
189
+ # Retrieves events for school_admins.
190
+ # Returns a list of events for a school admin
191
+ # @param id
192
+ # @param [Hash] opts the optional parameters
193
+ # @option opts [Integer] :limit
194
+ # @option opts [String] :starting_after
195
+ # @option opts [String] :ending_before
196
+ # @return [EventsResponse]
197
+ def get_events_for_school_admin(id, opts = {})
198
+ data, _status_code, _headers = get_events_for_school_admin_with_http_info(id, opts)
199
+ return data
200
+ end
201
+
202
+ # Retrieves events for school_admins.
203
+ # Returns a list of events for a school admin
204
+ # @param id
205
+ # @param [Hash] opts the optional parameters
206
+ # @option opts [Integer] :limit
207
+ # @option opts [String] :starting_after
208
+ # @option opts [String] :ending_before
209
+ # @return [Array<(EventsResponse, Fixnum, Hash)>] EventsResponse data, response status code and response headers
210
+ def get_events_for_school_admin_with_http_info(id, opts = {})
211
+ if @api_client.config.debugging
212
+ @api_client.config.logger.debug "Calling API: EventsApi.get_events_for_school_admin ..."
213
+ end
214
+ # verify the required parameter 'id' is set
215
+ fail ArgumentError, "Missing the required parameter 'id' when calling EventsApi.get_events_for_school_admin" if id.nil?
216
+ # resource path
217
+ local_var_path = "/school_admins/{id}/events".sub('{' + 'id' + '}', id.to_s)
218
+
219
+ # query parameters
220
+ query_params = {}
221
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
222
+ query_params[:'starting_after'] = opts[:'starting_after'] if !opts[:'starting_after'].nil?
223
+ query_params[:'ending_before'] = opts[:'ending_before'] if !opts[:'ending_before'].nil?
224
+
225
+ # header parameters
226
+ header_params = {}
227
+ # HTTP header 'Accept' (if needed)
228
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
229
+
230
+ # form parameters
231
+ form_params = {}
232
+
233
+ # http body (model)
234
+ post_body = nil
235
+ auth_names = ['oauth']
236
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path,
237
+ :header_params => header_params,
238
+ :query_params => query_params,
239
+ :form_params => form_params,
240
+ :body => post_body,
241
+ :auth_names => auth_names,
242
+ :return_type => 'EventsResponse')
243
+ if @api_client.config.debugging
244
+ @api_client.config.logger.debug "API called: EventsApi#get_events_for_school_admin\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
245
+ end
246
+ return data, status_code, headers
247
+ end
248
+
249
+ # Retrieves events for sections.
250
+ # Returns a list of events for a section
251
+ # @param id
252
+ # @param [Hash] opts the optional parameters
253
+ # @option opts [Integer] :limit
254
+ # @option opts [String] :starting_after
255
+ # @option opts [String] :ending_before
256
+ # @return [EventsResponse]
257
+ def get_events_for_section(id, opts = {})
258
+ data, _status_code, _headers = get_events_for_section_with_http_info(id, opts)
259
+ return data
260
+ end
261
+
262
+ # Retrieves events for sections.
263
+ # Returns a list of events for a section
264
+ # @param id
265
+ # @param [Hash] opts the optional parameters
266
+ # @option opts [Integer] :limit
267
+ # @option opts [String] :starting_after
268
+ # @option opts [String] :ending_before
269
+ # @return [Array<(EventsResponse, Fixnum, Hash)>] EventsResponse data, response status code and response headers
270
+ def get_events_for_section_with_http_info(id, opts = {})
271
+ if @api_client.config.debugging
272
+ @api_client.config.logger.debug "Calling API: EventsApi.get_events_for_section ..."
273
+ end
274
+ # verify the required parameter 'id' is set
275
+ fail ArgumentError, "Missing the required parameter 'id' when calling EventsApi.get_events_for_section" if id.nil?
276
+ # resource path
277
+ local_var_path = "/sections/{id}/events".sub('{' + 'id' + '}', id.to_s)
278
+
279
+ # query parameters
280
+ query_params = {}
281
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
282
+ query_params[:'starting_after'] = opts[:'starting_after'] if !opts[:'starting_after'].nil?
283
+ query_params[:'ending_before'] = opts[:'ending_before'] if !opts[:'ending_before'].nil?
284
+
285
+ # header parameters
286
+ header_params = {}
287
+ # HTTP header 'Accept' (if needed)
288
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
289
+
290
+ # form parameters
291
+ form_params = {}
292
+
293
+ # http body (model)
294
+ post_body = nil
295
+ auth_names = ['oauth']
296
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path,
297
+ :header_params => header_params,
298
+ :query_params => query_params,
299
+ :form_params => form_params,
300
+ :body => post_body,
301
+ :auth_names => auth_names,
302
+ :return_type => 'EventsResponse')
303
+ if @api_client.config.debugging
304
+ @api_client.config.logger.debug "API called: EventsApi#get_events_for_section\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
305
+ end
306
+ return data, status_code, headers
307
+ end
308
+
309
+ # Retrieves events for students.
310
+ # Returns a list of events for a student
311
+ # @param id
312
+ # @param [Hash] opts the optional parameters
313
+ # @option opts [Integer] :limit
314
+ # @option opts [String] :starting_after
315
+ # @option opts [String] :ending_before
316
+ # @return [EventsResponse]
317
+ def get_events_for_student(id, opts = {})
318
+ data, _status_code, _headers = get_events_for_student_with_http_info(id, opts)
319
+ return data
320
+ end
321
+
322
+ # Retrieves events for students.
323
+ # Returns a list of events for a student
324
+ # @param id
325
+ # @param [Hash] opts the optional parameters
326
+ # @option opts [Integer] :limit
327
+ # @option opts [String] :starting_after
328
+ # @option opts [String] :ending_before
329
+ # @return [Array<(EventsResponse, Fixnum, Hash)>] EventsResponse data, response status code and response headers
330
+ def get_events_for_student_with_http_info(id, opts = {})
331
+ if @api_client.config.debugging
332
+ @api_client.config.logger.debug "Calling API: EventsApi.get_events_for_student ..."
333
+ end
334
+ # verify the required parameter 'id' is set
335
+ fail ArgumentError, "Missing the required parameter 'id' when calling EventsApi.get_events_for_student" if id.nil?
336
+ # resource path
337
+ local_var_path = "/students/{id}/events".sub('{' + 'id' + '}', id.to_s)
338
+
339
+ # query parameters
340
+ query_params = {}
341
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
342
+ query_params[:'starting_after'] = opts[:'starting_after'] if !opts[:'starting_after'].nil?
343
+ query_params[:'ending_before'] = opts[:'ending_before'] if !opts[:'ending_before'].nil?
344
+
345
+ # header parameters
346
+ header_params = {}
347
+ # HTTP header 'Accept' (if needed)
348
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
349
+
350
+ # form parameters
351
+ form_params = {}
352
+
353
+ # http body (model)
354
+ post_body = nil
355
+ auth_names = ['oauth']
356
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path,
357
+ :header_params => header_params,
358
+ :query_params => query_params,
359
+ :form_params => form_params,
360
+ :body => post_body,
361
+ :auth_names => auth_names,
362
+ :return_type => 'EventsResponse')
363
+ if @api_client.config.debugging
364
+ @api_client.config.logger.debug "API called: EventsApi#get_events_for_student\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
365
+ end
366
+ return data, status_code, headers
367
+ end
368
+
369
+ # Retrieves events for teachers.
370
+ # Returns a list of events for a teacher
371
+ # @param id
372
+ # @param [Hash] opts the optional parameters
373
+ # @option opts [Integer] :limit
374
+ # @option opts [String] :starting_after
375
+ # @option opts [String] :ending_before
376
+ # @return [EventsResponse]
377
+ def get_events_for_teacher(id, opts = {})
378
+ data, _status_code, _headers = get_events_for_teacher_with_http_info(id, opts)
379
+ return data
380
+ end
381
+
382
+ # Retrieves events for teachers.
383
+ # Returns a list of events for a teacher
384
+ # @param id
385
+ # @param [Hash] opts the optional parameters
386
+ # @option opts [Integer] :limit
387
+ # @option opts [String] :starting_after
388
+ # @option opts [String] :ending_before
389
+ # @return [Array<(EventsResponse, Fixnum, Hash)>] EventsResponse data, response status code and response headers
390
+ def get_events_for_teacher_with_http_info(id, opts = {})
391
+ if @api_client.config.debugging
392
+ @api_client.config.logger.debug "Calling API: EventsApi.get_events_for_teacher ..."
393
+ end
394
+ # verify the required parameter 'id' is set
395
+ fail ArgumentError, "Missing the required parameter 'id' when calling EventsApi.get_events_for_teacher" if id.nil?
396
+ # resource path
397
+ local_var_path = "/teachers/{id}/events".sub('{' + 'id' + '}', id.to_s)
398
+
399
+ # query parameters
400
+ query_params = {}
401
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
402
+ query_params[:'starting_after'] = opts[:'starting_after'] if !opts[:'starting_after'].nil?
403
+ query_params[:'ending_before'] = opts[:'ending_before'] if !opts[:'ending_before'].nil?
404
+
405
+ # header parameters
406
+ header_params = {}
407
+ # HTTP header 'Accept' (if needed)
408
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
409
+
410
+ # form parameters
411
+ form_params = {}
412
+
413
+ # http body (model)
414
+ post_body = nil
415
+ auth_names = ['oauth']
416
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path,
417
+ :header_params => header_params,
418
+ :query_params => query_params,
419
+ :form_params => form_params,
420
+ :body => post_body,
421
+ :auth_names => auth_names,
422
+ :return_type => 'EventsResponse')
423
+ if @api_client.config.debugging
424
+ @api_client.config.logger.debug "API called: EventsApi#get_events_for_teacher\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
425
+ end
426
+ return data, status_code, headers
427
+ end
428
+ end
429
+ end
@@ -0,0 +1,401 @@
1
+ =begin
2
+ #Clever API
3
+
4
+ #The Clever API
5
+
6
+ OpenAPI spec version: 1.2.0
7
+
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+
10
+ =end
11
+
12
+ require 'date'
13
+ require 'json'
14
+ require 'logger'
15
+ require 'tempfile'
16
+ require 'typhoeus'
17
+ require 'uri'
18
+
19
+ module Clever
20
+ class ApiClient
21
+ # The Configuration object holding settings to be used in the API client.
22
+ attr_accessor :config
23
+
24
+ # Defines the headers to be used in HTTP requests of all API calls by default.
25
+ #
26
+ # @return [Hash]
27
+ attr_accessor :default_headers
28
+
29
+ # Initializes the ApiClient
30
+ # @option config [Configuration] Configuration for initializing the object, default to Configuration.default
31
+ def initialize(config = Configuration.default)
32
+ @config = config
33
+ @user_agent = "Swagger-Codegen/#{VERSION}/ruby"
34
+ @default_headers = {
35
+ 'Content-Type' => "application/json",
36
+ 'User-Agent' => @user_agent
37
+ }
38
+ end
39
+
40
+ def self.default
41
+ @@default ||= ApiClient.new
42
+ end
43
+
44
+ # Call an API with given options.
45
+ #
46
+ # @return [Array<(Object, Fixnum, Hash)>] an array of 3 elements:
47
+ # the data deserialized from response body (could be nil), response status code and response headers.
48
+ def call_api(http_method, path, opts = {})
49
+ request = build_request(http_method, path, opts)
50
+ response = request.run
51
+
52
+ if @config.debugging
53
+ @config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
54
+ end
55
+
56
+ unless response.success?
57
+ if response.timed_out?
58
+ fail ApiError.new('Connection timed out')
59
+ elsif response.code == 0
60
+ # Errors from libcurl will be made visible here
61
+ fail ApiError.new(:code => 0,
62
+ :message => response.return_message)
63
+ else
64
+ fail ApiError.new(:code => response.code,
65
+ :response_headers => response.headers,
66
+ :response_body => response.body),
67
+ response.status_message
68
+ end
69
+ end
70
+
71
+ if opts[:return_type]
72
+ data = deserialize(response, opts[:return_type])
73
+ else
74
+ data = nil
75
+ end
76
+ return data, response.code, response.headers
77
+ end
78
+
79
+ # Builds the HTTP request
80
+ #
81
+ # @param [String] http_method HTTP method/verb (e.g. POST)
82
+ # @param [String] path URL path (e.g. /account/new)
83
+ # @option opts [Hash] :header_params Header parameters
84
+ # @option opts [Hash] :query_params Query parameters
85
+ # @option opts [Hash] :form_params Query parameters
86
+ # @option opts [Object] :body HTTP body (JSON/XML)
87
+ # @return [Typhoeus::Request] A Typhoeus Request
88
+ def build_request(http_method, path, opts = {})
89
+ url = build_request_url(path)
90
+ http_method = http_method.to_sym.downcase
91
+
92
+ header_params = @default_headers.merge(opts[:header_params] || {})
93
+ query_params = opts[:query_params] || {}
94
+ form_params = opts[:form_params] || {}
95
+
96
+ update_params_for_auth! header_params, query_params, opts[:auth_names]
97
+
98
+ # set ssl_verifyhosts option based on @config.verify_ssl_host (true/false)
99
+ _verify_ssl_host = @config.verify_ssl_host ? 2 : 0
100
+
101
+ req_opts = {
102
+ :method => http_method,
103
+ :headers => header_params,
104
+ :params => query_params,
105
+ :params_encoding => @config.params_encoding,
106
+ :timeout => @config.timeout,
107
+ :ssl_verifypeer => @config.verify_ssl,
108
+ :ssl_verifyhost => _verify_ssl_host,
109
+ :sslcert => @config.cert_file,
110
+ :sslkey => @config.key_file,
111
+ :verbose => @config.debugging
112
+ }
113
+
114
+ # set custom cert, if provided
115
+ req_opts[:cainfo] = @config.ssl_ca_cert if @config.ssl_ca_cert
116
+
117
+ if [:post, :patch, :put, :delete].include?(http_method)
118
+ req_body = build_request_body(header_params, form_params, opts[:body])
119
+ req_opts.update :body => req_body
120
+ if @config.debugging
121
+ @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
122
+ end
123
+ end
124
+
125
+ Typhoeus::Request.new(url, req_opts)
126
+ end
127
+
128
+ # Check if the given MIME is a JSON MIME.
129
+ # JSON MIME examples:
130
+ # application/json
131
+ # application/json; charset=UTF8
132
+ # APPLICATION/JSON
133
+ # */*
134
+ # @param [String] mime MIME
135
+ # @return [Boolean] True if the MIME is application/json
136
+ def json_mime?(mime)
137
+ (mime == "*/*") || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
138
+ end
139
+
140
+ # Deserialize the response to the given return type.
141
+ #
142
+ # @param [Response] response HTTP response
143
+ # @param [String] return_type some examples: "User", "Array[User]", "Hash[String,Integer]"
144
+ def deserialize(response, return_type)
145
+ body = response.body
146
+ return nil if body.nil? || body.empty?
147
+
148
+ # return response body directly for String return type
149
+ return body if return_type == 'String'
150
+
151
+ # handle file downloading - save response body into a tmp file and return the File instance
152
+ return download_file(response) if return_type == 'File'
153
+
154
+ # ensuring a default content type
155
+ content_type = response.headers['Content-Type'] || 'application/json'
156
+
157
+ fail "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
158
+
159
+ begin
160
+ data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
161
+ rescue JSON::ParserError => e
162
+ if %w(String Date DateTime).include?(return_type)
163
+ data = body
164
+ else
165
+ raise e
166
+ end
167
+ end
168
+
169
+ convert_to_type data, return_type
170
+ end
171
+
172
+ # Convert data to the given return type.
173
+ # @param [Object] data Data to be converted
174
+ # @param [String] return_type Return type
175
+ # @return [Mixed] Data in a particular type
176
+ def convert_to_type(data, return_type)
177
+ return nil if data.nil?
178
+ case return_type
179
+ when 'String'
180
+ data.to_s
181
+ when 'Integer'
182
+ data.to_i
183
+ when 'Float'
184
+ data.to_f
185
+ when 'BOOLEAN'
186
+ data == true
187
+ when 'DateTime'
188
+ # parse date time (expecting ISO 8601 format)
189
+ DateTime.parse data
190
+ when 'Date'
191
+ # parse date time (expecting ISO 8601 format)
192
+ Date.parse data
193
+ when 'Object'
194
+ # generic object (usually a Hash), return directly
195
+ data
196
+ when /\AArray<(.+)>\z/
197
+ # e.g. Array<Pet>
198
+ sub_type = $1
199
+ data.map {|item| convert_to_type(item, sub_type) }
200
+ when /\AHash\<String, (.+)\>\z/
201
+ # e.g. Hash<String, Integer>
202
+ sub_type = $1
203
+ {}.tap do |hash|
204
+ data.each {|k, v| hash[k] = convert_to_type(v, sub_type) }
205
+ end
206
+ when 'EventsResponse'
207
+ Clever.const_get(return_type).new.tap do |model|
208
+ resp = model.build_from_hash data
209
+ resps = []
210
+ data[:data].each do |eventResponse|
211
+ singleResp = parse_event_response(eventResponse[:data])
212
+ resps.push(singleResp)
213
+ end
214
+ resp.data = resps
215
+ return resp
216
+ end
217
+ when 'EventResponse'
218
+ parse_event_response data[:data]
219
+ else
220
+ # models, e.g. Pet
221
+ Clever.const_get(return_type).new.tap do |model|
222
+ model.build_from_hash data
223
+ end
224
+ end
225
+ end
226
+
227
+ def parse_event_response(data)
228
+ classObj = data[:type].split(".").collect(&:capitalize).join
229
+ Clever.const_get(classObj).new.tap do |model|
230
+ parsed = model.build_from_hash data
231
+ Clever.const_get("EventsResponse").new.tap do |model|
232
+ resp = model.build_from_hash data
233
+ resp.data = parsed
234
+ return resp
235
+ end
236
+ end
237
+ end
238
+
239
+ # Save response body into a file in (the defined) temporary folder, using the filename
240
+ # from the "Content-Disposition" header if provided, otherwise a random filename.
241
+ #
242
+ # @see Configuration#temp_folder_path
243
+ # @return [Tempfile] the file downloaded
244
+ def download_file(response)
245
+ content_disposition = response.headers['Content-Disposition']
246
+ if content_disposition and content_disposition =~ /filename=/i
247
+ filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
248
+ prefix = sanitize_filename(filename)
249
+ else
250
+ prefix = 'download-'
251
+ end
252
+ prefix = prefix + '-' unless prefix.end_with?('-')
253
+
254
+ tempfile = nil
255
+ encoding = response.body.encoding
256
+ Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding) do |file|
257
+ file.write(response.body)
258
+ tempfile = file
259
+ end
260
+ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
261
+ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
262
+ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
263
+ "explicitly with `tempfile.delete`"
264
+ tempfile
265
+ end
266
+
267
+ # Sanitize filename by removing path.
268
+ # e.g. ../../sun.gif becomes sun.gif
269
+ #
270
+ # @param [String] filename the filename to be sanitized
271
+ # @return [String] the sanitized filename
272
+ def sanitize_filename(filename)
273
+ filename.gsub(/.*[\/\\]/, '')
274
+ end
275
+
276
+ def build_request_url(path)
277
+ # Add leading and trailing slashes to path
278
+ path = "/#{path}".gsub(/\/+/, '/')
279
+ URI.encode(@config.base_url + path)
280
+ end
281
+
282
+ # Builds the HTTP request body
283
+ #
284
+ # @param [Hash] header_params Header parameters
285
+ # @param [Hash] form_params Query parameters
286
+ # @param [Object] body HTTP body (JSON/XML)
287
+ # @return [String] HTTP body data in the form of string
288
+ def build_request_body(header_params, form_params, body)
289
+ # http form
290
+ if header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
291
+ header_params['Content-Type'] == 'multipart/form-data'
292
+ data = {}
293
+ form_params.each do |key, value|
294
+ case value
295
+ when File, Array, nil
296
+ # let typhoeus handle File, Array and nil parameters
297
+ data[key] = value
298
+ else
299
+ data[key] = value.to_s
300
+ end
301
+ end
302
+ elsif body
303
+ data = body.is_a?(String) ? body : body.to_json
304
+ else
305
+ data = nil
306
+ end
307
+ data
308
+ end
309
+
310
+ # Update hearder and query params based on authentication settings.
311
+ #
312
+ # @param [Hash] header_params Header parameters
313
+ # @param [Hash] query_params Query parameters
314
+ # @param [String] auth_names Authentication scheme name
315
+ def update_params_for_auth!(header_params, query_params, auth_names)
316
+ Array(auth_names).each do |auth_name|
317
+ auth_setting = @config.auth_settings[auth_name]
318
+ next unless auth_setting
319
+ case auth_setting[:in]
320
+ when 'header' then header_params[auth_setting[:key]] = auth_setting[:value]
321
+ when 'query' then query_params[auth_setting[:key]] = auth_setting[:value]
322
+ else fail ArgumentError, 'Authentication token must be in `query` of `header`'
323
+ end
324
+ end
325
+ end
326
+
327
+ # Sets user agent in HTTP header
328
+ #
329
+ # @param [String] user_agent User agent (e.g. swagger-codegen/ruby/1.0.0)
330
+ def user_agent=(user_agent)
331
+ @user_agent = user_agent
332
+ @default_headers['User-Agent'] = @user_agent
333
+ end
334
+
335
+ # Return Accept header based on an array of accepts provided.
336
+ # @param [Array] accepts array for Accept
337
+ # @return [String] the Accept header (e.g. application/json)
338
+ def select_header_accept(accepts)
339
+ return nil if accepts.nil? || accepts.empty?
340
+ # use JSON when present, otherwise use all of the provided
341
+ json_accept = accepts.find { |s| json_mime?(s) }
342
+ return json_accept || accepts.join(',')
343
+ end
344
+
345
+ # Return Content-Type header based on an array of content types provided.
346
+ # @param [Array] content_types array for Content-Type
347
+ # @return [String] the Content-Type header (e.g. application/json)
348
+ def select_header_content_type(content_types)
349
+ # use application/json by default
350
+ return 'application/json' if content_types.nil? || content_types.empty?
351
+ # use JSON when present, otherwise use the first one
352
+ json_content_type = content_types.find { |s| json_mime?(s) }
353
+ return json_content_type || content_types.first
354
+ end
355
+
356
+ # Convert object (array, hash, object, etc) to JSON string.
357
+ # @param [Object] model object to be converted into JSON string
358
+ # @return [String] JSON string representation of the object
359
+ def object_to_http_body(model)
360
+ return model if model.nil? || model.is_a?(String)
361
+ local_body = nil
362
+ if model.is_a?(Array)
363
+ local_body = model.map{|m| object_to_hash(m) }
364
+ else
365
+ local_body = object_to_hash(model)
366
+ end
367
+ local_body.to_json
368
+ end
369
+
370
+ # Convert object(non-array) to hash.
371
+ # @param [Object] obj object to be converted into JSON string
372
+ # @return [String] JSON string representation of the object
373
+ def object_to_hash(obj)
374
+ if obj.respond_to?(:to_hash)
375
+ obj.to_hash
376
+ else
377
+ obj
378
+ end
379
+ end
380
+
381
+ # Build parameter value according to the given collection format.
382
+ # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
383
+ def build_collection_param(param, collection_format)
384
+ case collection_format
385
+ when :csv
386
+ param.join(',')
387
+ when :ssv
388
+ param.join(' ')
389
+ when :tsv
390
+ param.join("\t")
391
+ when :pipes
392
+ param.join('|')
393
+ when :multi
394
+ # return the array directly as typhoeus will handle it as expected
395
+ param
396
+ else
397
+ fail "unknown collection format: #{collection_format.inspect}"
398
+ end
399
+ end
400
+ end
401
+ end