flat_api 0.3.5 → 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.
Files changed (374) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +69 -0
  3. data/LICENSE +201 -0
  4. data/README.md +92 -0
  5. data/lib/flat_api/api/account_api.rb +4 -4
  6. data/lib/flat_api/api/class_api.rb +281 -63
  7. data/lib/flat_api/api/collection_api.rb +63 -50
  8. data/lib/flat_api/api/edu_resources_api.rb +38 -26
  9. data/lib/flat_api/api/group_api.rb +432 -9
  10. data/lib/flat_api/api/omr_api.rb +894 -0
  11. data/lib/flat_api/api/organization_api.rb +307 -35
  12. data/lib/flat_api/api/score_api.rb +129 -80
  13. data/lib/flat_api/api/task_api.rb +5 -5
  14. data/lib/flat_api/api/user_api.rb +45 -14
  15. data/lib/flat_api/api_client.rb +169 -96
  16. data/lib/flat_api/api_error.rb +3 -3
  17. data/lib/flat_api/api_model_base.rb +88 -0
  18. data/lib/flat_api/client.rb +69 -0
  19. data/lib/flat_api/configuration.rb +124 -25
  20. data/lib/flat_api/errors.rb +86 -0
  21. data/lib/flat_api/models/add_group_user200_response.rb +148 -0
  22. data/lib/flat_api/models/add_group_user_request.rb +165 -0
  23. data/lib/flat_api/models/api_access_token.rb +13 -80
  24. data/lib/flat_api/models/app_scopes.rb +6 -4
  25. data/lib/flat_api/models/assignment.rb +190 -85
  26. data/lib/flat_api/models/assignment_capabilities.rb +53 -80
  27. data/lib/flat_api/models/assignment_capabilities_can_publish_in_class_error.rb +33 -80
  28. data/lib/flat_api/models/assignment_copy.rb +5 -6
  29. data/lib/flat_api/models/assignment_copy_response.rb +187 -82
  30. data/lib/flat_api/models/assignment_copy_to_class.rb +23 -80
  31. data/lib/flat_api/models/assignment_copy_to_resource_library.rb +23 -80
  32. data/lib/flat_api/models/assignment_group.rb +232 -0
  33. data/lib/flat_api/models/assignment_submission.rb +104 -81
  34. data/lib/flat_api/models/assignment_submission_comment.rb +13 -80
  35. data/lib/flat_api/models/assignment_submission_comment_creation.rb +23 -80
  36. data/lib/flat_api/models/assignment_submission_comments.rb +13 -80
  37. data/lib/flat_api/models/assignment_submission_history.rb +33 -80
  38. data/lib/flat_api/models/assignment_submission_history_attachment.rb +13 -80
  39. data/lib/flat_api/models/assignment_submission_history_state.rb +3 -3
  40. data/lib/flat_api/models/assignment_submission_lti.rb +64 -86
  41. data/lib/flat_api/models/{assignment_submission_playback_inner.rb → assignment_submission_playback.rb} +36 -83
  42. data/lib/flat_api/models/assignment_submission_state.rb +3 -3
  43. data/lib/flat_api/models/assignment_submission_students_mode.rb +40 -0
  44. data/lib/flat_api/models/assignment_submission_update.rb +25 -81
  45. data/lib/flat_api/models/assignment_type.rb +5 -4
  46. data/lib/flat_api/models/assignment_update.rb +218 -87
  47. data/lib/flat_api/models/class_assignment.rb +219 -82
  48. data/lib/flat_api/models/class_assignment_all_of_canvas.rb +13 -80
  49. data/lib/flat_api/models/class_assignment_all_of_lti.rb +13 -80
  50. data/lib/flat_api/models/class_assignment_all_of_mfc.rb +13 -80
  51. data/lib/flat_api/models/class_assignment_update.rb +237 -94
  52. data/lib/flat_api/models/class_assignment_update_all_of_google_classroom.rb +13 -80
  53. data/lib/flat_api/models/class_assignment_update_all_of_microsoft_graph.rb +13 -80
  54. data/lib/flat_api/models/class_attachment_creation.rb +51 -86
  55. data/lib/flat_api/models/class_creation.rb +13 -80
  56. data/lib/flat_api/models/class_details.rb +85 -81
  57. data/lib/flat_api/models/class_details_canvas.rb +13 -80
  58. data/lib/flat_api/models/class_details_clever.rb +13 -80
  59. data/lib/flat_api/models/class_details_google_classroom.rb +13 -80
  60. data/lib/flat_api/models/class_details_google_drive.rb +13 -80
  61. data/lib/flat_api/models/class_details_issues.rb +13 -80
  62. data/lib/flat_api/models/class_details_issues_sync_inner.rb +15 -82
  63. data/lib/flat_api/models/class_details_lti.rb +28 -85
  64. data/lib/flat_api/models/class_details_mfc.rb +13 -80
  65. data/lib/flat_api/models/class_details_microsoft_graph.rb +13 -80
  66. data/lib/flat_api/models/class_grade_level.rb +3 -3
  67. data/lib/flat_api/models/class_roles.rb +3 -3
  68. data/lib/flat_api/models/class_state.rb +5 -4
  69. data/lib/flat_api/models/class_update.rb +13 -80
  70. data/lib/flat_api/models/collection.rb +182 -81
  71. data/lib/flat_api/models/collection_app.rb +13 -80
  72. data/lib/flat_api/models/collection_capabilities.rb +63 -80
  73. data/lib/flat_api/models/collection_contents.rb +166 -0
  74. data/lib/flat_api/models/collection_creation.rb +20 -99
  75. data/lib/flat_api/models/collection_modification.rb +17 -82
  76. data/lib/flat_api/models/collection_privacy.rb +3 -3
  77. data/lib/flat_api/models/collection_type.rb +7 -6
  78. data/lib/flat_api/models/credit_transaction.rb +388 -0
  79. data/lib/flat_api/models/edu_library.rb +63 -82
  80. data/lib/flat_api/models/edu_resource.rb +101 -84
  81. data/lib/flat_api/models/edu_resource_assignment_creation.rb +170 -0
  82. data/lib/flat_api/models/edu_resource_capabilities.rb +27 -84
  83. data/lib/flat_api/models/edu_resource_copy.rb +23 -80
  84. data/lib/flat_api/models/edu_resource_creation.rb +96 -86
  85. data/lib/flat_api/models/edu_resource_folder.rb +39 -84
  86. data/lib/flat_api/models/edu_resource_lti_link.rb +23 -80
  87. data/lib/flat_api/models/edu_resource_move.rb +23 -80
  88. data/lib/flat_api/models/edu_resource_privacy.rb +3 -3
  89. data/lib/flat_api/models/edu_resource_resource.rb +5 -6
  90. data/lib/flat_api/models/edu_resource_type.rb +3 -3
  91. data/lib/flat_api/models/edu_resource_update.rb +101 -86
  92. data/lib/flat_api/models/edu_resource_use_in_class.rb +23 -80
  93. data/lib/flat_api/models/flat_error_response.rb +47 -84
  94. data/lib/flat_api/models/google_classroom_coursework.rb +13 -80
  95. data/lib/flat_api/models/google_classroom_submission.rb +43 -80
  96. data/lib/flat_api/models/grade.rb +51 -0
  97. data/lib/flat_api/models/group.rb +14 -94
  98. data/lib/flat_api/models/group_creation.rb +238 -0
  99. data/lib/flat_api/models/group_details.rb +178 -84
  100. data/lib/flat_api/models/group_type.rb +6 -4
  101. data/lib/flat_api/models/license_mode.rb +3 -3
  102. data/lib/flat_api/models/license_sources.rb +3 -3
  103. data/lib/flat_api/models/lms_name.rb +3 -3
  104. data/lib/flat_api/models/lti_configuration.rb +56 -0
  105. data/lib/flat_api/models/lti_configuration1p1.rb +361 -0
  106. data/lib/flat_api/models/lti_configuration1p1_all_of_tool.rb +199 -0
  107. data/lib/flat_api/models/lti_configuration1p3.rb +106 -0
  108. data/lib/flat_api/models/lti_configuration1p3_base.rb +336 -0
  109. data/lib/flat_api/models/lti_configuration1p3_base_supported_services.rb +166 -0
  110. data/lib/flat_api/models/lti_configuration1p3_base_supported_services_ags.rb +179 -0
  111. data/lib/flat_api/models/lti_configuration1p3_base_supported_services_deep_linking.rb +159 -0
  112. data/lib/flat_api/models/lti_configuration1p3_base_supported_services_nrps.rb +169 -0
  113. data/lib/flat_api/models/lti_configuration1p3_base_tool.rb +199 -0
  114. data/lib/flat_api/models/lti_configuration1p3_deployment.rb +529 -0
  115. data/lib/flat_api/models/lti_configuration1p3_dynamic.rb +530 -0
  116. data/lib/flat_api/models/lti_configuration1p3_manual.rb +489 -0
  117. data/lib/flat_api/models/lti_configuration_base.rb +306 -0
  118. data/lib/flat_api/models/lti_configuration_create.rb +60 -0
  119. data/lib/flat_api/models/lti_configuration_create1p1.rb +210 -0
  120. data/lib/flat_api/models/lti_configuration_create1p3_deployment.rb +264 -0
  121. data/lib/flat_api/models/lti_configuration_create1p3_dynamic.rb +209 -0
  122. data/lib/flat_api/models/lti_configuration_create1p3_dynamic_platform_info.rb +159 -0
  123. data/lib/flat_api/models/lti_configuration_create1p3_manual.rb +270 -0
  124. data/lib/flat_api/models/lti_configuration_update.rb +104 -0
  125. data/lib/flat_api/models/lti_configuration_update_deployment.rb +169 -0
  126. data/lib/flat_api/models/lti_configuration_update_standalone.rb +219 -0
  127. data/lib/flat_api/models/lti_credentials.rb +29 -84
  128. data/lib/flat_api/models/lti_credentials_creation.rb +23 -80
  129. data/lib/flat_api/models/media_attachment.rb +43 -88
  130. data/lib/flat_api/models/media_score_sharing_mode.rb +3 -3
  131. data/lib/flat_api/models/microsoft_graph_assignment.rb +99 -88
  132. data/lib/flat_api/models/microsoft_graph_submission.rb +33 -80
  133. data/lib/flat_api/models/omr_capabilities.rb +480 -0
  134. data/lib/flat_api/models/omr_details_step_data.rb +228 -0
  135. data/lib/flat_api/models/omr_details_submission.rb +288 -0
  136. data/lib/flat_api/models/omr_detected_instrument.rb +260 -0
  137. data/lib/flat_api/models/omr_imported_metadata.rb +181 -0
  138. data/lib/flat_api/models/omr_instrument_override.rb +311 -0
  139. data/lib/flat_api/models/omr_job.rb +394 -0
  140. data/lib/flat_api/models/omr_job_creation.rb +238 -0
  141. data/lib/flat_api/models/omr_job_file_metadata.rb +199 -0
  142. data/lib/flat_api/models/omr_job_file_upload.rb +176 -0
  143. data/lib/flat_api/models/omr_job_file_upload_result.rb +159 -0
  144. data/lib/flat_api/models/omr_job_input_file.rb +176 -0
  145. data/lib/flat_api/models/omr_job_output.rb +40 -0
  146. data/lib/flat_api/models/omr_job_progress.rb +169 -0
  147. data/lib/flat_api/models/omr_job_result.rb +161 -0
  148. data/lib/flat_api/models/omr_job_retention.rb +176 -0
  149. data/lib/flat_api/models/omr_job_status.rb +44 -0
  150. data/lib/flat_api/models/omr_locale_details.rb +193 -0
  151. data/lib/flat_api/models/omr_pending_step.rb +213 -0
  152. data/lib/flat_api/models/omr_step_name.rb +39 -0
  153. data/lib/flat_api/models/organization_invitation.rb +54 -81
  154. data/lib/flat_api/models/organization_invitation_creation.rb +15 -82
  155. data/lib/flat_api/models/organization_roles.rb +5 -5
  156. data/lib/flat_api/models/organization_user_access_token_creation.rb +23 -80
  157. data/lib/flat_api/models/rename_group_request.rb +165 -0
  158. data/lib/flat_api/models/resource_collaborator.rb +43 -85
  159. data/lib/flat_api/models/resource_collaborator_creation.rb +13 -80
  160. data/lib/flat_api/models/resource_rights.rb +43 -85
  161. data/lib/flat_api/models/score_comment.rb +122 -80
  162. data/lib/flat_api/models/score_comment_context.rb +73 -80
  163. data/lib/flat_api/models/score_comment_creation.rb +24 -81
  164. data/lib/flat_api/models/score_comment_moderation.rb +13 -80
  165. data/lib/flat_api/models/score_comment_update.rb +18 -85
  166. data/lib/flat_api/models/score_comments_counts.rb +28 -85
  167. data/lib/flat_api/models/score_creation.rb +5 -6
  168. data/lib/flat_api/models/score_creation_builder_data.rb +24 -88
  169. data/lib/flat_api/models/score_creation_builder_data_all_of_builder_data.rb +23 -80
  170. data/lib/flat_api/models/score_creation_builder_data_all_of_builder_data_layout_data.rb +13 -80
  171. data/lib/flat_api/models/score_creation_builder_data_all_of_builder_data_score_data.rb +24 -81
  172. data/lib/flat_api/models/score_creation_builder_data_all_of_builder_data_score_data_instruments.rb +33 -80
  173. data/lib/flat_api/models/score_creation_common.rb +14 -81
  174. data/lib/flat_api/models/score_creation_file_import.rb +39 -86
  175. data/lib/flat_api/models/score_creation_google_drive_import.rb +24 -81
  176. data/lib/flat_api/models/score_creation_type.rb +4 -5
  177. data/lib/flat_api/models/score_details.rb +180 -89
  178. data/lib/flat_api/models/score_details_all_of_me.rb +193 -0
  179. data/lib/flat_api/models/score_fork.rb +14 -83
  180. data/lib/flat_api/models/score_license.rb +4 -5
  181. data/lib/flat_api/models/score_likes_counts.rb +28 -106
  182. data/lib/flat_api/models/score_modification.rb +13 -80
  183. data/lib/flat_api/models/score_plays_counts.rb +28 -85
  184. data/lib/flat_api/models/score_privacy.rb +3 -3
  185. data/lib/flat_api/models/score_revision.rb +81 -87
  186. data/lib/flat_api/models/score_revision_creation.rb +23 -80
  187. data/lib/flat_api/models/score_revision_statistics.rb +13 -80
  188. data/lib/flat_api/models/score_source.rb +13 -80
  189. data/lib/flat_api/models/score_summary.rb +63 -80
  190. data/lib/flat_api/models/score_track.rb +94 -88
  191. data/lib/flat_api/models/score_track_creation.rb +13 -80
  192. data/lib/flat_api/models/score_track_creation_response.rb +165 -0
  193. data/lib/flat_api/models/score_track_point.rb +23 -80
  194. data/lib/flat_api/models/score_track_purpose.rb +3 -3
  195. data/lib/flat_api/models/score_track_state.rb +3 -3
  196. data/lib/flat_api/models/score_track_type.rb +3 -3
  197. data/lib/flat_api/models/score_track_update.rb +25 -81
  198. data/lib/flat_api/models/score_views_counts.rb +28 -85
  199. data/lib/flat_api/models/task.rb +62 -87
  200. data/lib/flat_api/models/task_export_options.rb +13 -80
  201. data/lib/flat_api/models/task_progress.rb +13 -80
  202. data/lib/flat_api/models/task_result.rb +13 -80
  203. data/lib/flat_api/models/teaching_theme.rb +47 -0
  204. data/lib/flat_api/models/tutteo_product.rb +3 -3
  205. data/lib/flat_api/models/user_admin_update.rb +17 -95
  206. data/lib/flat_api/models/user_azure_details.rb +13 -80
  207. data/lib/flat_api/models/user_basics.rb +43 -80
  208. data/lib/flat_api/models/user_community_profile_links.rb +13 -80
  209. data/lib/flat_api/models/user_creation.rb +21 -98
  210. data/lib/flat_api/models/user_details.rb +101 -96
  211. data/lib/flat_api/models/user_details_admin.rb +72 -85
  212. data/lib/flat_api/models/user_details_admin_all_of_license.rb +13 -80
  213. data/lib/flat_api/models/user_public.rb +89 -94
  214. data/lib/flat_api/models/user_public_summary.rb +58 -81
  215. data/lib/flat_api/models/user_signin_link.rb +24 -81
  216. data/lib/flat_api/models/user_signin_link_creation.rb +13 -80
  217. data/lib/flat_api/oauth.rb +128 -0
  218. data/lib/flat_api/pagination.rb +88 -0
  219. data/lib/flat_api/retry.rb +56 -0
  220. data/lib/flat_api/version.rb +4 -4
  221. data/lib/flat_api.rb +70 -5
  222. metadata +98 -330
  223. data/lib/flat_api/models/flat_locales.rb +0 -56
  224. data/spec/api/account_api_spec.rb +0 -47
  225. data/spec/api/class_api_spec.rb +0 -422
  226. data/spec/api/collection_api_spec.rb +0 -158
  227. data/spec/api/edu_resources_api_spec.rb +0 -181
  228. data/spec/api/group_api_spec.rb +0 -71
  229. data/spec/api/organization_api_spec.rb +0 -201
  230. data/spec/api/score_api_spec.rb +0 -440
  231. data/spec/api/task_api_spec.rb +0 -47
  232. data/spec/api/user_api_spec.rb +0 -75
  233. data/spec/models/api_access_token_spec.rb +0 -66
  234. data/spec/models/app_scopes_spec.rb +0 -30
  235. data/spec/models/assignment_capabilities_can_publish_in_class_error_spec.rb +0 -42
  236. data/spec/models/assignment_capabilities_spec.rb +0 -60
  237. data/spec/models/assignment_copy_response_spec.rb +0 -124
  238. data/spec/models/assignment_copy_spec.rb +0 -32
  239. data/spec/models/assignment_copy_to_class_spec.rb +0 -48
  240. data/spec/models/assignment_copy_to_resource_library_spec.rb +0 -42
  241. data/spec/models/assignment_spec.rb +0 -118
  242. data/spec/models/assignment_submission_comment_creation_spec.rb +0 -36
  243. data/spec/models/assignment_submission_comment_spec.rb +0 -72
  244. data/spec/models/assignment_submission_comments_spec.rb +0 -42
  245. data/spec/models/assignment_submission_history_attachment_spec.rb +0 -48
  246. data/spec/models/assignment_submission_history_spec.rb +0 -112
  247. data/spec/models/assignment_submission_history_state_spec.rb +0 -30
  248. data/spec/models/assignment_submission_lti_spec.rb +0 -36
  249. data/spec/models/assignment_submission_playback_inner_spec.rb +0 -42
  250. data/spec/models/assignment_submission_spec.rb +0 -144
  251. data/spec/models/assignment_submission_state_spec.rb +0 -30
  252. data/spec/models/assignment_submission_update_spec.rb +0 -66
  253. data/spec/models/assignment_type_spec.rb +0 -30
  254. data/spec/models/assignment_update_spec.rb +0 -100
  255. data/spec/models/class_assignment_all_of_canvas_spec.rb +0 -42
  256. data/spec/models/class_assignment_all_of_lti_spec.rb +0 -36
  257. data/spec/models/class_assignment_all_of_mfc_spec.rb +0 -42
  258. data/spec/models/class_assignment_spec.rb +0 -216
  259. data/spec/models/class_assignment_update_all_of_google_classroom_spec.rb +0 -36
  260. data/spec/models/class_assignment_update_all_of_microsoft_graph_spec.rb +0 -36
  261. data/spec/models/class_assignment_update_spec.rb +0 -150
  262. data/spec/models/class_attachment_creation_spec.rb +0 -76
  263. data/spec/models/class_creation_spec.rb +0 -64
  264. data/spec/models/class_details_canvas_spec.rb +0 -42
  265. data/spec/models/class_details_clever_spec.rb +0 -76
  266. data/spec/models/class_details_google_classroom_spec.rb +0 -42
  267. data/spec/models/class_details_google_drive_spec.rb +0 -42
  268. data/spec/models/class_details_issues_spec.rb +0 -36
  269. data/spec/models/class_details_issues_sync_inner_spec.rb +0 -52
  270. data/spec/models/class_details_lti_spec.rb +0 -48
  271. data/spec/models/class_details_mfc_spec.rb +0 -42
  272. data/spec/models/class_details_microsoft_graph_spec.rb +0 -36
  273. data/spec/models/class_details_spec.rb +0 -178
  274. data/spec/models/class_grade_level_spec.rb +0 -30
  275. data/spec/models/class_roles_spec.rb +0 -30
  276. data/spec/models/class_state_spec.rb +0 -30
  277. data/spec/models/class_update_spec.rb +0 -64
  278. data/spec/models/collection_app_spec.rb +0 -48
  279. data/spec/models/collection_capabilities_spec.rb +0 -60
  280. data/spec/models/collection_creation_spec.rb +0 -42
  281. data/spec/models/collection_modification_spec.rb +0 -42
  282. data/spec/models/collection_privacy_spec.rb +0 -30
  283. data/spec/models/collection_spec.rb +0 -114
  284. data/spec/models/collection_type_spec.rb +0 -30
  285. data/spec/models/edu_library_spec.rb +0 -62
  286. data/spec/models/edu_resource_capabilities_spec.rb +0 -48
  287. data/spec/models/edu_resource_copy_spec.rb +0 -36
  288. data/spec/models/edu_resource_creation_spec.rb +0 -48
  289. data/spec/models/edu_resource_folder_spec.rb +0 -36
  290. data/spec/models/edu_resource_lti_link_spec.rb +0 -36
  291. data/spec/models/edu_resource_move_spec.rb +0 -36
  292. data/spec/models/edu_resource_privacy_spec.rb +0 -30
  293. data/spec/models/edu_resource_resource_spec.rb +0 -32
  294. data/spec/models/edu_resource_spec.rb +0 -96
  295. data/spec/models/edu_resource_type_spec.rb +0 -30
  296. data/spec/models/edu_resource_update_spec.rb +0 -42
  297. data/spec/models/edu_resource_use_in_class_spec.rb +0 -42
  298. data/spec/models/flat_error_response_spec.rb +0 -54
  299. data/spec/models/flat_locales_spec.rb +0 -30
  300. data/spec/models/google_classroom_coursework_spec.rb +0 -54
  301. data/spec/models/google_classroom_submission_spec.rb +0 -48
  302. data/spec/models/group_details_spec.rb +0 -72
  303. data/spec/models/group_spec.rb +0 -76
  304. data/spec/models/group_type_spec.rb +0 -30
  305. data/spec/models/license_mode_spec.rb +0 -30
  306. data/spec/models/license_sources_spec.rb +0 -30
  307. data/spec/models/lms_name_spec.rb +0 -30
  308. data/spec/models/lti_credentials_creation_spec.rb +0 -42
  309. data/spec/models/lti_credentials_spec.rb +0 -84
  310. data/spec/models/media_attachment_spec.rb +0 -166
  311. data/spec/models/media_score_sharing_mode_spec.rb +0 -30
  312. data/spec/models/microsoft_graph_assignment_spec.rb +0 -54
  313. data/spec/models/microsoft_graph_submission_spec.rb +0 -42
  314. data/spec/models/organization_invitation_creation_spec.rb +0 -46
  315. data/spec/models/organization_invitation_spec.rb +0 -84
  316. data/spec/models/organization_roles_spec.rb +0 -30
  317. data/spec/models/organization_user_access_token_creation_spec.rb +0 -36
  318. data/spec/models/resource_collaborator_creation_spec.rb +0 -72
  319. data/spec/models/resource_collaborator_spec.rb +0 -112
  320. data/spec/models/resource_rights_spec.rb +0 -64
  321. data/spec/models/score_comment_context_spec.rb +0 -78
  322. data/spec/models/score_comment_creation_spec.rb +0 -66
  323. data/spec/models/score_comment_moderation_spec.rb +0 -46
  324. data/spec/models/score_comment_spec.rb +0 -130
  325. data/spec/models/score_comment_update_spec.rb +0 -54
  326. data/spec/models/score_comments_counts_spec.rb +0 -54
  327. data/spec/models/score_creation_builder_data_all_of_builder_data_layout_data_spec.rb +0 -82
  328. data/spec/models/score_creation_builder_data_all_of_builder_data_score_data_instruments_spec.rb +0 -60
  329. data/spec/models/score_creation_builder_data_all_of_builder_data_score_data_spec.rb +0 -66
  330. data/spec/models/score_creation_builder_data_all_of_builder_data_spec.rb +0 -42
  331. data/spec/models/score_creation_builder_data_spec.rb +0 -60
  332. data/spec/models/score_creation_common_spec.rb +0 -54
  333. data/spec/models/score_creation_file_import_spec.rb +0 -76
  334. data/spec/models/score_creation_google_drive_import_spec.rb +0 -60
  335. data/spec/models/score_creation_spec.rb +0 -32
  336. data/spec/models/score_creation_type_spec.rb +0 -30
  337. data/spec/models/score_details_spec.rb +0 -240
  338. data/spec/models/score_fork_spec.rb +0 -48
  339. data/spec/models/score_license_spec.rb +0 -30
  340. data/spec/models/score_likes_counts_spec.rb +0 -48
  341. data/spec/models/score_modification_spec.rb +0 -102
  342. data/spec/models/score_plays_counts_spec.rb +0 -48
  343. data/spec/models/score_privacy_spec.rb +0 -30
  344. data/spec/models/score_revision_creation_spec.rb +0 -58
  345. data/spec/models/score_revision_spec.rb +0 -78
  346. data/spec/models/score_revision_statistics_spec.rb +0 -54
  347. data/spec/models/score_source_spec.rb +0 -36
  348. data/spec/models/score_summary_spec.rb +0 -66
  349. data/spec/models/score_track_creation_spec.rb +0 -66
  350. data/spec/models/score_track_point_spec.rb +0 -52
  351. data/spec/models/score_track_purpose_spec.rb +0 -30
  352. data/spec/models/score_track_spec.rb +0 -108
  353. data/spec/models/score_track_state_spec.rb +0 -30
  354. data/spec/models/score_track_type_spec.rb +0 -30
  355. data/spec/models/score_track_update_spec.rb +0 -54
  356. data/spec/models/score_views_counts_spec.rb +0 -48
  357. data/spec/models/task_export_options_spec.rb +0 -36
  358. data/spec/models/task_progress_spec.rb +0 -42
  359. data/spec/models/task_result_spec.rb +0 -42
  360. data/spec/models/task_spec.rb +0 -100
  361. data/spec/models/tutteo_product_spec.rb +0 -30
  362. data/spec/models/user_admin_update_spec.rb +0 -66
  363. data/spec/models/user_azure_details_spec.rb +0 -48
  364. data/spec/models/user_basics_spec.rb +0 -94
  365. data/spec/models/user_community_profile_links_spec.rb +0 -66
  366. data/spec/models/user_creation_spec.rb +0 -76
  367. data/spec/models/user_details_admin_all_of_license_spec.rb +0 -60
  368. data/spec/models/user_details_admin_spec.rb +0 -142
  369. data/spec/models/user_details_spec.rb +0 -214
  370. data/spec/models/user_public_spec.rb +0 -178
  371. data/spec/models/user_public_summary_spec.rb +0 -118
  372. data/spec/models/user_signin_link_creation_spec.rb +0 -36
  373. data/spec/models/user_signin_link_spec.rb +0 -42
  374. data/spec/spec_helper.rb +0 -111
@@ -1,12 +1,12 @@
1
1
  =begin
2
2
  #Flat API
3
3
 
4
- #The Flat API allows you to easily extend the abilities of the [Flat Platform](https://flat.io), with a wide range of use cases including the following: * Creating and importing new music scores using MusicXML, MIDI, Guitar Pro (GP3, GP4, GP5, GPX, GP), PowerTab, TuxGuitar and MuseScore files * Browsing, updating, copying, exporting the user's scores (for example in MP3, WAV or MIDI) * Managing educational resources with Flat for Education: creating & updating the organization accounts, the classes, rosters and assignments. The Flat API is built on HTTP. Our API is RESTful It has predictable resource URLs. It returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. The [schema](/swagger.yaml) of this API follows the [OpenAPI Initiative (OAI) specification](https://www.openapis.org/), you can use and work with [compatible Swagger tools](http://swagger.io/open-source-integrations/). This API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/). You can use your favorite HTTP/REST library for your programming language to use Flat's API. This specification and reference is [available on Github](https://github.com/FlatIO/api-reference). Getting Started and learn more: * [API Overview and introduction](https://flat.io/developers/docs/api/) * [Authentication (Personal Access Tokens or OAuth2)](https://flat.io/developers/docs/api/authentication.html) * [SDKs](https://flat.io/developers/docs/api/sdks.html) * [Rate Limits](https://flat.io/developers/docs/api/rate-limits.html) * [Changelog](https://flat.io/developers/docs/api/changelog.html)
4
+ #The Flat API allows you to easily extend the abilities of the [Flat Platform](https://flat.io), with a wide range of use cases including the following: * Creating and importing new music scores using MusicXML, MIDI, Guitar Pro, MuseScore, ABC notation, and many other formats * Browsing, updating, copying, exporting the user's scores (for example in MP3, WAV or MIDI) * Managing educational resources with Flat for Education: creating & updating the organization accounts, the classes, rosters and assignments. The Flat API is built on HTTP. Our API is RESTful It has predictable resource URLs. It returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. The [schema](/swagger.yaml) of this API follows the [OpenAPI Initiative (OAI) specification](https://www.openapis.org/), you can use and work with [compatible Swagger tools](http://swagger.io/open-source-integrations/). This API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/). You can use your favorite HTTP/REST library for your programming language to use Flat's API. This specification and reference is [available on Github](https://github.com/FlatIO/api-reference). Getting Started and learn more: * [API Overview and introduction](https://flat.io/developers/docs/api/) * [Authentication (Personal Access Tokens or OAuth2)](https://flat.io/developers/docs/api/authentication.html) * [SDKs](https://flat.io/developers/docs/api/sdks.html) * [Rate Limits](https://flat.io/developers/docs/api/rate-limits.html) * [Changelog](https://flat.io/developers/docs/api/changelog.html)
5
5
 
6
- The version of the OpenAPI document: 2.20.0
6
+ The version of the OpenAPI document: 2.26.1
7
7
  Contact: developers@flat.io
8
8
  Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 7.3.0
9
+ Generator version: 7.24.0
10
10
 
11
11
  =end
12
12
 
@@ -43,7 +43,7 @@ module FlatApi
43
43
  fail ArgumentError, "Missing the required parameter 'task' when calling TaskApi.get_task"
44
44
  end
45
45
  # resource path
46
- local_var_path = '/tasks/{task}'.sub('{' + 'task' + '}', CGI.escape(task.to_s))
46
+ local_var_path = '/tasks/{task}'.sub('{task}', CGI.escape(task.to_s))
47
47
 
48
48
  # query parameters
49
49
  query_params = opts[:query_params] || {}
@@ -51,7 +51,7 @@ module FlatApi
51
51
  # header parameters
52
52
  header_params = opts[:header_params] || {}
53
53
  # HTTP header 'Accept' (if needed)
54
- header_params['Accept'] = @api_client.select_header_accept(['application/json'])
54
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
55
55
 
56
56
  # form parameters
57
57
  form_params = opts[:form_params] || {}
@@ -1,12 +1,12 @@
1
1
  =begin
2
2
  #Flat API
3
3
 
4
- #The Flat API allows you to easily extend the abilities of the [Flat Platform](https://flat.io), with a wide range of use cases including the following: * Creating and importing new music scores using MusicXML, MIDI, Guitar Pro (GP3, GP4, GP5, GPX, GP), PowerTab, TuxGuitar and MuseScore files * Browsing, updating, copying, exporting the user's scores (for example in MP3, WAV or MIDI) * Managing educational resources with Flat for Education: creating & updating the organization accounts, the classes, rosters and assignments. The Flat API is built on HTTP. Our API is RESTful It has predictable resource URLs. It returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. The [schema](/swagger.yaml) of this API follows the [OpenAPI Initiative (OAI) specification](https://www.openapis.org/), you can use and work with [compatible Swagger tools](http://swagger.io/open-source-integrations/). This API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/). You can use your favorite HTTP/REST library for your programming language to use Flat's API. This specification and reference is [available on Github](https://github.com/FlatIO/api-reference). Getting Started and learn more: * [API Overview and introduction](https://flat.io/developers/docs/api/) * [Authentication (Personal Access Tokens or OAuth2)](https://flat.io/developers/docs/api/authentication.html) * [SDKs](https://flat.io/developers/docs/api/sdks.html) * [Rate Limits](https://flat.io/developers/docs/api/rate-limits.html) * [Changelog](https://flat.io/developers/docs/api/changelog.html)
4
+ #The Flat API allows you to easily extend the abilities of the [Flat Platform](https://flat.io), with a wide range of use cases including the following: * Creating and importing new music scores using MusicXML, MIDI, Guitar Pro, MuseScore, ABC notation, and many other formats * Browsing, updating, copying, exporting the user's scores (for example in MP3, WAV or MIDI) * Managing educational resources with Flat for Education: creating & updating the organization accounts, the classes, rosters and assignments. The Flat API is built on HTTP. Our API is RESTful It has predictable resource URLs. It returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. The [schema](/swagger.yaml) of this API follows the [OpenAPI Initiative (OAI) specification](https://www.openapis.org/), you can use and work with [compatible Swagger tools](http://swagger.io/open-source-integrations/). This API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/). You can use your favorite HTTP/REST library for your programming language to use Flat's API. This specification and reference is [available on Github](https://github.com/FlatIO/api-reference). Getting Started and learn more: * [API Overview and introduction](https://flat.io/developers/docs/api/) * [Authentication (Personal Access Tokens or OAuth2)](https://flat.io/developers/docs/api/authentication.html) * [SDKs](https://flat.io/developers/docs/api/sdks.html) * [Rate Limits](https://flat.io/developers/docs/api/rate-limits.html) * [Changelog](https://flat.io/developers/docs/api/changelog.html)
5
5
 
6
- The version of the OpenAPI document: 2.20.0
6
+ The version of the OpenAPI document: 2.26.1
7
7
  Contact: developers@flat.io
8
8
  Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 7.3.0
9
+ Generator version: 7.24.0
10
10
 
11
11
  =end
12
12
 
@@ -43,7 +43,7 @@ module FlatApi
43
43
  fail ArgumentError, "Missing the required parameter 'user' when calling UserApi.get_user"
44
44
  end
45
45
  # resource path
46
- local_var_path = '/users/{user}'.sub('{' + 'user' + '}', CGI.escape(user.to_s))
46
+ local_var_path = '/users/{user}'.sub('{user}', CGI.escape(user.to_s))
47
47
 
48
48
  # query parameters
49
49
  query_params = opts[:query_params] || {}
@@ -51,7 +51,7 @@ module FlatApi
51
51
  # header parameters
52
52
  header_params = opts[:header_params] || {}
53
53
  # HTTP header 'Accept' (if needed)
54
- header_params['Accept'] = @api_client.select_header_accept(['application/json'])
54
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
55
55
 
56
56
  # form parameters
57
57
  form_params = opts[:form_params] || {}
@@ -120,7 +120,7 @@ module FlatApi
120
120
  end
121
121
 
122
122
  # resource path
123
- local_var_path = '/users/{user}/likes'.sub('{' + 'user' + '}', CGI.escape(user.to_s))
123
+ local_var_path = '/users/{user}/likes'.sub('{user}', CGI.escape(user.to_s))
124
124
 
125
125
  # query parameters
126
126
  query_params = opts[:query_params] || {}
@@ -132,7 +132,7 @@ module FlatApi
132
132
  # header parameters
133
133
  header_params = opts[:header_params] || {}
134
134
  # HTTP header 'Accept' (if needed)
135
- header_params['Accept'] = @api_client.select_header_accept(['application/json'])
135
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
136
136
 
137
137
  # form parameters
138
138
  form_params = opts[:form_params] || {}
@@ -164,10 +164,15 @@ module FlatApi
164
164
  end
165
165
 
166
166
  # List user's scores
167
- # Get the list of public scores owned by a User. **DEPRECATED**: Please note that the current behavior will be deprecrated on **2019-01-01**. This method will no longer list private and shared scores, but only public scores of a Flat account. If you want to access to private scores, please use the [Collections API](#tag/Collection) instead.
167
+ # Get the list of public scores owned by a User. If you want to access to private scores, please use the [Collections API](#tag/Collection). For example `GET /v2/collections/allScores/scores` to list all recently updated scores.
168
168
  # @param user [String] Unique identifier of a Flat user. If you authenticated, you can use `me` to refer to the current user.
169
169
  # @param [Hash] opts the optional parameters
170
- # @option opts [String] :parent Filter the score forked from the score id `parent`
170
+ # @option opts [Boolean] :paginate When set to `true`, the API will return a paginated result. When set to `false` or unset, the API will return all the scores. If this parameter is unset or false, then limit/sort/direction/next/previous will be ignored. (default to false)
171
+ # @option opts [String] :sort Sort
172
+ # @option opts [String] :direction Sort direction
173
+ # @option opts [Integer] :limit This is the maximum number of objects that may be returned (default to 25)
174
+ # @option opts [String] :_next An opaque string cursor to fetch the next page of data. The paginated API URLs are returned in the `Link` header when requesting the API. These URLs will contain a `next` and `previous` cursor based on the available data.
175
+ # @option opts [String] :previous An opaque string cursor to fetch the previous page of data. The paginated API URLs are returned in the `Link` header when requesting the API. These URLs will contain a `next` and `previous` cursor based on the available data.
171
176
  # @return [Array<ScoreDetails>]
172
177
  def get_user_scores(user, opts = {})
173
178
  data, _status_code, _headers = get_user_scores_with_http_info(user, opts)
@@ -175,10 +180,15 @@ module FlatApi
175
180
  end
176
181
 
177
182
  # List user&#39;s scores
178
- # Get the list of public scores owned by a User. **DEPRECATED**: Please note that the current behavior will be deprecrated on **2019-01-01**. This method will no longer list private and shared scores, but only public scores of a Flat account. If you want to access to private scores, please use the [Collections API](#tag/Collection) instead.
183
+ # Get the list of public scores owned by a User. If you want to access to private scores, please use the [Collections API](#tag/Collection). For example &#x60;GET /v2/collections/allScores/scores&#x60; to list all recently updated scores.
179
184
  # @param user [String] Unique identifier of a Flat user. If you authenticated, you can use &#x60;me&#x60; to refer to the current user.
180
185
  # @param [Hash] opts the optional parameters
181
- # @option opts [String] :parent Filter the score forked from the score id &#x60;parent&#x60;
186
+ # @option opts [Boolean] :paginate When set to &#x60;true&#x60;, the API will return a paginated result. When set to &#x60;false&#x60; or unset, the API will return all the scores. If this parameter is unset or false, then limit/sort/direction/next/previous will be ignored. (default to false)
187
+ # @option opts [String] :sort Sort
188
+ # @option opts [String] :direction Sort direction
189
+ # @option opts [Integer] :limit This is the maximum number of objects that may be returned (default to 25)
190
+ # @option opts [String] :_next An opaque string cursor to fetch the next page of data. The paginated API URLs are returned in the &#x60;Link&#x60; header when requesting the API. These URLs will contain a &#x60;next&#x60; and &#x60;previous&#x60; cursor based on the available data.
191
+ # @option opts [String] :previous An opaque string cursor to fetch the previous page of data. The paginated API URLs are returned in the &#x60;Link&#x60; header when requesting the API. These URLs will contain a &#x60;next&#x60; and &#x60;previous&#x60; cursor based on the available data.
182
192
  # @return [Array<(Array<ScoreDetails>, Integer, Hash)>] Array<ScoreDetails> data, response status code and response headers
183
193
  def get_user_scores_with_http_info(user, opts = {})
184
194
  if @api_client.config.debugging
@@ -188,17 +198,38 @@ module FlatApi
188
198
  if @api_client.config.client_side_validation && user.nil?
189
199
  fail ArgumentError, "Missing the required parameter 'user' when calling UserApi.get_user_scores"
190
200
  end
201
+ allowable_values = ["creationDate", "modificationDate", "title"]
202
+ if @api_client.config.client_side_validation && opts[:'sort'] && !allowable_values.include?(opts[:'sort'])
203
+ fail ArgumentError, "invalid value for \"sort\", must be one of #{allowable_values}"
204
+ end
205
+ allowable_values = ["asc", "desc"]
206
+ if @api_client.config.client_side_validation && opts[:'direction'] && !allowable_values.include?(opts[:'direction'])
207
+ fail ArgumentError, "invalid value for \"direction\", must be one of #{allowable_values}"
208
+ end
209
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 100
210
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling UserApi.get_user_scores, must be smaller than or equal to 100.'
211
+ end
212
+
213
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
214
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling UserApi.get_user_scores, must be greater than or equal to 1.'
215
+ end
216
+
191
217
  # resource path
192
- local_var_path = '/users/{user}/scores'.sub('{' + 'user' + '}', CGI.escape(user.to_s))
218
+ local_var_path = '/users/{user}/scores'.sub('{user}', CGI.escape(user.to_s))
193
219
 
194
220
  # query parameters
195
221
  query_params = opts[:query_params] || {}
196
- query_params[:'parent'] = opts[:'parent'] if !opts[:'parent'].nil?
222
+ query_params[:'paginate'] = opts[:'paginate'] if !opts[:'paginate'].nil?
223
+ query_params[:'sort'] = opts[:'sort'] if !opts[:'sort'].nil?
224
+ query_params[:'direction'] = opts[:'direction'] if !opts[:'direction'].nil?
225
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
226
+ query_params[:'next'] = opts[:'_next'] if !opts[:'_next'].nil?
227
+ query_params[:'previous'] = opts[:'previous'] if !opts[:'previous'].nil?
197
228
 
198
229
  # header parameters
199
230
  header_params = opts[:header_params] || {}
200
231
  # HTTP header 'Accept' (if needed)
201
- header_params['Accept'] = @api_client.select_header_accept(['application/json'])
232
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
202
233
 
203
234
  # form parameters
204
235
  form_params = opts[:form_params] || {}
@@ -1,12 +1,12 @@
1
1
  =begin
2
2
  #Flat API
3
3
 
4
- #The Flat API allows you to easily extend the abilities of the [Flat Platform](https://flat.io), with a wide range of use cases including the following: * Creating and importing new music scores using MusicXML, MIDI, Guitar Pro (GP3, GP4, GP5, GPX, GP), PowerTab, TuxGuitar and MuseScore files * Browsing, updating, copying, exporting the user's scores (for example in MP3, WAV or MIDI) * Managing educational resources with Flat for Education: creating & updating the organization accounts, the classes, rosters and assignments. The Flat API is built on HTTP. Our API is RESTful It has predictable resource URLs. It returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. The [schema](/swagger.yaml) of this API follows the [OpenAPI Initiative (OAI) specification](https://www.openapis.org/), you can use and work with [compatible Swagger tools](http://swagger.io/open-source-integrations/). This API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/). You can use your favorite HTTP/REST library for your programming language to use Flat's API. This specification and reference is [available on Github](https://github.com/FlatIO/api-reference). Getting Started and learn more: * [API Overview and introduction](https://flat.io/developers/docs/api/) * [Authentication (Personal Access Tokens or OAuth2)](https://flat.io/developers/docs/api/authentication.html) * [SDKs](https://flat.io/developers/docs/api/sdks.html) * [Rate Limits](https://flat.io/developers/docs/api/rate-limits.html) * [Changelog](https://flat.io/developers/docs/api/changelog.html)
4
+ #The Flat API allows you to easily extend the abilities of the [Flat Platform](https://flat.io), with a wide range of use cases including the following: * Creating and importing new music scores using MusicXML, MIDI, Guitar Pro, MuseScore, ABC notation, and many other formats * Browsing, updating, copying, exporting the user's scores (for example in MP3, WAV or MIDI) * Managing educational resources with Flat for Education: creating & updating the organization accounts, the classes, rosters and assignments. The Flat API is built on HTTP. Our API is RESTful It has predictable resource URLs. It returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. The [schema](/swagger.yaml) of this API follows the [OpenAPI Initiative (OAI) specification](https://www.openapis.org/), you can use and work with [compatible Swagger tools](http://swagger.io/open-source-integrations/). This API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/). You can use your favorite HTTP/REST library for your programming language to use Flat's API. This specification and reference is [available on Github](https://github.com/FlatIO/api-reference). Getting Started and learn more: * [API Overview and introduction](https://flat.io/developers/docs/api/) * [Authentication (Personal Access Tokens or OAuth2)](https://flat.io/developers/docs/api/authentication.html) * [SDKs](https://flat.io/developers/docs/api/sdks.html) * [Rate Limits](https://flat.io/developers/docs/api/rate-limits.html) * [Changelog](https://flat.io/developers/docs/api/changelog.html)
5
5
 
6
- The version of the OpenAPI document: 2.20.0
6
+ The version of the OpenAPI document: 2.26.1
7
7
  Contact: developers@flat.io
8
8
  Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 7.3.0
9
+ Generator version: 7.24.0
10
10
 
11
11
  =end
12
12
 
@@ -15,7 +15,9 @@ require 'json'
15
15
  require 'logger'
16
16
  require 'tempfile'
17
17
  require 'time'
18
- require 'typhoeus'
18
+ require 'faraday'
19
+ require 'faraday/multipart' if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new('2.0')
20
+ require 'marcel'
19
21
 
20
22
 
21
23
  module FlatApi
@@ -32,7 +34,7 @@ module FlatApi
32
34
  # @option config [Configuration] Configuration for initializing the object, default to Configuration.default
33
35
  def initialize(config = Configuration.default)
34
36
  @config = config
35
- @user_agent = "OpenAPI-Generator/#{VERSION}/ruby"
37
+ @user_agent = "Flat-SDK-Ruby/#{FlatApi::VERSION} (ruby/#{RUBY_VERSION})"
36
38
  @default_headers = {
37
39
  'Content-Type' => 'application/json',
38
40
  'User-Agent' => @user_agent
@@ -46,39 +48,71 @@ module FlatApi
46
48
  # Call an API with given options.
47
49
  #
48
50
  # @return [Array<(Object, Integer, Hash)>] an array of 3 elements:
49
- # the data deserialized from response body (may be a Tempfile or nil), response status code and response headers.
51
+ # the data deserialized from response body (could be nil), response status code and response headers.
52
+ # BEGIN retry wrapper (tools/patches/20_errors.py)
53
+ # Every request goes through the retry policy, which is why it wraps call_api_once rather
54
+ # than living in each of the generated methods. The decision needs the typed error and not the
55
+ # status code: Flat returns 403 both for rate limiting and for a genuine authorization failure,
56
+ # and only the response body's +code+ separates them. See RetryPolicy.
50
57
  def call_api(http_method, path, opts = {})
51
- request = build_request(http_method, path, opts)
52
- tempfile = download_file(request) if opts[:return_type] == 'File'
53
- response = request.run
58
+ policy = @config.retry_policy || RetryPolicy.disabled
59
+ attempt = 0
54
60
 
55
- if @config.debugging
56
- @config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
61
+ begin
62
+ attempt += 1
63
+ call_api_once(http_method, path, opts)
64
+ rescue StandardError => e
65
+ raise unless policy.should_retry?(e, http_method, attempt)
66
+
67
+ sleep(policy.delay_for(e, attempt))
68
+ retry
57
69
  end
70
+ end
71
+ # END retry wrapper (tools/patches/20_errors.py)
58
72
 
59
- unless response.success?
60
- if response.timed_out?
61
- fail ApiError.new('Connection timed out')
62
- elsif response.code == 0
63
- # Errors from libcurl will be made visible here
64
- fail ApiError.new(:code => 0,
65
- :message => response.return_message)
66
- else
67
- fail ApiError.new(:code => response.code,
68
- :response_headers => response.headers,
69
- :response_body => response.body),
70
- response.status_message
73
+ def call_api_once(http_method, path, opts = {})
74
+ stream = nil
75
+ begin
76
+ response = connection(opts).public_send(http_method.to_sym.downcase) do |req|
77
+ request = build_request(http_method, path, req, opts)
78
+ stream = download_file(request) if opts[:return_type] == 'File' || opts[:return_type] == 'Binary'
79
+ end
80
+
81
+ if config.debugging
82
+ config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
83
+ end
84
+
85
+ unless response.success?
86
+ if response.status == 0 && response.respond_to?(:return_message)
87
+ # Errors from libcurl will be made visible here
88
+ fail ApiError.new(code: 0,
89
+ message: response.return_message)
90
+ else
91
+ fail FlatApi.error_from_response(
92
+ response.status,
93
+ (begin
94
+ JSON.parse(response.body)
95
+ rescue StandardError
96
+ response.body
97
+ end),
98
+ response.headers || {}
99
+ )
100
+ end
71
101
  end
102
+ rescue Faraday::TimeoutError
103
+ fail ApiError.new('Connection timed out')
104
+ rescue Faraday::ConnectionFailed
105
+ fail ApiError.new('Connection failed')
72
106
  end
73
107
 
74
- if opts[:return_type] == 'File'
75
- data = tempfile
108
+ if opts[:return_type] == 'File' || opts[:return_type] == 'Binary'
109
+ data = deserialize_file(response, stream)
76
110
  elsif opts[:return_type]
77
111
  data = deserialize(response, opts[:return_type])
78
112
  else
79
113
  data = nil
80
114
  end
81
- return data, response.code, response.headers
115
+ return data, response.status, response.headers
82
116
  end
83
117
 
84
118
  # Builds the HTTP request
@@ -89,47 +123,33 @@ module FlatApi
89
123
  # @option opts [Hash] :query_params Query parameters
90
124
  # @option opts [Hash] :form_params Query parameters
91
125
  # @option opts [Object] :body HTTP body (JSON/XML)
92
- # @return [Typhoeus::Request] A Typhoeus Request
93
- def build_request(http_method, path, opts = {})
126
+ # @return [Faraday::Request] A Faraday Request
127
+ def build_request(http_method, path, request, opts = {})
94
128
  url = build_request_url(path, opts)
95
129
  http_method = http_method.to_sym.downcase
96
130
 
97
131
  header_params = @default_headers.merge(opts[:header_params] || {})
98
132
  query_params = opts[:query_params] || {}
99
133
  form_params = opts[:form_params] || {}
100
- follow_location = opts[:follow_location] || true
101
134
 
102
135
  update_params_for_auth! header_params, query_params, opts[:auth_names]
103
136
 
104
- # set ssl_verifyhosts option based on @config.verify_ssl_host (true/false)
105
- _verify_ssl_host = @config.verify_ssl_host ? 2 : 0
106
-
107
- req_opts = {
108
- :method => http_method,
109
- :headers => header_params,
110
- :params => query_params,
111
- :params_encoding => @config.params_encoding,
112
- :timeout => @config.timeout,
113
- :ssl_verifypeer => @config.verify_ssl,
114
- :ssl_verifyhost => _verify_ssl_host,
115
- :sslcert => @config.cert_file,
116
- :sslkey => @config.key_file,
117
- :verbose => @config.debugging,
118
- :followlocation => follow_location
119
- }
120
-
121
- # set custom cert, if provided
122
- req_opts[:cainfo] = @config.ssl_ca_cert if @config.ssl_ca_cert
123
-
124
137
  if [:post, :patch, :put, :delete].include?(http_method)
125
138
  req_body = build_request_body(header_params, form_params, opts[:body])
126
- req_opts.update :body => req_body
127
- if @config.debugging
128
- @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
139
+ if config.debugging
140
+ config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
129
141
  end
130
142
  end
143
+ request.headers = header_params
144
+ request.body = req_body
145
+
146
+ # Overload default options only if provided
147
+ request.options.params_encoder = config.params_encoder if config.params_encoder
148
+ request.options.timeout = config.timeout if config.timeout
131
149
 
132
- Typhoeus::Request.new(url, req_opts)
150
+ request.url url
151
+ request.params = query_params
152
+ request
133
153
  end
134
154
 
135
155
  # Builds the HTTP request body
@@ -140,13 +160,16 @@ module FlatApi
140
160
  # @return [String] HTTP body data in the form of string
141
161
  def build_request_body(header_params, form_params, body)
142
162
  # http form
143
- if header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
144
- header_params['Content-Type'] == 'multipart/form-data'
163
+ if header_params['Content-Type'] == 'application/x-www-form-urlencoded'
164
+ data = URI.encode_www_form(form_params)
165
+ elsif header_params['Content-Type'] == 'multipart/form-data'
145
166
  data = {}
146
167
  form_params.each do |key, value|
147
168
  case value
148
- when ::File, ::Array, nil
149
- # let typhoeus handle File, Array and nil parameters
169
+ when ::File, ::Tempfile
170
+ data[key] = Faraday::FilePart.new(value.path, Marcel::MimeType.for(Pathname.new(value.path)))
171
+ when ::Array, nil
172
+ # let Faraday handle Array and nil parameters
150
173
  data[key] = value
151
174
  else
152
175
  data[key] = value.to_s
@@ -160,49 +183,95 @@ module FlatApi
160
183
  data
161
184
  end
162
185
 
163
- # Save response body into a file in (the defined) temporary folder, using the filename
164
- # from the "Content-Disposition" header if provided, otherwise a random filename.
165
- # The response body is written to the file in chunks in order to handle files which
166
- # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
167
- # process can use.
168
- #
169
- # @see Configuration#temp_folder_path
170
- #
171
- # @return [Tempfile] the tempfile generated
172
186
  def download_file(request)
173
- tempfile = nil
174
- encoding = nil
175
- request.on_headers do |response|
176
- content_disposition = response.headers['Content-Disposition']
177
- if content_disposition && content_disposition =~ /filename=/i
178
- filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
179
- prefix = sanitize_filename(filename)
180
- else
181
- prefix = 'download-'
182
- end
183
- prefix = prefix + '-' unless prefix.end_with?('-')
184
- encoding = response.body.encoding
185
- tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
186
- end
187
- request.on_body do |chunk|
188
- chunk.force_encoding(encoding)
189
- tempfile.write(chunk)
187
+ stream = []
188
+
189
+ # handle streaming Responses
190
+ request.options.on_data = Proc.new do |chunk, overall_received_bytes|
191
+ stream << chunk
190
192
  end
191
- # run the request to ensure the tempfile is created successfully before returning it
192
- request.run
193
- if tempfile
194
- tempfile.close
195
- @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
196
- "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
197
- "will be deleted automatically with GC. It's also recommended to delete the temp file "\
198
- "explicitly with `tempfile.delete`"
193
+
194
+ stream
195
+ end
196
+
197
+ def deserialize_file(response, stream)
198
+ body = response.body
199
+ encoding = body.encoding
200
+
201
+ # reconstruct content
202
+ content = stream.join
203
+ content = content.unpack('m').join if response.headers['Content-Transfer-Encoding'] == 'binary'
204
+ content = content.force_encoding(encoding)
205
+
206
+ # return byte stream
207
+ return content if @config.return_binary_data == true
208
+
209
+ # return file instead of binary data
210
+ content_disposition = response.headers['Content-Disposition']
211
+ if content_disposition && content_disposition =~ /filename=/i
212
+ filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
213
+ prefix = sanitize_filename(filename)
199
214
  else
200
- fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
215
+ prefix = 'download-'
201
216
  end
217
+ prefix = prefix + '-' unless prefix.end_with?('-')
202
218
 
219
+ tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
220
+ tempfile.write(content)
221
+ tempfile.close
222
+
223
+ config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
224
+ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
225
+ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
226
+ "explicitly with `tempfile.delete`"
203
227
  tempfile
204
228
  end
205
229
 
230
+ def connection(opts)
231
+ opts[:header_params]['Content-Type'] == 'multipart/form-data' ? connection_multipart : connection_regular
232
+ end
233
+
234
+ def connection_multipart
235
+ @connection_multipart ||= build_connection do |conn|
236
+ conn.request :multipart
237
+ conn.request :url_encoded
238
+ end
239
+ end
240
+
241
+ def connection_regular
242
+ @connection_regular ||= build_connection
243
+ end
244
+
245
+ def build_connection
246
+ Faraday.new(url: config.base_url, ssl: ssl_options, proxy: config.proxy) do |conn|
247
+ basic_auth(conn)
248
+ config.configure_middleware(conn)
249
+ yield(conn) if block_given?
250
+ conn.adapter(Faraday.default_adapter)
251
+ config.configure_connection(conn)
252
+ end
253
+ end
254
+
255
+ def ssl_options
256
+ {
257
+ ca_file: config.ssl_ca_file,
258
+ verify: config.ssl_verify,
259
+ verify_mode: config.ssl_verify_mode,
260
+ client_cert: config.ssl_client_cert,
261
+ client_key: config.ssl_client_key
262
+ }
263
+ end
264
+
265
+ def basic_auth(conn)
266
+ if config.username && config.password
267
+ if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new('2.0')
268
+ conn.request(:authorization, :basic, config.username, config.password)
269
+ else
270
+ conn.request(:basic_auth, config.username, config.password)
271
+ end
272
+ end
273
+ end
274
+
206
275
  # Check if the given MIME is a JSON MIME.
207
276
  # JSON MIME examples:
208
277
  # application/json
@@ -212,7 +281,7 @@ module FlatApi
212
281
  # @param [String] mime MIME
213
282
  # @return [Boolean] True if the MIME is application/json
214
283
  def json_mime?(mime)
215
- (mime == '*/*') || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
284
+ (mime == '*/*') || !(mime =~ /^Application\/.*json(?!p)(;.*)?/i).nil?
216
285
  end
217
286
 
218
287
  # Deserialize the response to the given return type.
@@ -279,9 +348,13 @@ module FlatApi
279
348
  data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
280
349
  end
281
350
  else
282
- # models (e.g. Pet) or oneOf
351
+ # models (e.g. Pet) or oneOf/anyOf
283
352
  klass = FlatApi.const_get(return_type)
284
- klass.respond_to?(:openapi_one_of) ? klass.build(data) : klass.build_from_hash(data)
353
+ if klass.respond_to?(:openapi_one_of) || klass.respond_to?(:openapi_any_of)
354
+ klass.build(data)
355
+ else
356
+ klass.build_from_hash(data)
357
+ end
285
358
  end
286
359
  end
287
360
 
@@ -291,7 +364,7 @@ module FlatApi
291
364
  # @param [String] filename the filename to be sanitized
292
365
  # @return [String] the sanitized filename
293
366
  def sanitize_filename(filename)
294
- filename.gsub(/.*[\/\\]/, '')
367
+ filename.split(/[\/\\]/).last
295
368
  end
296
369
 
297
370
  def build_request_url(path, opts = {})
@@ -1,12 +1,12 @@
1
1
  =begin
2
2
  #Flat API
3
3
 
4
- #The Flat API allows you to easily extend the abilities of the [Flat Platform](https://flat.io), with a wide range of use cases including the following: * Creating and importing new music scores using MusicXML, MIDI, Guitar Pro (GP3, GP4, GP5, GPX, GP), PowerTab, TuxGuitar and MuseScore files * Browsing, updating, copying, exporting the user's scores (for example in MP3, WAV or MIDI) * Managing educational resources with Flat for Education: creating & updating the organization accounts, the classes, rosters and assignments. The Flat API is built on HTTP. Our API is RESTful It has predictable resource URLs. It returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. The [schema](/swagger.yaml) of this API follows the [OpenAPI Initiative (OAI) specification](https://www.openapis.org/), you can use and work with [compatible Swagger tools](http://swagger.io/open-source-integrations/). This API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/). You can use your favorite HTTP/REST library for your programming language to use Flat's API. This specification and reference is [available on Github](https://github.com/FlatIO/api-reference). Getting Started and learn more: * [API Overview and introduction](https://flat.io/developers/docs/api/) * [Authentication (Personal Access Tokens or OAuth2)](https://flat.io/developers/docs/api/authentication.html) * [SDKs](https://flat.io/developers/docs/api/sdks.html) * [Rate Limits](https://flat.io/developers/docs/api/rate-limits.html) * [Changelog](https://flat.io/developers/docs/api/changelog.html)
4
+ #The Flat API allows you to easily extend the abilities of the [Flat Platform](https://flat.io), with a wide range of use cases including the following: * Creating and importing new music scores using MusicXML, MIDI, Guitar Pro, MuseScore, ABC notation, and many other formats * Browsing, updating, copying, exporting the user's scores (for example in MP3, WAV or MIDI) * Managing educational resources with Flat for Education: creating & updating the organization accounts, the classes, rosters and assignments. The Flat API is built on HTTP. Our API is RESTful It has predictable resource URLs. It returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. The [schema](/swagger.yaml) of this API follows the [OpenAPI Initiative (OAI) specification](https://www.openapis.org/), you can use and work with [compatible Swagger tools](http://swagger.io/open-source-integrations/). This API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/). You can use your favorite HTTP/REST library for your programming language to use Flat's API. This specification and reference is [available on Github](https://github.com/FlatIO/api-reference). Getting Started and learn more: * [API Overview and introduction](https://flat.io/developers/docs/api/) * [Authentication (Personal Access Tokens or OAuth2)](https://flat.io/developers/docs/api/authentication.html) * [SDKs](https://flat.io/developers/docs/api/sdks.html) * [Rate Limits](https://flat.io/developers/docs/api/rate-limits.html) * [Changelog](https://flat.io/developers/docs/api/changelog.html)
5
5
 
6
- The version of the OpenAPI document: 2.20.0
6
+ The version of the OpenAPI document: 2.26.1
7
7
  Contact: developers@flat.io
8
8
  Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 7.3.0
9
+ Generator version: 7.24.0
10
10
 
11
11
  =end
12
12