pulp_deb_client 3.5.0 → 3.5.1

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 (298) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -9
  3. data/docs/AptRepositorySyncURL.md +12 -11
  4. data/docs/AsyncOperationResponse.md +8 -7
  5. data/docs/ContentGenericContentsApi.md +114 -64
  6. data/docs/ContentInstallerFileIndicesApi.md +111 -61
  7. data/docs/ContentInstallerPackagesApi.md +130 -80
  8. data/docs/ContentPackageIndicesApi.md +111 -61
  9. data/docs/ContentPackageReleaseComponentsApi.md +111 -61
  10. data/docs/ContentPackagesApi.md +144 -94
  11. data/docs/ContentReleaseArchitecturesApi.md +109 -59
  12. data/docs/ContentReleaseComponentsApi.md +110 -60
  13. data/docs/ContentReleaseFilesApi.md +111 -61
  14. data/docs/ContentReleasesApi.md +114 -64
  15. data/docs/ContentSourceIndicesApi.md +110 -60
  16. data/docs/ContentSourcePackagesApi.md +137 -87
  17. data/docs/ContentSourceReleaseComponentsApi.md +111 -61
  18. data/docs/ContentSummaryResponse.md +12 -11
  19. data/docs/Copy.md +12 -11
  20. data/docs/DebAptDistribution.md +20 -19
  21. data/docs/DebAptDistributionResponse.md +32 -31
  22. data/docs/DebAptPublication.md +18 -17
  23. data/docs/DebAptPublicationResponse.md +26 -25
  24. data/docs/DebAptRemote.md +64 -63
  25. data/docs/DebAptRemoteResponse.md +64 -63
  26. data/docs/DebAptRemoteResponseHiddenFieldsInner.md +20 -0
  27. data/docs/DebAptRepository.md +22 -21
  28. data/docs/DebAptRepositoryResponse.md +34 -33
  29. data/docs/DebCopyApi.md +30 -14
  30. data/docs/DebGenericContentResponse.md +30 -29
  31. data/docs/DebInstallerFileIndex.md +16 -15
  32. data/docs/DebInstallerFileIndexResponse.md +22 -21
  33. data/docs/DebInstallerPackageResponse.md +88 -87
  34. data/docs/DebPackageIndex.md +16 -15
  35. data/docs/DebPackageIndexResponse.md +22 -21
  36. data/docs/DebPackageReleaseComponent.md +12 -11
  37. data/docs/DebPackageReleaseComponentResponse.md +18 -17
  38. data/docs/DebPackageResponse.md +92 -91
  39. data/docs/DebRelease.md +26 -25
  40. data/docs/DebReleaseArchitecture.md +12 -11
  41. data/docs/DebReleaseArchitectureResponse.md +18 -17
  42. data/docs/DebReleaseComponent.md +12 -11
  43. data/docs/DebReleaseComponentResponse.md +20 -19
  44. data/docs/DebReleaseFile.md +18 -17
  45. data/docs/DebReleaseFileResponse.md +24 -23
  46. data/docs/DebReleaseResponse.md +32 -31
  47. data/docs/DebSourceIndex.md +16 -15
  48. data/docs/DebSourceIndexResponse.md +22 -21
  49. data/docs/DebSourcePackage.md +12 -11
  50. data/docs/DebSourcePackageReleaseComponent.md +12 -11
  51. data/docs/DebSourcePackageReleaseComponentResponse.md +18 -17
  52. data/docs/DebSourcePackageResponse.md +74 -73
  53. data/docs/DebVerbatimPublication.md +10 -9
  54. data/docs/DebVerbatimPublicationResponse.md +18 -17
  55. data/docs/DistributionsAptApi.md +385 -182
  56. data/docs/MyPermissionsResponse.md +8 -7
  57. data/docs/NestedRole.md +12 -11
  58. data/docs/NestedRoleResponse.md +12 -11
  59. data/docs/ObjectRolesResponse.md +8 -7
  60. data/docs/PaginatedRepositoryVersionResponseList.md +14 -13
  61. data/docs/PaginateddebAptDistributionResponseList.md +14 -13
  62. data/docs/PaginateddebAptPublicationResponseList.md +14 -13
  63. data/docs/PaginateddebAptRemoteResponseList.md +14 -13
  64. data/docs/PaginateddebAptRepositoryResponseList.md +14 -13
  65. data/docs/PaginateddebGenericContentResponseList.md +14 -13
  66. data/docs/PaginateddebInstallerFileIndexResponseList.md +14 -13
  67. data/docs/PaginateddebInstallerPackageResponseList.md +14 -13
  68. data/docs/PaginateddebPackageIndexResponseList.md +14 -13
  69. data/docs/PaginateddebPackageReleaseComponentResponseList.md +14 -13
  70. data/docs/PaginateddebPackageResponseList.md +14 -13
  71. data/docs/PaginateddebReleaseArchitectureResponseList.md +14 -13
  72. data/docs/PaginateddebReleaseComponentResponseList.md +14 -13
  73. data/docs/PaginateddebReleaseFileResponseList.md +14 -13
  74. data/docs/PaginateddebReleaseResponseList.md +14 -13
  75. data/docs/PaginateddebSourceIndexResponseList.md +14 -13
  76. data/docs/PaginateddebSourcePackageReleaseComponentResponseList.md +14 -13
  77. data/docs/PaginateddebSourcePackageResponseList.md +14 -13
  78. data/docs/PaginateddebVerbatimPublicationResponseList.md +14 -13
  79. data/docs/PatcheddebAptDistribution.md +20 -19
  80. data/docs/PatcheddebAptRemote.md +64 -63
  81. data/docs/PatcheddebAptRepository.md +22 -21
  82. data/docs/PolicyEnum.md +4 -5
  83. data/docs/PublicationsAptApi.md +267 -130
  84. data/docs/PublicationsVerbatimApi.md +267 -130
  85. data/docs/RemotesAptApi.md +389 -184
  86. data/docs/Repair.md +8 -7
  87. data/docs/RepositoriesAptApi.md +444 -207
  88. data/docs/RepositoriesAptVersionsApi.md +152 -82
  89. data/docs/RepositoryAddRemoveContent.md +12 -11
  90. data/docs/RepositoryVersionResponse.md +22 -21
  91. data/docs/SetLabel.md +10 -9
  92. data/docs/SetLabelResponse.md +10 -9
  93. data/docs/UnsetLabel.md +8 -7
  94. data/docs/UnsetLabelResponse.md +10 -9
  95. data/lib/pulp_deb_client/api/content_generic_contents_api.rb +20 -14
  96. data/lib/pulp_deb_client/api/content_installer_file_indices_api.rb +20 -14
  97. data/lib/pulp_deb_client/api/content_installer_packages_api.rb +20 -22
  98. data/lib/pulp_deb_client/api/content_package_indices_api.rb +20 -14
  99. data/lib/pulp_deb_client/api/content_package_release_components_api.rb +20 -14
  100. data/lib/pulp_deb_client/api/content_packages_api.rb +20 -22
  101. data/lib/pulp_deb_client/api/content_release_architectures_api.rb +20 -14
  102. data/lib/pulp_deb_client/api/content_release_components_api.rb +20 -14
  103. data/lib/pulp_deb_client/api/content_release_files_api.rb +20 -14
  104. data/lib/pulp_deb_client/api/content_releases_api.rb +20 -14
  105. data/lib/pulp_deb_client/api/content_source_indices_api.rb +20 -14
  106. data/lib/pulp_deb_client/api/content_source_packages_api.rb +20 -14
  107. data/lib/pulp_deb_client/api/content_source_release_components_api.rb +20 -14
  108. data/lib/pulp_deb_client/api/deb_copy_api.rb +10 -6
  109. data/lib/pulp_deb_client/api/distributions_apt_api.rb +89 -56
  110. data/lib/pulp_deb_client/api/publications_apt_api.rb +67 -47
  111. data/lib/pulp_deb_client/api/publications_verbatim_api.rb +67 -47
  112. data/lib/pulp_deb_client/api/remotes_apt_api.rb +104 -68
  113. data/lib/pulp_deb_client/api/repositories_apt_api.rb +107 -66
  114. data/lib/pulp_deb_client/api/repositories_apt_versions_api.rb +40 -30
  115. data/lib/pulp_deb_client/api_client.rb +137 -102
  116. data/lib/pulp_deb_client/api_error.rb +2 -1
  117. data/lib/pulp_deb_client/configuration.rb +162 -21
  118. data/lib/pulp_deb_client/models/apt_repository_sync_url.rb +30 -22
  119. data/lib/pulp_deb_client/models/async_operation_response.rb +32 -22
  120. data/lib/pulp_deb_client/models/content_summary_response.rb +36 -22
  121. data/lib/pulp_deb_client/models/copy.rb +34 -28
  122. data/lib/pulp_deb_client/models/deb_apt_distribution.rb +34 -22
  123. data/lib/pulp_deb_client/models/deb_apt_distribution_response.rb +36 -24
  124. data/lib/pulp_deb_client/models/deb_apt_publication.rb +30 -22
  125. data/lib/pulp_deb_client/models/deb_apt_publication_response.rb +32 -24
  126. data/lib/pulp_deb_client/models/deb_apt_remote.rb +58 -22
  127. data/lib/pulp_deb_client/models/deb_apt_remote_response.rb +61 -25
  128. data/lib/pulp_deb_client/models/{deb_apt_remote_response_hidden_fields.rb → deb_apt_remote_response_hidden_fields_inner.rb} +37 -25
  129. data/lib/pulp_deb_client/models/deb_apt_repository.rb +32 -22
  130. data/lib/pulp_deb_client/models/deb_apt_repository_response.rb +34 -24
  131. data/lib/pulp_deb_client/models/deb_generic_content_response.rb +34 -24
  132. data/lib/pulp_deb_client/models/deb_installer_file_index.rb +41 -23
  133. data/lib/pulp_deb_client/models/deb_installer_file_index_response.rb +38 -24
  134. data/lib/pulp_deb_client/models/deb_installer_package_response.rb +32 -24
  135. data/lib/pulp_deb_client/models/deb_package_index.rb +47 -25
  136. data/lib/pulp_deb_client/models/deb_package_index_response.rb +34 -24
  137. data/lib/pulp_deb_client/models/deb_package_release_component.rb +34 -22
  138. data/lib/pulp_deb_client/models/deb_package_release_component_response.rb +36 -24
  139. data/lib/pulp_deb_client/models/deb_package_response.rb +32 -24
  140. data/lib/pulp_deb_client/models/deb_release.rb +36 -22
  141. data/lib/pulp_deb_client/models/deb_release_architecture.rb +34 -22
  142. data/lib/pulp_deb_client/models/deb_release_architecture_response.rb +36 -24
  143. data/lib/pulp_deb_client/models/deb_release_component.rb +34 -22
  144. data/lib/pulp_deb_client/models/deb_release_component_response.rb +36 -24
  145. data/lib/pulp_deb_client/models/deb_release_file.rb +49 -25
  146. data/lib/pulp_deb_client/models/deb_release_file_response.rb +36 -24
  147. data/lib/pulp_deb_client/models/deb_release_response.rb +38 -24
  148. data/lib/pulp_deb_client/models/deb_source_index.rb +41 -23
  149. data/lib/pulp_deb_client/models/deb_source_index_response.rb +38 -24
  150. data/lib/pulp_deb_client/models/deb_source_package.rb +37 -23
  151. data/lib/pulp_deb_client/models/deb_source_package_release_component.rb +34 -22
  152. data/lib/pulp_deb_client/models/deb_source_package_release_component_response.rb +36 -24
  153. data/lib/pulp_deb_client/models/deb_source_package_response.rb +34 -24
  154. data/lib/pulp_deb_client/models/deb_verbatim_publication.rb +30 -22
  155. data/lib/pulp_deb_client/models/deb_verbatim_publication_response.rb +32 -24
  156. data/lib/pulp_deb_client/models/my_permissions_response.rb +32 -22
  157. data/lib/pulp_deb_client/models/nested_role.rb +32 -22
  158. data/lib/pulp_deb_client/models/nested_role_response.rb +32 -22
  159. data/lib/pulp_deb_client/models/object_roles_response.rb +32 -22
  160. data/lib/pulp_deb_client/models/paginated_repository_version_response_list.rb +34 -22
  161. data/lib/pulp_deb_client/models/paginateddeb_apt_distribution_response_list.rb +34 -22
  162. data/lib/pulp_deb_client/models/paginateddeb_apt_publication_response_list.rb +34 -22
  163. data/lib/pulp_deb_client/models/paginateddeb_apt_remote_response_list.rb +34 -22
  164. data/lib/pulp_deb_client/models/paginateddeb_apt_repository_response_list.rb +34 -22
  165. data/lib/pulp_deb_client/models/paginateddeb_generic_content_response_list.rb +34 -22
  166. data/lib/pulp_deb_client/models/paginateddeb_installer_file_index_response_list.rb +34 -22
  167. data/lib/pulp_deb_client/models/paginateddeb_installer_package_response_list.rb +34 -22
  168. data/lib/pulp_deb_client/models/paginateddeb_package_index_response_list.rb +34 -22
  169. data/lib/pulp_deb_client/models/paginateddeb_package_release_component_response_list.rb +34 -22
  170. data/lib/pulp_deb_client/models/paginateddeb_package_response_list.rb +34 -22
  171. data/lib/pulp_deb_client/models/paginateddeb_release_architecture_response_list.rb +34 -22
  172. data/lib/pulp_deb_client/models/paginateddeb_release_component_response_list.rb +34 -22
  173. data/lib/pulp_deb_client/models/paginateddeb_release_file_response_list.rb +34 -22
  174. data/lib/pulp_deb_client/models/paginateddeb_release_response_list.rb +34 -22
  175. data/lib/pulp_deb_client/models/paginateddeb_source_index_response_list.rb +34 -22
  176. data/lib/pulp_deb_client/models/paginateddeb_source_package_release_component_response_list.rb +34 -22
  177. data/lib/pulp_deb_client/models/paginateddeb_source_package_response_list.rb +34 -22
  178. data/lib/pulp_deb_client/models/paginateddeb_verbatim_publication_response_list.rb +34 -22
  179. data/lib/pulp_deb_client/models/patcheddeb_apt_distribution.rb +40 -24
  180. data/lib/pulp_deb_client/models/patcheddeb_apt_remote.rb +67 -25
  181. data/lib/pulp_deb_client/models/patcheddeb_apt_repository.rb +35 -23
  182. data/lib/pulp_deb_client/models/policy_enum.rb +8 -4
  183. data/lib/pulp_deb_client/models/repair.rb +30 -22
  184. data/lib/pulp_deb_client/models/repository_add_remove_content.rb +30 -22
  185. data/lib/pulp_deb_client/models/repository_version_response.rb +32 -24
  186. data/lib/pulp_deb_client/models/set_label.rb +34 -22
  187. data/lib/pulp_deb_client/models/set_label_response.rb +34 -22
  188. data/lib/pulp_deb_client/models/unset_label.rb +32 -22
  189. data/lib/pulp_deb_client/models/unset_label_response.rb +32 -22
  190. data/lib/pulp_deb_client/version.rb +2 -2
  191. data/lib/pulp_deb_client.rb +2 -5
  192. data/pulp_deb_client.gemspec +9 -6
  193. data/spec/api/content_generic_contents_api_spec.rb +4 -4
  194. data/spec/api/content_installer_file_indices_api_spec.rb +4 -4
  195. data/spec/api/content_installer_packages_api_spec.rb +4 -4
  196. data/spec/api/content_package_indices_api_spec.rb +4 -4
  197. data/spec/api/content_package_release_components_api_spec.rb +4 -4
  198. data/spec/api/content_packages_api_spec.rb +4 -4
  199. data/spec/api/content_release_architectures_api_spec.rb +4 -4
  200. data/spec/api/content_release_components_api_spec.rb +4 -4
  201. data/spec/api/content_release_files_api_spec.rb +4 -4
  202. data/spec/api/content_releases_api_spec.rb +4 -4
  203. data/spec/api/content_source_indices_api_spec.rb +4 -4
  204. data/spec/api/content_source_packages_api_spec.rb +4 -4
  205. data/spec/api/content_source_release_components_api_spec.rb +4 -4
  206. data/spec/api/deb_copy_api_spec.rb +2 -2
  207. data/spec/api/distributions_apt_api_spec.rb +13 -13
  208. data/spec/api/publications_apt_api_spec.rb +16 -15
  209. data/spec/api/publications_verbatim_api_spec.rb +16 -15
  210. data/spec/api/remotes_apt_api_spec.rb +20 -19
  211. data/spec/api/repositories_apt_api_spec.rb +15 -15
  212. data/spec/api/repositories_apt_versions_api_spec.rb +12 -11
  213. data/spec/models/apt_repository_sync_url_spec.rb +9 -14
  214. data/spec/models/async_operation_response_spec.rb +7 -12
  215. data/spec/models/content_summary_response_spec.rb +9 -14
  216. data/spec/models/copy_spec.rb +9 -14
  217. data/spec/models/deb_apt_distribution_response_spec.rb +19 -24
  218. data/spec/models/deb_apt_distribution_spec.rb +13 -18
  219. data/spec/models/deb_apt_publication_response_spec.rb +16 -21
  220. data/spec/models/deb_apt_publication_spec.rb +12 -17
  221. data/spec/models/{deb_apt_remote_response_hidden_fields_spec.rb → deb_apt_remote_response_hidden_fields_inner_spec.rb} +11 -16
  222. data/spec/models/deb_apt_remote_response_spec.rb +35 -40
  223. data/spec/models/deb_apt_remote_spec.rb +35 -40
  224. data/spec/models/deb_apt_repository_response_spec.rb +20 -25
  225. data/spec/models/deb_apt_repository_spec.rb +14 -19
  226. data/spec/models/deb_generic_content_response_spec.rb +18 -23
  227. data/spec/models/deb_installer_file_index_response_spec.rb +14 -19
  228. data/spec/models/deb_installer_file_index_spec.rb +11 -16
  229. data/spec/models/deb_installer_package_response_spec.rb +47 -52
  230. data/spec/models/deb_package_index_response_spec.rb +14 -19
  231. data/spec/models/deb_package_index_spec.rb +11 -16
  232. data/spec/models/deb_package_release_component_response_spec.rb +12 -17
  233. data/spec/models/deb_package_release_component_spec.rb +9 -14
  234. data/spec/models/deb_package_response_spec.rb +49 -54
  235. data/spec/models/deb_release_architecture_response_spec.rb +12 -17
  236. data/spec/models/deb_release_architecture_spec.rb +9 -14
  237. data/spec/models/deb_release_component_response_spec.rb +13 -18
  238. data/spec/models/deb_release_component_spec.rb +9 -14
  239. data/spec/models/deb_release_file_response_spec.rb +15 -20
  240. data/spec/models/deb_release_file_spec.rb +12 -17
  241. data/spec/models/deb_release_response_spec.rb +19 -24
  242. data/spec/models/deb_release_spec.rb +16 -21
  243. data/spec/models/deb_source_index_response_spec.rb +14 -19
  244. data/spec/models/deb_source_index_spec.rb +11 -16
  245. data/spec/models/deb_source_package_release_component_response_spec.rb +12 -17
  246. data/spec/models/deb_source_package_release_component_spec.rb +9 -14
  247. data/spec/models/deb_source_package_response_spec.rb +40 -45
  248. data/spec/models/deb_source_package_spec.rb +9 -14
  249. data/spec/models/deb_verbatim_publication_response_spec.rb +12 -17
  250. data/spec/models/deb_verbatim_publication_spec.rb +8 -13
  251. data/spec/models/my_permissions_response_spec.rb +7 -12
  252. data/spec/models/nested_role_response_spec.rb +9 -14
  253. data/spec/models/nested_role_spec.rb +9 -14
  254. data/spec/models/object_roles_response_spec.rb +7 -12
  255. data/spec/models/paginated_repository_version_response_list_spec.rb +10 -15
  256. data/spec/models/paginateddeb_apt_distribution_response_list_spec.rb +10 -15
  257. data/spec/models/paginateddeb_apt_publication_response_list_spec.rb +10 -15
  258. data/spec/models/paginateddeb_apt_remote_response_list_spec.rb +10 -15
  259. data/spec/models/paginateddeb_apt_repository_response_list_spec.rb +10 -15
  260. data/spec/models/paginateddeb_generic_content_response_list_spec.rb +10 -15
  261. data/spec/models/paginateddeb_installer_file_index_response_list_spec.rb +10 -15
  262. data/spec/models/paginateddeb_installer_package_response_list_spec.rb +10 -15
  263. data/spec/models/paginateddeb_package_index_response_list_spec.rb +10 -15
  264. data/spec/models/paginateddeb_package_release_component_response_list_spec.rb +10 -15
  265. data/spec/models/paginateddeb_package_response_list_spec.rb +10 -15
  266. data/spec/models/paginateddeb_release_architecture_response_list_spec.rb +10 -15
  267. data/spec/models/paginateddeb_release_component_response_list_spec.rb +10 -15
  268. data/spec/models/paginateddeb_release_file_response_list_spec.rb +10 -15
  269. data/spec/models/paginateddeb_release_response_list_spec.rb +10 -15
  270. data/spec/models/paginateddeb_source_index_response_list_spec.rb +10 -15
  271. data/spec/models/paginateddeb_source_package_release_component_response_list_spec.rb +10 -15
  272. data/spec/models/paginateddeb_source_package_response_list_spec.rb +10 -15
  273. data/spec/models/paginateddeb_verbatim_publication_response_list_spec.rb +10 -15
  274. data/spec/models/patcheddeb_apt_distribution_spec.rb +13 -18
  275. data/spec/models/patcheddeb_apt_remote_spec.rb +35 -40
  276. data/spec/models/patcheddeb_apt_repository_spec.rb +14 -19
  277. data/spec/models/policy_enum_spec.rb +6 -11
  278. data/spec/models/repair_spec.rb +7 -12
  279. data/spec/models/repository_add_remove_content_spec.rb +9 -14
  280. data/spec/models/repository_version_response_spec.rb +14 -19
  281. data/spec/models/set_label_response_spec.rb +8 -13
  282. data/spec/models/set_label_spec.rb +8 -13
  283. data/spec/models/unset_label_response_spec.rb +8 -13
  284. data/spec/models/unset_label_spec.rb +7 -12
  285. data/spec/spec_helper.rb +1 -1
  286. metadata +115 -103
  287. data/docs/DebAptRemoteResponseHiddenFields.md +0 -19
  288. data/docs/DebGenericContent.md +0 -27
  289. data/docs/DebInstallerPackage.md +0 -27
  290. data/docs/DebPackage.md +0 -31
  291. data/lib/pulp_deb_client/models/deb_generic_content.rb +0 -297
  292. data/lib/pulp_deb_client/models/deb_installer_package.rb +0 -288
  293. data/lib/pulp_deb_client/models/deb_package.rb +0 -338
  294. data/spec/api_client_spec.rb +0 -188
  295. data/spec/configuration_spec.rb +0 -42
  296. data/spec/models/deb_generic_content_spec.rb +0 -71
  297. data/spec/models/deb_installer_package_spec.rb +0 -71
  298. data/spec/models/deb_package_spec.rb +0 -83
@@ -6,7 +6,7 @@
6
6
  The version of the OpenAPI document: v3
7
7
  Contact: pulp-list@redhat.com
8
8
  Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 4.3.1
9
+ Generator version: 7.10.0
10
10
 
11
11
  =end
12
12
 
@@ -14,7 +14,12 @@ require 'date'
14
14
  require 'json'
15
15
  require 'logger'
16
16
  require 'tempfile'
17
+ require 'time'
17
18
  require 'faraday'
19
+ require 'faraday/multipart' if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new('2.0')
20
+ require 'marcel'
21
+ require 'pathname'
22
+
18
23
 
19
24
  module PulpDebClient
20
25
  class ApiClient
@@ -46,51 +51,38 @@ module PulpDebClient
46
51
  # @return [Array<(Object, Integer, Hash)>] an array of 3 elements:
47
52
  # the data deserialized from response body (could be nil), response status code and response headers.
48
53
  def call_api(http_method, path, opts = {})
49
- ssl_options = {
50
- :ca_file => @config.ssl_ca_file,
51
- :verify => @config.ssl_verify,
52
- :verify_mode => @config.ssl_verify_mode,
53
- :client_cert => @config.ssl_client_cert,
54
- :client_key => @config.ssl_client_key
55
- }
56
- request_options = {
57
- :params_encoder => @config.params_encoder
58
- }
59
- connection = Faraday.new(:url => config.base_url, :ssl => ssl_options, :request => request_options) do |conn|
60
- conn.basic_auth(config.username, config.password)
61
- if opts[:header_params]["Content-Type"] == "multipart/form-data"
62
- conn.request :multipart
63
- conn.request :url_encoded
64
- end
65
- conn.adapter(Faraday.default_adapter)
66
- end
67
-
54
+ stream = nil
68
55
  begin
69
- response = connection.public_send(http_method.to_sym.downcase) do |req|
70
- build_request(http_method, path, req, opts)
56
+ response = connection(opts).public_send(http_method.to_sym.downcase) do |req|
57
+ request = build_request(http_method, path, req, opts)
58
+ stream = download_file(request) if opts[:return_type] == 'File' || opts[:return_type] == 'Binary'
71
59
  end
72
60
 
73
- if @config.debugging
74
- @config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
61
+ if config.debugging
62
+ config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
75
63
  end
76
64
 
77
65
  unless response.success?
78
- if response.status == 0
66
+ if response.status == 0 && response.respond_to?(:return_message)
79
67
  # Errors from libcurl will be made visible here
80
- fail ApiError.new(:code => 0,
81
- :message => response.return_message)
68
+ fail ApiError.new(code: 0,
69
+ message: response.return_message)
82
70
  else
83
- fail ApiError.new(:code => response.status,
84
- :response_headers => response.headers,
85
- :response_body => response.body),
71
+ fail ApiError.new(code: response.status,
72
+ response_headers: response.headers,
73
+ response_body: response.body),
86
74
  response.reason_phrase
87
75
  end
88
76
  end
89
77
  rescue Faraday::TimeoutError
90
78
  fail ApiError.new('Connection timed out')
79
+ rescue Faraday::ConnectionFailed
80
+ fail ApiError.new('Connection failed')
91
81
  end
92
82
 
93
- if opts[:return_type]
83
+ if opts[:return_type] == 'File' || opts[:return_type] == 'Binary'
84
+ data = deserialize_file(response, stream)
85
+ elsif opts[:return_type]
94
86
  data = deserialize(response, opts[:return_type])
95
87
  else
96
88
  data = nil
@@ -106,9 +98,9 @@ module PulpDebClient
106
98
  # @option opts [Hash] :query_params Query parameters
107
99
  # @option opts [Hash] :form_params Query parameters
108
100
  # @option opts [Object] :body HTTP body (JSON/XML)
109
- # @return [Typhoeus::Request] A Typhoeus Request
101
+ # @return [Faraday::Request] A Faraday Request
110
102
  def build_request(http_method, path, request, opts = {})
111
- url = build_request_url(path)
103
+ url = build_request_url(path, opts)
112
104
  http_method = http_method.to_sym.downcase
113
105
 
114
106
  header_params = @default_headers.merge(opts[:header_params] || {})
@@ -117,24 +109,21 @@ module PulpDebClient
117
109
 
118
110
  update_params_for_auth! header_params, query_params, opts[:auth_names]
119
111
 
120
- req_opts = {
121
- :params_encoding => @config.params_encoding,
122
- :timeout => @config.timeout,
123
- :verbose => @config.debugging
124
- }
125
-
126
112
  if [:post, :patch, :put, :delete].include?(http_method)
127
113
  req_body = build_request_body(header_params, form_params, opts[:body])
128
- if @config.debugging
129
- @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
114
+ if config.debugging
115
+ config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
130
116
  end
131
117
  end
132
118
  request.headers = header_params
133
119
  request.body = req_body
134
- request.options = OpenStruct.new(req_opts)
120
+
121
+ # Overload default options only if provided
122
+ request.options.params_encoder = config.params_encoder if config.params_encoder
123
+ request.options.timeout = config.timeout if config.timeout
124
+
135
125
  request.url url
136
126
  request.params = query_params
137
- download_file(request) if opts[:return_type] == 'File'
138
127
  request
139
128
  end
140
129
 
@@ -153,8 +142,7 @@ module PulpDebClient
153
142
  form_params.each do |key, value|
154
143
  case value
155
144
  when ::File, ::Tempfile
156
- # TODO hardcode to application/octet-stream, need better way to detect content type
157
- data[key] = Faraday::FilePart.new(value.path, 'application/octet-stream', value.path)
145
+ data[key] = Faraday::FilePart.new(value.path, Marcel::MimeType.for(Pathname.new(value.path)))
158
146
  when ::Array, nil
159
147
  # let Faraday handle Array and nil parameters
160
148
  data[key] = value
@@ -170,6 +158,95 @@ module PulpDebClient
170
158
  data
171
159
  end
172
160
 
161
+ def download_file(request)
162
+ stream = []
163
+
164
+ # handle streaming Responses
165
+ request.options.on_data = Proc.new do |chunk, overall_received_bytes|
166
+ stream << chunk
167
+ end
168
+
169
+ stream
170
+ end
171
+
172
+ def deserialize_file(response, stream)
173
+ body = response.body
174
+ encoding = body.encoding
175
+
176
+ # reconstruct content
177
+ content = stream.join
178
+ content = content.unpack('m').join if response.headers['Content-Transfer-Encoding'] == 'binary'
179
+ content = content.force_encoding(encoding)
180
+
181
+ # return byte stream
182
+ return content if @config.return_binary_data == true
183
+
184
+ # return file instead of binary data
185
+ content_disposition = response.headers['Content-Disposition']
186
+ if content_disposition && content_disposition =~ /filename=/i
187
+ filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
188
+ prefix = sanitize_filename(filename)
189
+ else
190
+ prefix = 'download-'
191
+ end
192
+ prefix = prefix + '-' unless prefix.end_with?('-')
193
+
194
+ tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
195
+ tempfile.write(content)
196
+ tempfile.close
197
+
198
+ config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
199
+ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
200
+ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
201
+ "explicitly with `tempfile.delete`"
202
+ tempfile
203
+ end
204
+
205
+ def connection(opts)
206
+ opts[:header_params]['Content-Type'] == 'multipart/form-data' ? connection_multipart : connection_regular
207
+ end
208
+
209
+ def connection_multipart
210
+ @connection_multipart ||= build_connection do |conn|
211
+ conn.request :multipart
212
+ conn.request :url_encoded
213
+ end
214
+ end
215
+
216
+ def connection_regular
217
+ @connection_regular ||= build_connection
218
+ end
219
+
220
+ def build_connection
221
+ Faraday.new(url: config.base_url, ssl: ssl_options, proxy: config.proxy) do |conn|
222
+ basic_auth(conn)
223
+ config.configure_middleware(conn)
224
+ yield(conn) if block_given?
225
+ conn.adapter(Faraday.default_adapter)
226
+ config.configure_connection(conn)
227
+ end
228
+ end
229
+
230
+ def ssl_options
231
+ {
232
+ ca_file: config.ssl_ca_file,
233
+ verify: config.ssl_verify,
234
+ verify_mode: config.ssl_verify_mode,
235
+ client_cert: config.ssl_client_cert,
236
+ client_key: config.ssl_client_key
237
+ }
238
+ end
239
+
240
+ def basic_auth(conn)
241
+ if config.username && config.password
242
+ if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new('2.0')
243
+ conn.request(:authorization, :basic, config.username, config.password)
244
+ else
245
+ conn.request(:basic_auth, config.username, config.password)
246
+ end
247
+ end
248
+ end
249
+
173
250
  # Check if the given MIME is a JSON MIME.
174
251
  # JSON MIME examples:
175
252
  # application/json
@@ -179,7 +256,7 @@ module PulpDebClient
179
256
  # @param [String] mime MIME
180
257
  # @return [Boolean] True if the MIME is application/json
181
258
  def json_mime?(mime)
182
- (mime == '*/*') || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
259
+ (mime == '*/*') || !(mime =~ /^Application\/.*json(?!p)(;.*)?/i).nil?
183
260
  end
184
261
 
185
262
  # Deserialize the response to the given return type.
@@ -188,15 +265,10 @@ module PulpDebClient
188
265
  # @param [String] return_type some examples: "User", "Array<User>", "Hash<String, Integer>"
189
266
  def deserialize(response, return_type)
190
267
  body = response.body
191
-
192
- # handle file downloading - return the File instance processed in request callbacks
193
- # note that response body is empty when the file is written in chunks in request on_body callback
194
- return @tempfile if return_type == 'File'
195
-
196
268
  return nil if body.nil? || body.empty?
197
269
 
198
270
  # return response body directly for String return type
199
- return body if return_type == 'String'
271
+ return body.to_s if return_type == 'String'
200
272
 
201
273
  # ensuring a default content type
202
274
  content_type = response.headers['Content-Type'] || 'application/json'
@@ -206,7 +278,7 @@ module PulpDebClient
206
278
  begin
207
279
  data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
208
280
  rescue JSON::ParserError => e
209
- if %w(String Date DateTime).include?(return_type)
281
+ if %w(String Date Time).include?(return_type)
210
282
  data = body
211
283
  else
212
284
  raise e
@@ -231,9 +303,9 @@ module PulpDebClient
231
303
  data.to_f
232
304
  when 'Boolean'
233
305
  data == true
234
- when 'DateTime'
306
+ when 'Time'
235
307
  # parse date time (expecting ISO 8601 format)
236
- DateTime.parse data
308
+ Time.parse data
237
309
  when 'Date'
238
310
  # parse date time (expecting ISO 8601 format)
239
311
  Date.parse data
@@ -251,46 +323,9 @@ module PulpDebClient
251
323
  data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
252
324
  end
253
325
  else
254
- # models, e.g. Pet
255
- PulpDebClient.const_get(return_type).build_from_hash(data)
256
- end
257
- end
258
-
259
- # Save response body into a file in (the defined) temporary folder, using the filename
260
- # from the "Content-Disposition" header if provided, otherwise a random filename.
261
- # The response body is written to the file in chunks in order to handle files which
262
- # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
263
- # process can use.
264
- #
265
- # @see Configuration#temp_folder_path
266
- def download_file(request)
267
- tempfile = nil
268
- encoding = nil
269
- request.on_headers do |response|
270
- content_disposition = response.headers['Content-Disposition']
271
- if content_disposition && content_disposition =~ /filename=/i
272
- filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
273
- prefix = sanitize_filename(filename)
274
- else
275
- prefix = 'download-'
276
- end
277
- prefix = prefix + '-' unless prefix.end_with?('-')
278
- encoding = response.body.encoding
279
- tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
280
- @tempfile = tempfile
281
- end
282
- request.on_body do |chunk|
283
- chunk.force_encoding(encoding)
284
- tempfile.write(chunk)
285
- end
286
- request.on_complete do |response|
287
- if tempfile
288
- tempfile.close
289
- @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
290
- "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
291
- "will be deleted automatically with GC. It's also recommended to delete the temp file "\
292
- "explicitly with `tempfile.delete`"
293
- end
326
+ # models (e.g. Pet) or oneOf
327
+ klass = PulpDebClient.const_get(return_type)
328
+ klass.respond_to?(:openapi_one_of) ? klass.build(data) : klass.build_from_hash(data)
294
329
  end
295
330
  end
296
331
 
@@ -300,16 +335,16 @@ module PulpDebClient
300
335
  # @param [String] filename the filename to be sanitized
301
336
  # @return [String] the sanitized filename
302
337
  def sanitize_filename(filename)
303
- filename.gsub(/.*[\/\\]/, '')
338
+ filename.split(/[\/\\]/).last
304
339
  end
305
340
 
306
- def build_request_url(path)
341
+ def build_request_url(path, opts = {})
307
342
  # Add leading and trailing slashes to path
308
343
  path = "/#{path}".gsub(/\/+/, '/')
309
- @config.base_url + path
344
+ @config.base_url(opts[:operation]) + path
310
345
  end
311
346
 
312
- # Update hearder and query params based on authentication settings.
347
+ # Update header and query params based on authentication settings.
313
348
  #
314
349
  # @param [Hash] header_params Header parameters
315
350
  # @param [Hash] query_params Query parameters
@@ -321,7 +356,7 @@ module PulpDebClient
321
356
  case auth_setting[:in]
322
357
  when 'header' then header_params[auth_setting[:key]] = auth_setting[:value]
323
358
  when 'query' then query_params[auth_setting[:key]] = auth_setting[:value]
324
- else fail ArgumentError, 'Authentication token must be in `query` of `header`'
359
+ else fail ArgumentError, 'Authentication token must be in `query` or `header`'
325
360
  end
326
361
  end
327
362
  end
@@ -348,8 +383,8 @@ module PulpDebClient
348
383
  # @param [Array] content_types array for Content-Type
349
384
  # @return [String] the Content-Type header (e.g. application/json)
350
385
  def select_header_content_type(content_types)
351
- # use application/json by default
352
- return 'application/json' if content_types.nil? || content_types.empty?
386
+ # return nil by default
387
+ return if content_types.nil? || content_types.empty?
353
388
  # use JSON when present, otherwise use the first one
354
389
  json_content_type = content_types.find { |s| json_mime?(s) }
355
390
  json_content_type || content_types.first
@@ -6,7 +6,7 @@
6
6
  The version of the OpenAPI document: v3
7
7
  Contact: pulp-list@redhat.com
8
8
  Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 4.3.1
9
+ Generator version: 7.10.0
10
10
 
11
11
  =end
12
12
 
@@ -32,6 +32,7 @@ module PulpDebClient
32
32
  end
33
33
  else
34
34
  super arg
35
+ @message = arg
35
36
  end
36
37
  end
37
38
 
@@ -6,7 +6,7 @@
6
6
  The version of the OpenAPI document: v3
7
7
  Contact: pulp-list@redhat.com
8
8
  Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 4.3.1
9
+ Generator version: 7.10.0
10
10
 
11
11
  =end
12
12
 
@@ -21,6 +21,18 @@ module PulpDebClient
21
21
  # Defines url base path
22
22
  attr_accessor :base_path
23
23
 
24
+ # Define server configuration index
25
+ attr_accessor :server_index
26
+
27
+ # Define server operation configuration index
28
+ attr_accessor :server_operation_index
29
+
30
+ # Default server variables
31
+ attr_accessor :server_variables
32
+
33
+ # Default server operation variables
34
+ attr_accessor :server_operation_variables
35
+
24
36
  # Defines API keys used with API Key authentications.
25
37
  #
26
38
  # @return [Hash] key: parameter name, value: parameter value (API key)
@@ -50,6 +62,16 @@ module PulpDebClient
50
62
  # Defines the access token (Bearer) used with OAuth2.
51
63
  attr_accessor :access_token
52
64
 
65
+ # Defines a Proc used to fetch or refresh access tokens (Bearer) used with OAuth2.
66
+ # Overrides the access_token if set
67
+ # @return [Proc]
68
+ attr_accessor :access_token_getter
69
+
70
+ # Set this to return data as binary instead of downloading a temp file. When enabled (set to true)
71
+ # HTTP responses with return type `File` will be returned as a stream of binary data.
72
+ # Default to false.
73
+ attr_accessor :return_binary_data
74
+
53
75
  # Set this to enable/disable debugging. When enabled (set to true), HTTP request/response
54
76
  # details will be logged with `logger.debug` (see the `logger` attribute).
55
77
  # Default to false.
@@ -57,6 +79,14 @@ module PulpDebClient
57
79
  # @return [true, false]
58
80
  attr_accessor :debugging
59
81
 
82
+ # Set this to ignore operation servers for the API client. This is useful when you need to
83
+ # send requests to a different server than the one specified in the OpenAPI document.
84
+ # Will default to the base url defined in the spec but can be overridden by setting
85
+ # `scheme`, `host`, `base_path` directly.
86
+ # Default to false.
87
+ # @return [true, false]
88
+ attr_accessor :ignore_operation_servers
89
+
60
90
  # Defines the logger used for debugging.
61
91
  # Default to `Rails.logger` (when in Rails) or logging to STDOUT.
62
92
  #
@@ -109,18 +139,17 @@ module PulpDebClient
109
139
  # Client private key file (for client certificate)
110
140
  attr_accessor :ssl_client_key
111
141
 
142
+ ### Proxy setting
143
+ # HTTP Proxy settings
144
+ attr_accessor :proxy
145
+
112
146
  # Set this to customize parameters encoder of array parameter.
113
147
  # Default to nil. Faraday uses NestedParamsEncoder when nil.
114
148
  #
115
149
  # @see The params_encoder option of Faraday. Related source code:
116
150
  # https://github.com/lostisland/faraday/tree/main/lib/faraday/encoders
117
151
  attr_accessor :params_encoder
118
- # Set this to customize parameters encoding of array parameter with multi collectionFormat.
119
- # Default to nil.
120
- #
121
- # @see The params_encoding option of Ethon. Related source code:
122
- # https://github.com/typhoeus/ethon/blob/master/lib/ethon/easy/queryable.rb#L96
123
- attr_accessor :params_encoding
152
+
124
153
 
125
154
  attr_accessor :inject_format
126
155
 
@@ -128,20 +157,28 @@ module PulpDebClient
128
157
 
129
158
  def initialize
130
159
  @scheme = 'http'
131
- @host = 'localhost'
160
+ @host = 'localhost:24817'
132
161
  @base_path = ''
162
+ @server_index = nil
163
+ @server_operation_index = {}
164
+ @server_variables = {}
165
+ @server_operation_variables = {}
133
166
  @api_key = {}
134
167
  @api_key_prefix = {}
135
- @timeout = 0
136
168
  @client_side_validation = true
137
169
  @ssl_verify = true
138
170
  @ssl_verify_mode = nil
139
171
  @ssl_ca_file = nil
140
172
  @ssl_client_cert = nil
141
173
  @ssl_client_key = nil
142
- @params_encoder = nil
174
+ @middlewares = Hash.new { |h, k| h[k] = [] }
175
+ @configure_connection_blocks = []
143
176
  @timeout = 60
177
+ # return data as binary instead of file
178
+ @return_binary_data = false
179
+ @params_encoder = nil
144
180
  @debugging = false
181
+ @ignore_operation_servers = false
145
182
  @inject_format = false
146
183
  @force_ending_format = false
147
184
  @logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
@@ -174,20 +211,35 @@ module PulpDebClient
174
211
  @base_path = '' if @base_path == '/'
175
212
  end
176
213
 
177
- def base_url
178
- "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '')
214
+ # Returns base URL for specified operation based on server settings
215
+ def base_url(operation = nil)
216
+ return "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') if ignore_operation_servers
217
+ if operation_server_settings.key?(operation) then
218
+ index = server_operation_index.fetch(operation, server_index)
219
+ server_url(index.nil? ? 0 : index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
220
+ else
221
+ server_index.nil? ? "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') : server_url(server_index, server_variables, nil)
222
+ end
179
223
  end
180
224
 
181
225
  # Gets API key (with prefix if set).
182
226
  # @param [String] param_name the parameter name of API key auth
183
- def api_key_with_prefix(param_name)
227
+ def api_key_with_prefix(param_name, param_alias = nil)
228
+ key = @api_key[param_name]
229
+ key = @api_key.fetch(param_alias, key) unless param_alias.nil?
184
230
  if @api_key_prefix[param_name]
185
- "#{@api_key_prefix[param_name]} #{@api_key[param_name]}"
231
+ "#{@api_key_prefix[param_name]} #{key}"
186
232
  else
187
- @api_key[param_name]
233
+ key
188
234
  end
189
235
  end
190
236
 
237
+ # Gets access_token using access_token_getter or uses the static access_token
238
+ def access_token_with_refresh
239
+ return access_token if access_token_getter.nil?
240
+ access_token_getter.call
241
+ end
242
+
191
243
  # Gets Basic Auth token string
192
244
  def basic_auth_token
193
245
  'Basic ' + ["#{username}:#{password}"].pack('m').delete("\r\n")
@@ -210,31 +262,38 @@ module PulpDebClient
210
262
  def server_settings
211
263
  [
212
264
  {
213
- url: "http://localhost:24817/",
265
+ url: "http://localhost:24817",
214
266
  description: "No description provided",
215
267
  }
216
268
  ]
217
269
  end
218
270
 
271
+ def operation_server_settings
272
+ {
273
+ }
274
+ end
275
+
219
276
  # Returns URL based on server settings
220
277
  #
221
278
  # @param index array index of the server settings
222
279
  # @param variables hash of variable and the corresponding value
223
- def server_url(index, variables = {})
224
- servers = server_settings
280
+ def server_url(index, variables = {}, servers = nil)
281
+ servers = server_settings if servers == nil
225
282
 
226
283
  # check array index out of bound
227
- if (index < 0 || index >= servers.size)
228
- fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
284
+ if (index.nil? || index < 0 || index >= servers.size)
285
+ fail ArgumentError, "Invalid index #{index} when selecting the server. Must not be nil and must be less than #{servers.size}"
229
286
  end
230
287
 
231
288
  server = servers[index]
232
289
  url = server[:url]
233
290
 
291
+ return url unless server.key? :variables
292
+
234
293
  # go through variable and assign a value
235
294
  server[:variables].each do |name, variable|
236
295
  if variables.key?(name)
237
- if (server[:variables][name][:enum_values].include? variables[name])
296
+ if (!server[:variables][name].key?(:enum_values) || server[:variables][name][:enum_values].include?(variables[name]))
238
297
  url.gsub! "{" + name.to_s + "}", variables[name]
239
298
  else
240
299
  fail ArgumentError, "The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}."
@@ -247,5 +306,87 @@ module PulpDebClient
247
306
 
248
307
  url
249
308
  end
309
+
310
+ # Configure Faraday connection directly.
311
+ #
312
+ # ```
313
+ # c.configure_faraday_connection do |conn|
314
+ # conn.use Faraday::HttpCache, shared_cache: false, logger: logger
315
+ # conn.response :logger, nil, headers: true, bodies: true, log_level: :debug do |logger|
316
+ # logger.filter(/(Authorization: )(.*)/, '\1[REDACTED]')
317
+ # end
318
+ # end
319
+ #
320
+ # c.configure_faraday_connection do |conn|
321
+ # conn.adapter :typhoeus
322
+ # end
323
+ # ```
324
+ #
325
+ # @param block [Proc] `#call`able object that takes one arg, the connection
326
+ def configure_faraday_connection(&block)
327
+ @configure_connection_blocks << block
328
+ end
329
+
330
+ def configure_connection(conn)
331
+ @configure_connection_blocks.each do |block|
332
+ block.call(conn)
333
+ end
334
+ end
335
+
336
+ # Adds middleware to the stack
337
+ def use(*middleware)
338
+ set_faraday_middleware(:use, *middleware)
339
+ end
340
+
341
+ # Adds request middleware to the stack
342
+ def request(*middleware)
343
+ set_faraday_middleware(:request, *middleware)
344
+ end
345
+
346
+ # Adds response middleware to the stack
347
+ def response(*middleware)
348
+ set_faraday_middleware(:response, *middleware)
349
+ end
350
+
351
+ # Adds Faraday middleware setting information to the stack
352
+ #
353
+ # @example Use the `set_faraday_middleware` method to set middleware information
354
+ # config.set_faraday_middleware(:request, :retry, max: 3, methods: [:get, :post], retry_statuses: [503])
355
+ # config.set_faraday_middleware(:response, :logger, nil, { bodies: true, log_level: :debug })
356
+ # config.set_faraday_middleware(:use, Faraday::HttpCache, store: Rails.cache, shared_cache: false)
357
+ # config.set_faraday_middleware(:insert, 0, FaradayMiddleware::FollowRedirects, { standards_compliant: true, limit: 1 })
358
+ # config.set_faraday_middleware(:swap, 0, Faraday::Response::Logger)
359
+ # config.set_faraday_middleware(:delete, Faraday::Multipart::Middleware)
360
+ #
361
+ # @see https://github.com/lostisland/faraday/blob/v2.3.0/lib/faraday/rack_builder.rb#L92-L143
362
+ def set_faraday_middleware(operation, key, *args, &block)
363
+ unless [:request, :response, :use, :insert, :insert_before, :insert_after, :swap, :delete].include?(operation)
364
+ fail ArgumentError, "Invalid faraday middleware operation #{operation}. Must be" \
365
+ " :request, :response, :use, :insert, :insert_before, :insert_after, :swap or :delete."
366
+ end
367
+
368
+ @middlewares[operation] << [key, args, block]
369
+ end
370
+ ruby2_keywords(:set_faraday_middleware) if respond_to?(:ruby2_keywords, true)
371
+
372
+ # Set up middleware on the connection
373
+ def configure_middleware(connection)
374
+ return if @middlewares.empty?
375
+
376
+ [:request, :response, :use, :insert, :insert_before, :insert_after, :swap].each do |operation|
377
+ next unless @middlewares.key?(operation)
378
+
379
+ @middlewares[operation].each do |key, args, block|
380
+ connection.builder.send(operation, key, *args, &block)
381
+ end
382
+ end
383
+
384
+ if @middlewares.key?(:delete)
385
+ @middlewares[:delete].each do |key, _args, _block|
386
+ connection.builder.delete(key)
387
+ end
388
+ end
389
+ end
390
+
250
391
  end
251
392
  end