pulp_rpm_client 3.27.1 → 3.28.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (322) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -10
  3. data/docs/AcsRpmApi.md +346 -157
  4. data/docs/AddonResponse.md +16 -15
  5. data/docs/ArtifactResponse.md +30 -27
  6. data/docs/AsyncOperationResponse.md +8 -7
  7. data/docs/ChecksumResponse.md +10 -9
  8. data/docs/CompressionTypeEnum.md +4 -5
  9. data/docs/ContentAdvisoriesApi.md +132 -78
  10. data/docs/ContentDistributionTreesApi.md +84 -49
  11. data/docs/ContentModulemdDefaultsApi.md +119 -67
  12. data/docs/ContentModulemdObsoletesApi.md +112 -60
  13. data/docs/ContentModulemdsApi.md +128 -76
  14. data/docs/ContentPackagecategoriesApi.md +84 -49
  15. data/docs/ContentPackageenvironmentsApi.md +84 -49
  16. data/docs/ContentPackagegroupsApi.md +84 -49
  17. data/docs/ContentPackagelangpacksApi.md +84 -49
  18. data/docs/ContentPackagesApi.md +155 -101
  19. data/docs/ContentRepoMetadataFilesApi.md +84 -49
  20. data/docs/ContentSummaryResponse.md +12 -11
  21. data/docs/Copy.md +10 -9
  22. data/docs/DistributionsRpmApi.md +388 -183
  23. data/docs/ImageResponse.md +14 -13
  24. data/docs/MyPermissionsResponse.md +8 -7
  25. data/docs/NestedRole.md +12 -11
  26. data/docs/NestedRoleResponse.md +12 -11
  27. data/docs/ObjectRolesResponse.md +8 -7
  28. data/docs/PackageChecksumTypeEnum.md +4 -5
  29. data/docs/PaginatedRepositoryVersionResponseList.md +14 -13
  30. data/docs/PaginatedrpmDistributionTreeResponseList.md +14 -13
  31. data/docs/PaginatedrpmModulemdDefaultsResponseList.md +14 -13
  32. data/docs/PaginatedrpmModulemdObsoleteResponseList.md +14 -13
  33. data/docs/PaginatedrpmModulemdResponseList.md +14 -13
  34. data/docs/PaginatedrpmPackageCategoryResponseList.md +14 -13
  35. data/docs/PaginatedrpmPackageEnvironmentResponseList.md +14 -13
  36. data/docs/PaginatedrpmPackageGroupResponseList.md +14 -13
  37. data/docs/PaginatedrpmPackageLangpacksResponseList.md +14 -13
  38. data/docs/PaginatedrpmPackageResponseList.md +14 -13
  39. data/docs/PaginatedrpmRepoMetadataFileResponseList.md +14 -13
  40. data/docs/PaginatedrpmRpmAlternateContentSourceResponseList.md +14 -13
  41. data/docs/PaginatedrpmRpmDistributionResponseList.md +14 -13
  42. data/docs/PaginatedrpmRpmPublicationResponseList.md +14 -13
  43. data/docs/PaginatedrpmRpmRemoteResponseList.md +14 -13
  44. data/docs/PaginatedrpmRpmRepositoryResponseList.md +14 -13
  45. data/docs/PaginatedrpmUlnRemoteResponseList.md +14 -13
  46. data/docs/PaginatedrpmUpdateRecordResponseList.md +14 -13
  47. data/docs/PatchedrpmRpmAlternateContentSource.md +14 -13
  48. data/docs/PatchedrpmRpmDistribution.md +22 -21
  49. data/docs/PatchedrpmRpmRemote.md +50 -49
  50. data/docs/PatchedrpmRpmRepository.md +40 -39
  51. data/docs/PatchedrpmUlnRemote.md +50 -49
  52. data/docs/PolicyEnum.md +4 -5
  53. data/docs/PrunePackages.md +12 -11
  54. data/docs/PublicationsRpmApi.md +271 -132
  55. data/docs/RemotesRpmApi.md +392 -185
  56. data/docs/RemotesUlnApi.md +392 -185
  57. data/docs/Repair.md +8 -7
  58. data/docs/RepositoriesRpmApi.md +449 -210
  59. data/docs/RepositoriesRpmVersionsApi.md +155 -83
  60. data/docs/RepositoryAddRemoveContent.md +12 -11
  61. data/docs/RepositoryVersionResponse.md +22 -19
  62. data/docs/RpmCompsApi.md +33 -17
  63. data/docs/RpmCopyApi.md +31 -15
  64. data/docs/RpmDistributionTreeResponse.md +46 -43
  65. data/docs/RpmModulemd.md +32 -31
  66. data/docs/RpmModulemdDefaults.md +16 -15
  67. data/docs/RpmModulemdDefaultsResponse.md +20 -17
  68. data/docs/RpmModulemdObsolete.md +28 -27
  69. data/docs/RpmModulemdObsoleteResponse.md +32 -29
  70. data/docs/RpmModulemdResponse.md +36 -33
  71. data/docs/RpmPackageCategoryResponse.md +30 -27
  72. data/docs/RpmPackageEnvironmentResponse.md +32 -29
  73. data/docs/RpmPackageGroupResponse.md +36 -33
  74. data/docs/RpmPackageLangpacksResponse.md +18 -15
  75. data/docs/RpmPackageResponse.md +100 -97
  76. data/docs/RpmPruneApi.md +31 -14
  77. data/docs/RpmRepoMetadataFileResponse.md +36 -33
  78. data/docs/RpmRepositorySyncURL.md +16 -15
  79. data/docs/RpmRpmAlternateContentSource.md +14 -13
  80. data/docs/RpmRpmAlternateContentSourceResponse.md +22 -19
  81. data/docs/RpmRpmDistribution.md +22 -21
  82. data/docs/RpmRpmDistributionResponse.md +34 -29
  83. data/docs/RpmRpmPublication.md +24 -23
  84. data/docs/RpmRpmPublicationResponse.md +34 -31
  85. data/docs/RpmRpmRemote.md +50 -49
  86. data/docs/RpmRpmRemoteResponse.md +50 -47
  87. data/docs/RpmRpmRemoteResponseHiddenFieldsInner.md +20 -0
  88. data/docs/RpmRpmRepository.md +40 -39
  89. data/docs/RpmRpmRepositoryResponse.md +54 -51
  90. data/docs/RpmUlnRemote.md +50 -49
  91. data/docs/RpmUlnRemoteResponse.md +50 -47
  92. data/docs/RpmUpdateCollection.md +12 -11
  93. data/docs/RpmUpdateCollectionResponse.md +14 -13
  94. data/docs/RpmUpdateRecordResponse.md +50 -47
  95. data/docs/SetLabel.md +10 -9
  96. data/docs/SetLabelResponse.md +10 -9
  97. data/docs/SkipTypesEnum.md +4 -5
  98. data/docs/SyncPolicyEnum.md +4 -5
  99. data/docs/TaskGroupOperationResponse.md +8 -7
  100. data/docs/UnsetLabel.md +8 -7
  101. data/docs/UnsetLabelResponse.md +10 -9
  102. data/docs/VariantResponse.md +26 -25
  103. data/lib/pulp_rpm_client/api/acs_rpm_api.rb +81 -52
  104. data/lib/pulp_rpm_client/api/content_advisories_api.rb +38 -22
  105. data/lib/pulp_rpm_client/api/content_distribution_trees_api.rb +22 -17
  106. data/lib/pulp_rpm_client/api/content_modulemd_defaults_api.rb +31 -22
  107. data/lib/pulp_rpm_client/api/content_modulemd_obsoletes_api.rb +31 -22
  108. data/lib/pulp_rpm_client/api/content_modulemds_api.rb +31 -22
  109. data/lib/pulp_rpm_client/api/content_packagecategories_api.rb +22 -17
  110. data/lib/pulp_rpm_client/api/content_packageenvironments_api.rb +22 -17
  111. data/lib/pulp_rpm_client/api/content_packagegroups_api.rb +22 -17
  112. data/lib/pulp_rpm_client/api/content_packagelangpacks_api.rb +22 -17
  113. data/lib/pulp_rpm_client/api/content_packages_api.rb +38 -22
  114. data/lib/pulp_rpm_client/api/content_repo_metadata_files_api.rb +22 -17
  115. data/lib/pulp_rpm_client/api/distributions_rpm_api.rb +94 -58
  116. data/lib/pulp_rpm_client/api/publications_rpm_api.rb +81 -58
  117. data/lib/pulp_rpm_client/api/remotes_rpm_api.rb +109 -70
  118. data/lib/pulp_rpm_client/api/remotes_uln_api.rb +109 -70
  119. data/lib/pulp_rpm_client/api/repositories_rpm_api.rb +116 -72
  120. data/lib/pulp_rpm_client/api/repositories_rpm_versions_api.rb +50 -37
  121. data/lib/pulp_rpm_client/api/rpm_comps_api.rb +10 -6
  122. data/lib/pulp_rpm_client/api/rpm_copy_api.rb +10 -6
  123. data/lib/pulp_rpm_client/api/rpm_prune_api.rb +10 -6
  124. data/lib/pulp_rpm_client/api_client.rb +137 -102
  125. data/lib/pulp_rpm_client/api_error.rb +2 -1
  126. data/lib/pulp_rpm_client/configuration.rb +162 -21
  127. data/lib/pulp_rpm_client/models/addon_response.rb +40 -22
  128. data/lib/pulp_rpm_client/models/artifact_response.rb +46 -26
  129. data/lib/pulp_rpm_client/models/async_operation_response.rb +32 -22
  130. data/lib/pulp_rpm_client/models/checksum_response.rb +34 -22
  131. data/lib/pulp_rpm_client/models/compression_type_enum.rb +8 -4
  132. data/lib/pulp_rpm_client/models/content_summary_response.rb +36 -22
  133. data/lib/pulp_rpm_client/models/copy.rb +35 -29
  134. data/lib/pulp_rpm_client/models/image_response.rb +38 -22
  135. data/lib/pulp_rpm_client/models/my_permissions_response.rb +32 -22
  136. data/lib/pulp_rpm_client/models/nested_role.rb +32 -22
  137. data/lib/pulp_rpm_client/models/nested_role_response.rb +32 -22
  138. data/lib/pulp_rpm_client/models/object_roles_response.rb +32 -22
  139. data/lib/pulp_rpm_client/models/package_checksum_type_enum.rb +8 -4
  140. data/lib/pulp_rpm_client/models/paginated_repository_version_response_list.rb +34 -22
  141. data/lib/pulp_rpm_client/models/paginatedrpm_distribution_tree_response_list.rb +34 -22
  142. data/lib/pulp_rpm_client/models/paginatedrpm_modulemd_defaults_response_list.rb +34 -22
  143. data/lib/pulp_rpm_client/models/paginatedrpm_modulemd_obsolete_response_list.rb +34 -22
  144. data/lib/pulp_rpm_client/models/paginatedrpm_modulemd_response_list.rb +34 -22
  145. data/lib/pulp_rpm_client/models/paginatedrpm_package_category_response_list.rb +34 -22
  146. data/lib/pulp_rpm_client/models/paginatedrpm_package_environment_response_list.rb +34 -22
  147. data/lib/pulp_rpm_client/models/paginatedrpm_package_group_response_list.rb +34 -22
  148. data/lib/pulp_rpm_client/models/paginatedrpm_package_langpacks_response_list.rb +34 -22
  149. data/lib/pulp_rpm_client/models/paginatedrpm_package_response_list.rb +34 -22
  150. data/lib/pulp_rpm_client/models/paginatedrpm_repo_metadata_file_response_list.rb +34 -22
  151. data/lib/pulp_rpm_client/models/paginatedrpm_rpm_alternate_content_source_response_list.rb +34 -22
  152. data/lib/pulp_rpm_client/models/paginatedrpm_rpm_distribution_response_list.rb +34 -22
  153. data/lib/pulp_rpm_client/models/paginatedrpm_rpm_publication_response_list.rb +34 -22
  154. data/lib/pulp_rpm_client/models/paginatedrpm_rpm_remote_response_list.rb +34 -22
  155. data/lib/pulp_rpm_client/models/paginatedrpm_rpm_repository_response_list.rb +34 -22
  156. data/lib/pulp_rpm_client/models/paginatedrpm_uln_remote_response_list.rb +34 -22
  157. data/lib/pulp_rpm_client/models/paginatedrpm_update_record_response_list.rb +34 -22
  158. data/lib/pulp_rpm_client/models/patchedrpm_rpm_alternate_content_source.rb +36 -24
  159. data/lib/pulp_rpm_client/models/patchedrpm_rpm_distribution.rb +40 -24
  160. data/lib/pulp_rpm_client/models/patchedrpm_rpm_remote.rb +62 -24
  161. data/lib/pulp_rpm_client/models/patchedrpm_rpm_repository.rb +69 -26
  162. data/lib/pulp_rpm_client/models/patchedrpm_uln_remote.rb +72 -26
  163. data/lib/pulp_rpm_client/models/policy_enum.rb +8 -4
  164. data/lib/pulp_rpm_client/models/prune_packages.rb +37 -23
  165. data/lib/pulp_rpm_client/models/repair.rb +30 -22
  166. data/lib/pulp_rpm_client/models/repository_add_remove_content.rb +31 -23
  167. data/lib/pulp_rpm_client/models/repository_version_response.rb +44 -26
  168. data/lib/pulp_rpm_client/models/rpm_distribution_tree_response.rb +77 -23
  169. data/lib/pulp_rpm_client/models/rpm_modulemd.rb +53 -25
  170. data/lib/pulp_rpm_client/models/rpm_modulemd_defaults.rb +40 -28
  171. data/lib/pulp_rpm_client/models/rpm_modulemd_defaults_response.rb +51 -31
  172. data/lib/pulp_rpm_client/models/rpm_modulemd_obsolete.rb +55 -27
  173. data/lib/pulp_rpm_client/models/rpm_modulemd_obsolete_response.rb +61 -25
  174. data/lib/pulp_rpm_client/models/rpm_modulemd_response.rb +64 -28
  175. data/lib/pulp_rpm_client/models/rpm_package_category_response.rb +62 -28
  176. data/lib/pulp_rpm_client/models/rpm_package_environment_response.rb +65 -29
  177. data/lib/pulp_rpm_client/models/rpm_package_group_response.rb +62 -28
  178. data/lib/pulp_rpm_client/models/rpm_package_langpacks_response.rb +48 -26
  179. data/lib/pulp_rpm_client/models/rpm_package_response.rb +63 -35
  180. data/lib/pulp_rpm_client/models/rpm_repo_metadata_file_response.rb +51 -25
  181. data/lib/pulp_rpm_client/models/rpm_repository_sync_url.rb +52 -22
  182. data/lib/pulp_rpm_client/models/rpm_rpm_alternate_content_source.rb +35 -23
  183. data/lib/pulp_rpm_client/models/rpm_rpm_alternate_content_source_response.rb +48 -26
  184. data/lib/pulp_rpm_client/models/rpm_rpm_distribution.rb +34 -22
  185. data/lib/pulp_rpm_client/models/rpm_rpm_distribution_response.rb +57 -25
  186. data/lib/pulp_rpm_client/models/rpm_rpm_publication.rb +54 -23
  187. data/lib/pulp_rpm_client/models/rpm_rpm_publication_response.rb +67 -26
  188. data/lib/pulp_rpm_client/models/rpm_rpm_remote.rb +56 -22
  189. data/lib/pulp_rpm_client/models/rpm_rpm_remote_response.rb +70 -26
  190. data/lib/pulp_rpm_client/models/{rpm_rpm_remote_response_hidden_fields.rb → rpm_rpm_remote_response_hidden_fields_inner.rb} +37 -25
  191. data/lib/pulp_rpm_client/models/rpm_rpm_repository.rb +66 -25
  192. data/lib/pulp_rpm_client/models/rpm_rpm_repository_response.rb +79 -28
  193. data/lib/pulp_rpm_client/models/rpm_uln_remote.rb +60 -22
  194. data/lib/pulp_rpm_client/models/rpm_uln_remote_response.rb +70 -26
  195. data/lib/pulp_rpm_client/models/rpm_update_collection.rb +37 -23
  196. data/lib/pulp_rpm_client/models/rpm_update_collection_response.rb +37 -23
  197. data/lib/pulp_rpm_client/models/rpm_update_record_response.rb +43 -25
  198. data/lib/pulp_rpm_client/models/set_label.rb +34 -22
  199. data/lib/pulp_rpm_client/models/set_label_response.rb +34 -22
  200. data/lib/pulp_rpm_client/models/skip_types_enum.rb +8 -4
  201. data/lib/pulp_rpm_client/models/sync_policy_enum.rb +8 -4
  202. data/lib/pulp_rpm_client/models/task_group_operation_response.rb +32 -22
  203. data/lib/pulp_rpm_client/models/unset_label.rb +32 -22
  204. data/lib/pulp_rpm_client/models/unset_label_response.rb +32 -22
  205. data/lib/pulp_rpm_client/models/variant_response.rb +50 -22
  206. data/lib/pulp_rpm_client/version.rb +2 -2
  207. data/lib/pulp_rpm_client.rb +2 -5
  208. data/pulp_rpm_client.gemspec +9 -6
  209. data/spec/api/acs_rpm_api_spec.rb +14 -13
  210. data/spec/api/content_advisories_api_spec.rb +10 -8
  211. data/spec/api/content_distribution_trees_api_spec.rb +8 -7
  212. data/spec/api/content_modulemd_defaults_api_spec.rb +9 -8
  213. data/spec/api/content_modulemd_obsoletes_api_spec.rb +9 -8
  214. data/spec/api/content_modulemds_api_spec.rb +9 -8
  215. data/spec/api/content_packagecategories_api_spec.rb +8 -7
  216. data/spec/api/content_packageenvironments_api_spec.rb +8 -7
  217. data/spec/api/content_packagegroups_api_spec.rb +8 -7
  218. data/spec/api/content_packagelangpacks_api_spec.rb +8 -7
  219. data/spec/api/content_packages_api_spec.rb +10 -8
  220. data/spec/api/content_repo_metadata_files_api_spec.rb +8 -7
  221. data/spec/api/distributions_rpm_api_spec.rb +15 -14
  222. data/spec/api/publications_rpm_api_spec.rb +22 -20
  223. data/spec/api/remotes_rpm_api_spec.rb +22 -20
  224. data/spec/api/remotes_uln_api_spec.rb +22 -20
  225. data/spec/api/repositories_rpm_api_spec.rb +19 -18
  226. data/spec/api/repositories_rpm_versions_api_spec.rb +16 -14
  227. data/spec/api/rpm_comps_api_spec.rb +2 -2
  228. data/spec/api/rpm_copy_api_spec.rb +2 -2
  229. data/spec/api/rpm_prune_api_spec.rb +2 -2
  230. data/spec/models/addon_response_spec.rb +11 -16
  231. data/spec/models/artifact_response_spec.rb +23 -22
  232. data/spec/models/async_operation_response_spec.rb +7 -12
  233. data/spec/models/checksum_response_spec.rb +8 -13
  234. data/spec/models/compression_type_enum_spec.rb +6 -11
  235. data/spec/models/content_summary_response_spec.rb +9 -14
  236. data/spec/models/copy_spec.rb +8 -13
  237. data/spec/models/image_response_spec.rb +10 -15
  238. data/spec/models/my_permissions_response_spec.rb +7 -12
  239. data/spec/models/nested_role_response_spec.rb +9 -14
  240. data/spec/models/nested_role_spec.rb +9 -14
  241. data/spec/models/object_roles_response_spec.rb +7 -12
  242. data/spec/models/package_checksum_type_enum_spec.rb +6 -11
  243. data/spec/models/paginated_repository_version_response_list_spec.rb +10 -15
  244. data/spec/models/paginatedrpm_distribution_tree_response_list_spec.rb +10 -15
  245. data/spec/models/paginatedrpm_modulemd_defaults_response_list_spec.rb +10 -15
  246. data/spec/models/paginatedrpm_modulemd_obsolete_response_list_spec.rb +10 -15
  247. data/spec/models/paginatedrpm_modulemd_response_list_spec.rb +10 -15
  248. data/spec/models/paginatedrpm_package_category_response_list_spec.rb +10 -15
  249. data/spec/models/paginatedrpm_package_environment_response_list_spec.rb +10 -15
  250. data/spec/models/paginatedrpm_package_group_response_list_spec.rb +10 -15
  251. data/spec/models/paginatedrpm_package_langpacks_response_list_spec.rb +10 -15
  252. data/spec/models/paginatedrpm_package_response_list_spec.rb +10 -15
  253. data/spec/models/paginatedrpm_repo_metadata_file_response_list_spec.rb +10 -15
  254. data/spec/models/paginatedrpm_rpm_alternate_content_source_response_list_spec.rb +10 -15
  255. data/spec/models/paginatedrpm_rpm_distribution_response_list_spec.rb +10 -15
  256. data/spec/models/paginatedrpm_rpm_publication_response_list_spec.rb +10 -15
  257. data/spec/models/paginatedrpm_rpm_remote_response_list_spec.rb +10 -15
  258. data/spec/models/paginatedrpm_rpm_repository_response_list_spec.rb +10 -15
  259. data/spec/models/paginatedrpm_uln_remote_response_list_spec.rb +10 -15
  260. data/spec/models/paginatedrpm_update_record_response_list_spec.rb +10 -15
  261. data/spec/models/patchedrpm_rpm_alternate_content_source_spec.rb +10 -15
  262. data/spec/models/patchedrpm_rpm_distribution_spec.rb +14 -19
  263. data/spec/models/patchedrpm_rpm_remote_spec.rb +28 -33
  264. data/spec/models/patchedrpm_rpm_repository_spec.rb +23 -28
  265. data/spec/models/patchedrpm_uln_remote_spec.rb +28 -33
  266. data/spec/models/policy_enum_spec.rb +6 -11
  267. data/spec/models/prune_packages_spec.rb +9 -14
  268. data/spec/models/repair_spec.rb +7 -12
  269. data/spec/models/repository_add_remove_content_spec.rb +9 -14
  270. data/spec/models/repository_version_response_spec.rb +19 -18
  271. data/spec/models/rpm_distribution_tree_response_spec.rb +31 -30
  272. data/spec/models/rpm_modulemd_defaults_response_spec.rb +18 -17
  273. data/spec/models/rpm_modulemd_defaults_spec.rb +11 -16
  274. data/spec/models/rpm_modulemd_obsolete_response_spec.rb +24 -23
  275. data/spec/models/rpm_modulemd_obsolete_spec.rb +17 -22
  276. data/spec/models/rpm_modulemd_response_spec.rb +26 -25
  277. data/spec/models/rpm_modulemd_spec.rb +19 -24
  278. data/spec/models/rpm_package_category_response_spec.rb +23 -22
  279. data/spec/models/rpm_package_environment_response_spec.rb +24 -23
  280. data/spec/models/rpm_package_group_response_spec.rb +26 -25
  281. data/spec/models/rpm_package_langpacks_response_spec.rb +17 -16
  282. data/spec/models/rpm_package_response_spec.rb +58 -57
  283. data/spec/models/rpm_repo_metadata_file_response_spec.rb +26 -25
  284. data/spec/models/rpm_repository_sync_url_spec.rb +11 -16
  285. data/spec/models/rpm_rpm_alternate_content_source_response_spec.rb +19 -18
  286. data/spec/models/rpm_rpm_alternate_content_source_spec.rb +10 -15
  287. data/spec/models/rpm_rpm_distribution_response_spec.rb +30 -23
  288. data/spec/models/rpm_rpm_distribution_spec.rb +14 -19
  289. data/spec/models/rpm_rpm_publication_response_spec.rb +25 -24
  290. data/spec/models/rpm_rpm_publication_spec.rb +15 -20
  291. data/spec/models/{rpm_rpm_remote_response_hidden_fields_spec.rb → rpm_rpm_remote_response_hidden_fields_inner_spec.rb} +11 -16
  292. data/spec/models/rpm_rpm_remote_response_spec.rb +33 -32
  293. data/spec/models/rpm_rpm_remote_spec.rb +28 -33
  294. data/spec/models/rpm_rpm_repository_response_spec.rb +35 -34
  295. data/spec/models/rpm_rpm_repository_spec.rb +23 -28
  296. data/spec/models/rpm_uln_remote_response_spec.rb +33 -32
  297. data/spec/models/rpm_uln_remote_spec.rb +28 -33
  298. data/spec/models/rpm_update_collection_response_spec.rb +10 -15
  299. data/spec/models/rpm_update_collection_spec.rb +9 -14
  300. data/spec/models/rpm_update_record_response_spec.rb +33 -32
  301. data/spec/models/set_label_response_spec.rb +8 -13
  302. data/spec/models/set_label_spec.rb +8 -13
  303. data/spec/models/skip_types_enum_spec.rb +6 -11
  304. data/spec/models/sync_policy_enum_spec.rb +6 -11
  305. data/spec/models/task_group_operation_response_spec.rb +7 -12
  306. data/spec/models/unset_label_response_spec.rb +8 -13
  307. data/spec/models/unset_label_spec.rb +7 -12
  308. data/spec/models/variant_response_spec.rb +16 -21
  309. data/spec/spec_helper.rb +1 -1
  310. metadata +133 -121
  311. data/docs/CompsXml.md +0 -21
  312. data/docs/RpmPackage.md +0 -25
  313. data/docs/RpmRpmRemoteResponseHiddenFields.md +0 -19
  314. data/docs/RpmUpdateRecord.md +0 -21
  315. data/lib/pulp_rpm_client/models/comps_xml.rb +0 -233
  316. data/lib/pulp_rpm_client/models/rpm_package.rb +0 -263
  317. data/lib/pulp_rpm_client/models/rpm_update_record.rb +0 -228
  318. data/spec/api_client_spec.rb +0 -188
  319. data/spec/configuration_spec.rb +0 -42
  320. data/spec/models/comps_xml_spec.rb +0 -53
  321. data/spec/models/rpm_package_spec.rb +0 -65
  322. data/spec/models/rpm_update_record_spec.rb +0 -53
@@ -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 PulpRpmClient
20
25
  class ApiClient
@@ -46,51 +51,38 @@ module PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
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
- PulpRpmClient.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 = PulpRpmClient.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 PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
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 PulpRpmClient
128
157
 
129
158
  def initialize
130
159
  @scheme = 'http'
131
- @host = 'pulp'
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 PulpRpmClient
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 PulpRpmClient
210
262
  def server_settings
211
263
  [
212
264
  {
213
- url: "http://pulp/",
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 PulpRpmClient
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