pulp_container_client 2.15.2 → 2.16.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 (77) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +38 -25
  3. data/docs/ContainerContainerDistribution.md +7 -7
  4. data/docs/ContainerContainerDistributionResponse.md +9 -9
  5. data/docs/ContainerContainerPushRepository.md +2 -2
  6. data/docs/ContainerContainerPushRepositoryResponse.md +9 -9
  7. data/docs/ContentBlobsApi.md +3 -1
  8. data/docs/ContentManifestsApi.md +3 -1
  9. data/docs/ContentSignaturesApi.md +7 -1
  10. data/docs/ContentTagsApi.md +3 -1
  11. data/docs/DistributionsContainerApi.md +132 -10
  12. data/docs/IndexDynamicApi.md +50 -0
  13. data/docs/IndexStaticApi.md +50 -0
  14. data/docs/PatchedcontainerContainerDistribution.md +7 -7
  15. data/docs/PatchedcontainerContainerPushRepository.md +2 -2
  16. data/docs/PulpContainerNamespacesApi.md +19 -9
  17. data/docs/RemotesContainerApi.md +131 -9
  18. data/docs/RepositoriesContainerApi.md +133 -11
  19. data/docs/RepositoriesContainerPushApi.md +20 -10
  20. data/docs/RepositoriesContainerPushVersionsApi.md +3 -1
  21. data/docs/RepositoriesContainerVersionsApi.md +3 -1
  22. data/docs/SetLabel.md +19 -0
  23. data/docs/SetLabelResponse.md +19 -0
  24. data/docs/TokenApi.md +1 -1
  25. data/docs/UnsetLabel.md +17 -0
  26. data/docs/UnsetLabelResponse.md +19 -0
  27. data/lib/pulp_container_client/api/content_blobs_api.rb +3 -0
  28. data/lib/pulp_container_client/api/content_manifests_api.rb +3 -0
  29. data/lib/pulp_container_client/api/content_signatures_api.rb +9 -0
  30. data/lib/pulp_container_client/api/content_tags_api.rb +3 -0
  31. data/lib/pulp_container_client/api/distributions_container_api.rb +157 -0
  32. data/lib/pulp_container_client/api/index_dynamic_api.rb +74 -0
  33. data/lib/pulp_container_client/api/index_static_api.rb +74 -0
  34. data/lib/pulp_container_client/api/pulp_container_namespaces_api.rb +17 -0
  35. data/lib/pulp_container_client/api/remotes_container_api.rb +157 -0
  36. data/lib/pulp_container_client/api/repositories_container_api.rb +159 -2
  37. data/lib/pulp_container_client/api/repositories_container_push_api.rb +17 -0
  38. data/lib/pulp_container_client/api/repositories_container_push_versions_api.rb +3 -0
  39. data/lib/pulp_container_client/api/repositories_container_versions_api.rb +3 -0
  40. data/lib/pulp_container_client/configuration.rb +2 -2
  41. data/lib/pulp_container_client/models/container_container_distribution.rb +55 -55
  42. data/lib/pulp_container_client/models/container_container_distribution_response.rb +48 -48
  43. data/lib/pulp_container_client/models/container_container_push_repository.rb +11 -11
  44. data/lib/pulp_container_client/models/container_container_push_repository_response.rb +35 -35
  45. data/lib/pulp_container_client/models/patchedcontainer_container_distribution.rb +46 -46
  46. data/lib/pulp_container_client/models/patchedcontainer_container_push_repository.rb +11 -11
  47. data/lib/pulp_container_client/models/set_label.rb +252 -0
  48. data/lib/pulp_container_client/models/set_label_response.rb +243 -0
  49. data/lib/pulp_container_client/models/unset_label.rb +242 -0
  50. data/lib/pulp_container_client/models/unset_label_response.rb +242 -0
  51. data/lib/pulp_container_client/version.rb +1 -1
  52. data/lib/pulp_container_client.rb +6 -0
  53. data/spec/api/content_blobs_api_spec.rb +1 -0
  54. data/spec/api/content_manifests_api_spec.rb +1 -0
  55. data/spec/api/content_signatures_api_spec.rb +3 -0
  56. data/spec/api/content_tags_api_spec.rb +1 -0
  57. data/spec/api/distributions_container_api_spec.rb +33 -0
  58. data/spec/api/index_dynamic_api_spec.rb +45 -0
  59. data/spec/api/index_static_api_spec.rb +45 -0
  60. data/spec/api/pulp_container_namespaces_api_spec.rb +7 -0
  61. data/spec/api/remotes_container_api_spec.rb +33 -0
  62. data/spec/api/repositories_container_api_spec.rb +34 -1
  63. data/spec/api/repositories_container_push_api_spec.rb +7 -0
  64. data/spec/api/repositories_container_push_versions_api_spec.rb +1 -0
  65. data/spec/api/repositories_container_versions_api_spec.rb +1 -0
  66. data/spec/configuration_spec.rb +3 -3
  67. data/spec/models/container_container_distribution_response_spec.rb +8 -8
  68. data/spec/models/container_container_distribution_spec.rb +5 -5
  69. data/spec/models/container_container_push_repository_response_spec.rb +7 -7
  70. data/spec/models/container_container_push_repository_spec.rb +2 -2
  71. data/spec/models/patchedcontainer_container_distribution_spec.rb +5 -5
  72. data/spec/models/patchedcontainer_container_push_repository_spec.rb +2 -2
  73. data/spec/models/set_label_response_spec.rb +47 -0
  74. data/spec/models/set_label_spec.rb +47 -0
  75. data/spec/models/unset_label_response_spec.rb +47 -0
  76. data/spec/models/unset_label_spec.rb +41 -0
  77. metadata +67 -43
@@ -15,22 +15,22 @@ require 'date'
15
15
  module PulpContainerClient
16
16
  # A serializer for ContainerDistribution.
17
17
  class PatchedcontainerContainerDistribution
18
- attr_accessor :pulp_labels
18
+ # Whether this distribution should be shown in the content app.
19
+ attr_accessor :hidden
19
20
 
20
- # An optional content-guard. If none is specified, a default one will be used.
21
- attr_accessor :content_guard
21
+ attr_accessor :pulp_labels
22
22
 
23
- # The latest RepositoryVersion for this Repository will be served.
24
- attr_accessor :repository
23
+ # The base (relative) path component of the published url. Avoid paths that overlap with other distribution base paths (e.g. \"foo\" and \"foo/bar\")
24
+ attr_accessor :base_path
25
25
 
26
26
  # A unique name. Ex, `rawhide` and `stable`.
27
27
  attr_accessor :name
28
28
 
29
- # Whether this distribution should be shown in the content app.
30
- attr_accessor :hidden
29
+ # An optional content-guard. If none is specified, a default one will be used.
30
+ attr_accessor :content_guard
31
31
 
32
- # The base (relative) path component of the published url. Avoid paths that overlap with other distribution base paths (e.g. \"foo\" and \"foo/bar\")
33
- attr_accessor :base_path
32
+ # The latest RepositoryVersion for this Repository will be served.
33
+ attr_accessor :repository
34
34
 
35
35
  # RepositoryVersion to be served
36
36
  attr_accessor :repository_version
@@ -44,12 +44,12 @@ module PulpContainerClient
44
44
  # Attribute mapping from ruby-style variable name to JSON key.
45
45
  def self.attribute_map
46
46
  {
47
+ :'hidden' => :'hidden',
47
48
  :'pulp_labels' => :'pulp_labels',
49
+ :'base_path' => :'base_path',
50
+ :'name' => :'name',
48
51
  :'content_guard' => :'content_guard',
49
52
  :'repository' => :'repository',
50
- :'name' => :'name',
51
- :'hidden' => :'hidden',
52
- :'base_path' => :'base_path',
53
53
  :'repository_version' => :'repository_version',
54
54
  :'private' => :'private',
55
55
  :'description' => :'description'
@@ -59,12 +59,12 @@ module PulpContainerClient
59
59
  # Attribute type mapping.
60
60
  def self.openapi_types
61
61
  {
62
+ :'hidden' => :'Boolean',
62
63
  :'pulp_labels' => :'Hash<String, String>',
64
+ :'base_path' => :'String',
65
+ :'name' => :'String',
63
66
  :'content_guard' => :'String',
64
67
  :'repository' => :'String',
65
- :'name' => :'String',
66
- :'hidden' => :'Boolean',
67
- :'base_path' => :'String',
68
68
  :'repository_version' => :'String',
69
69
  :'private' => :'Boolean',
70
70
  :'description' => :'String'
@@ -95,32 +95,32 @@ module PulpContainerClient
95
95
  h[k.to_sym] = v
96
96
  }
97
97
 
98
+ if attributes.key?(:'hidden')
99
+ self.hidden = attributes[:'hidden']
100
+ else
101
+ self.hidden = false
102
+ end
103
+
98
104
  if attributes.key?(:'pulp_labels')
99
105
  if (value = attributes[:'pulp_labels']).is_a?(Hash)
100
106
  self.pulp_labels = value
101
107
  end
102
108
  end
103
109
 
104
- if attributes.key?(:'content_guard')
105
- self.content_guard = attributes[:'content_guard']
106
- end
107
-
108
- if attributes.key?(:'repository')
109
- self.repository = attributes[:'repository']
110
+ if attributes.key?(:'base_path')
111
+ self.base_path = attributes[:'base_path']
110
112
  end
111
113
 
112
114
  if attributes.key?(:'name')
113
115
  self.name = attributes[:'name']
114
116
  end
115
117
 
116
- if attributes.key?(:'hidden')
117
- self.hidden = attributes[:'hidden']
118
- else
119
- self.hidden = false
118
+ if attributes.key?(:'content_guard')
119
+ self.content_guard = attributes[:'content_guard']
120
120
  end
121
121
 
122
- if attributes.key?(:'base_path')
123
- self.base_path = attributes[:'base_path']
122
+ if attributes.key?(:'repository')
123
+ self.repository = attributes[:'repository']
124
124
  end
125
125
 
126
126
  if attributes.key?(:'repository_version')
@@ -140,14 +140,14 @@ module PulpContainerClient
140
140
  # @return Array for valid properties with the reasons
141
141
  def list_invalid_properties
142
142
  invalid_properties = Array.new
143
- if !@name.nil? && @name.to_s.length < 1
144
- invalid_properties.push('invalid value for "name", the character length must be great than or equal to 1.')
145
- end
146
-
147
143
  if !@base_path.nil? && @base_path.to_s.length < 1
148
144
  invalid_properties.push('invalid value for "base_path", the character length must be great than or equal to 1.')
149
145
  end
150
146
 
147
+ if !@name.nil? && @name.to_s.length < 1
148
+ invalid_properties.push('invalid value for "name", the character length must be great than or equal to 1.')
149
+ end
150
+
151
151
  if !@description.nil? && @description.to_s.length < 1
152
152
  invalid_properties.push('invalid value for "description", the character length must be great than or equal to 1.')
153
153
  end
@@ -158,22 +158,12 @@ module PulpContainerClient
158
158
  # Check to see if the all the properties in the model are valid
159
159
  # @return true if the model is valid
160
160
  def valid?
161
- return false if !@name.nil? && @name.to_s.length < 1
162
161
  return false if !@base_path.nil? && @base_path.to_s.length < 1
162
+ return false if !@name.nil? && @name.to_s.length < 1
163
163
  return false if !@description.nil? && @description.to_s.length < 1
164
164
  true
165
165
  end
166
166
 
167
- # Custom attribute writer method with validation
168
- # @param [Object] name Value to be assigned
169
- def name=(name)
170
- if !name.nil? && name.to_s.length < 1
171
- fail ArgumentError, 'invalid value for "name", the character length must be great than or equal to 1.'
172
- end
173
-
174
- @name = name
175
- end
176
-
177
167
  # Custom attribute writer method with validation
178
168
  # @param [Object] base_path Value to be assigned
179
169
  def base_path=(base_path)
@@ -184,6 +174,16 @@ module PulpContainerClient
184
174
  @base_path = base_path
185
175
  end
186
176
 
177
+ # Custom attribute writer method with validation
178
+ # @param [Object] name Value to be assigned
179
+ def name=(name)
180
+ if !name.nil? && name.to_s.length < 1
181
+ fail ArgumentError, 'invalid value for "name", the character length must be great than or equal to 1.'
182
+ end
183
+
184
+ @name = name
185
+ end
186
+
187
187
  # Custom attribute writer method with validation
188
188
  # @param [Object] description Value to be assigned
189
189
  def description=(description)
@@ -199,12 +199,12 @@ module PulpContainerClient
199
199
  def ==(o)
200
200
  return true if self.equal?(o)
201
201
  self.class == o.class &&
202
+ hidden == o.hidden &&
202
203
  pulp_labels == o.pulp_labels &&
204
+ base_path == o.base_path &&
205
+ name == o.name &&
203
206
  content_guard == o.content_guard &&
204
207
  repository == o.repository &&
205
- name == o.name &&
206
- hidden == o.hidden &&
207
- base_path == o.base_path &&
208
208
  repository_version == o.repository_version &&
209
209
  private == o.private &&
210
210
  description == o.description
@@ -219,7 +219,7 @@ module PulpContainerClient
219
219
  # Calculates hash code according to all attributes.
220
220
  # @return [Integer] Hash code
221
221
  def hash
222
- [pulp_labels, content_guard, repository, name, hidden, base_path, repository_version, private, description].hash
222
+ [hidden, pulp_labels, base_path, name, content_guard, repository, repository_version, private, description].hash
223
223
  end
224
224
 
225
225
  # Builds the object from hash
@@ -20,12 +20,12 @@ module PulpContainerClient
20
20
 
21
21
  attr_accessor :pulp_labels
22
22
 
23
- # A reference to an associated signing service.
24
- attr_accessor :manifest_signing_service
25
-
26
23
  # A unique name for this repository.
27
24
  attr_accessor :name
28
25
 
26
+ # A reference to an associated signing service.
27
+ attr_accessor :manifest_signing_service
28
+
29
29
  # An optional description.
30
30
  attr_accessor :description
31
31
 
@@ -34,8 +34,8 @@ module PulpContainerClient
34
34
  {
35
35
  :'retain_repo_versions' => :'retain_repo_versions',
36
36
  :'pulp_labels' => :'pulp_labels',
37
- :'manifest_signing_service' => :'manifest_signing_service',
38
37
  :'name' => :'name',
38
+ :'manifest_signing_service' => :'manifest_signing_service',
39
39
  :'description' => :'description'
40
40
  }
41
41
  end
@@ -45,8 +45,8 @@ module PulpContainerClient
45
45
  {
46
46
  :'retain_repo_versions' => :'Integer',
47
47
  :'pulp_labels' => :'Hash<String, String>',
48
- :'manifest_signing_service' => :'String',
49
48
  :'name' => :'String',
49
+ :'manifest_signing_service' => :'String',
50
50
  :'description' => :'String'
51
51
  }
52
52
  end
@@ -85,14 +85,14 @@ module PulpContainerClient
85
85
  end
86
86
  end
87
87
 
88
- if attributes.key?(:'manifest_signing_service')
89
- self.manifest_signing_service = attributes[:'manifest_signing_service']
90
- end
91
-
92
88
  if attributes.key?(:'name')
93
89
  self.name = attributes[:'name']
94
90
  end
95
91
 
92
+ if attributes.key?(:'manifest_signing_service')
93
+ self.manifest_signing_service = attributes[:'manifest_signing_service']
94
+ end
95
+
96
96
  if attributes.key?(:'description')
97
97
  self.description = attributes[:'description']
98
98
  end
@@ -163,8 +163,8 @@ module PulpContainerClient
163
163
  self.class == o.class &&
164
164
  retain_repo_versions == o.retain_repo_versions &&
165
165
  pulp_labels == o.pulp_labels &&
166
- manifest_signing_service == o.manifest_signing_service &&
167
166
  name == o.name &&
167
+ manifest_signing_service == o.manifest_signing_service &&
168
168
  description == o.description
169
169
  end
170
170
 
@@ -177,7 +177,7 @@ module PulpContainerClient
177
177
  # Calculates hash code according to all attributes.
178
178
  # @return [Integer] Hash code
179
179
  def hash
180
- [retain_repo_versions, pulp_labels, manifest_signing_service, name, description].hash
180
+ [retain_repo_versions, pulp_labels, name, manifest_signing_service, description].hash
181
181
  end
182
182
 
183
183
  # Builds the object from hash
@@ -0,0 +1,252 @@
1
+ =begin
2
+ #Pulp 3 API
3
+
4
+ #Fetch, Upload, Organize, and Distribute Software Packages
5
+
6
+ The version of the OpenAPI document: v3
7
+ Contact: pulp-list@redhat.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.3.1
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module PulpContainerClient
16
+ # Serializer for synchronously setting a label.
17
+ class SetLabel
18
+ attr_accessor :key
19
+
20
+ attr_accessor :value
21
+
22
+ # Attribute mapping from ruby-style variable name to JSON key.
23
+ def self.attribute_map
24
+ {
25
+ :'key' => :'key',
26
+ :'value' => :'value'
27
+ }
28
+ end
29
+
30
+ # Attribute type mapping.
31
+ def self.openapi_types
32
+ {
33
+ :'key' => :'String',
34
+ :'value' => :'String'
35
+ }
36
+ end
37
+
38
+ # List of attributes with nullable: true
39
+ def self.openapi_nullable
40
+ Set.new([
41
+ :'value'
42
+ ])
43
+ end
44
+
45
+ # Initializes the object
46
+ # @param [Hash] attributes Model attributes in the form of hash
47
+ def initialize(attributes = {})
48
+ if (!attributes.is_a?(Hash))
49
+ fail ArgumentError, "The input argument (attributes) must be a hash in `PulpContainerClient::SetLabel` initialize method"
50
+ end
51
+
52
+ # check to see if the attribute exists and convert string to symbol for hash key
53
+ attributes = attributes.each_with_object({}) { |(k, v), h|
54
+ if (!self.class.attribute_map.key?(k.to_sym))
55
+ fail ArgumentError, "`#{k}` is not a valid attribute in `PulpContainerClient::SetLabel`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
56
+ end
57
+ h[k.to_sym] = v
58
+ }
59
+
60
+ if attributes.key?(:'key')
61
+ self.key = attributes[:'key']
62
+ end
63
+
64
+ if attributes.key?(:'value')
65
+ self.value = attributes[:'value']
66
+ end
67
+ end
68
+
69
+ # Show invalid properties with the reasons. Usually used together with valid?
70
+ # @return Array for valid properties with the reasons
71
+ def list_invalid_properties
72
+ invalid_properties = Array.new
73
+ if @key.nil?
74
+ invalid_properties.push('invalid value for "key", key cannot be nil.')
75
+ end
76
+
77
+ if @key.to_s.length < 1
78
+ invalid_properties.push('invalid value for "key", the character length must be great than or equal to 1.')
79
+ end
80
+
81
+ pattern = Regexp.new(/^[-a-zA-Z0-9_]+$/)
82
+ if @key !~ pattern
83
+ invalid_properties.push("invalid value for \"key\", must conform to the pattern #{pattern}.")
84
+ end
85
+
86
+ invalid_properties
87
+ end
88
+
89
+ # Check to see if the all the properties in the model are valid
90
+ # @return true if the model is valid
91
+ def valid?
92
+ return false if @key.nil?
93
+ return false if @key.to_s.length < 1
94
+ return false if @key !~ Regexp.new(/^[-a-zA-Z0-9_]+$/)
95
+ true
96
+ end
97
+
98
+ # Custom attribute writer method with validation
99
+ # @param [Object] key Value to be assigned
100
+ def key=(key)
101
+ if key.nil?
102
+ fail ArgumentError, 'key cannot be nil'
103
+ end
104
+
105
+ if key.to_s.length < 1
106
+ fail ArgumentError, 'invalid value for "key", the character length must be great than or equal to 1.'
107
+ end
108
+
109
+ pattern = Regexp.new(/^[-a-zA-Z0-9_]+$/)
110
+ if key !~ pattern
111
+ fail ArgumentError, "invalid value for \"key\", must conform to the pattern #{pattern}."
112
+ end
113
+
114
+ @key = key
115
+ end
116
+
117
+ # Checks equality by comparing each attribute.
118
+ # @param [Object] Object to be compared
119
+ def ==(o)
120
+ return true if self.equal?(o)
121
+ self.class == o.class &&
122
+ key == o.key &&
123
+ value == o.value
124
+ end
125
+
126
+ # @see the `==` method
127
+ # @param [Object] Object to be compared
128
+ def eql?(o)
129
+ self == o
130
+ end
131
+
132
+ # Calculates hash code according to all attributes.
133
+ # @return [Integer] Hash code
134
+ def hash
135
+ [key, value].hash
136
+ end
137
+
138
+ # Builds the object from hash
139
+ # @param [Hash] attributes Model attributes in the form of hash
140
+ # @return [Object] Returns the model itself
141
+ def self.build_from_hash(attributes)
142
+ new.build_from_hash(attributes)
143
+ end
144
+
145
+ # Builds the object from hash
146
+ # @param [Hash] attributes Model attributes in the form of hash
147
+ # @return [Object] Returns the model itself
148
+ def build_from_hash(attributes)
149
+ return nil unless attributes.is_a?(Hash)
150
+ self.class.openapi_types.each_pair do |key, type|
151
+ if type =~ /\AArray<(.*)>/i
152
+ # check to ensure the input is an array given that the attribute
153
+ # is documented as an array but the input is not
154
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
155
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
156
+ end
157
+ elsif !attributes[self.class.attribute_map[key]].nil?
158
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
159
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
160
+ end
161
+
162
+ self
163
+ end
164
+
165
+ # Deserializes the data based on type
166
+ # @param string type Data type
167
+ # @param string value Value to be deserialized
168
+ # @return [Object] Deserialized data
169
+ def _deserialize(type, value)
170
+ case type.to_sym
171
+ when :DateTime
172
+ DateTime.parse(value)
173
+ when :Date
174
+ Date.parse(value)
175
+ when :String
176
+ value.to_s
177
+ when :Integer
178
+ value.to_i
179
+ when :Float
180
+ value.to_f
181
+ when :Boolean
182
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
183
+ true
184
+ else
185
+ false
186
+ end
187
+ when :Object
188
+ # generic object (usually a Hash), return directly
189
+ value
190
+ when /\AArray<(?<inner_type>.+)>\z/
191
+ inner_type = Regexp.last_match[:inner_type]
192
+ value.map { |v| _deserialize(inner_type, v) }
193
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
194
+ k_type = Regexp.last_match[:k_type]
195
+ v_type = Regexp.last_match[:v_type]
196
+ {}.tap do |hash|
197
+ value.each do |k, v|
198
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
199
+ end
200
+ end
201
+ else # model
202
+ PulpContainerClient.const_get(type).build_from_hash(value)
203
+ end
204
+ end
205
+
206
+ # Returns the string representation of the object
207
+ # @return [String] String presentation of the object
208
+ def to_s
209
+ to_hash.to_s
210
+ end
211
+
212
+ # to_body is an alias to to_hash (backward compatibility)
213
+ # @return [Hash] Returns the object in the form of hash
214
+ def to_body
215
+ to_hash
216
+ end
217
+
218
+ # Returns the object in the form of hash
219
+ # @return [Hash] Returns the object in the form of hash
220
+ def to_hash
221
+ hash = {}
222
+ self.class.attribute_map.each_pair do |attr, param|
223
+ value = self.send(attr)
224
+ if value.nil?
225
+ is_nullable = self.class.openapi_nullable.include?(attr)
226
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
227
+ end
228
+
229
+ hash[param] = _to_hash(value)
230
+ end
231
+ hash
232
+ end
233
+
234
+ # Outputs non-array value in the form of hash
235
+ # For object, use to_hash. Otherwise, just return the value
236
+ # @param [Object] value Any valid value
237
+ # @return [Hash] Returns the value in the form of hash
238
+ def _to_hash(value)
239
+ if value.is_a?(Array)
240
+ value.compact.map { |v| _to_hash(v) }
241
+ elsif value.is_a?(Hash)
242
+ {}.tap do |hash|
243
+ value.each { |k, v| hash[k] = _to_hash(v) }
244
+ end
245
+ elsif value.respond_to? :to_hash
246
+ value.to_hash
247
+ else
248
+ value
249
+ end
250
+ end
251
+ end
252
+ end