shotstack 0.0.9 → 0.0.10
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.
- checksums.yaml +5 -5
- data/README.md +17 -0
- data/lib/shotstack.rb +24 -15
- data/lib/shotstack/api/default_api.rb +131 -0
- data/lib/shotstack/api_client.rb +120 -51
- data/lib/shotstack/api_error.rb +38 -5
- data/lib/shotstack/configuration.rb +90 -3
- data/lib/shotstack/models/asset.rb +17 -0
- data/lib/shotstack/models/clip.rb +308 -0
- data/lib/shotstack/models/edit.rb +104 -45
- data/lib/shotstack/models/image_asset.rb +221 -0
- data/lib/shotstack/models/output.rb +128 -41
- data/lib/shotstack/models/queued_response.rb +110 -48
- data/lib/shotstack/models/queued_response_data.rb +105 -45
- data/lib/shotstack/models/render_response.rb +110 -48
- data/lib/shotstack/models/render_response_data.rb +172 -68
- data/lib/shotstack/models/soundtrack.rb +106 -45
- data/lib/shotstack/models/timeline.rb +101 -46
- data/lib/shotstack/models/title_asset.rb +265 -0
- data/lib/shotstack/models/track.rb +89 -33
- data/lib/shotstack/models/transition.rb +121 -42
- data/lib/shotstack/models/video_asset.rb +241 -0
- data/lib/shotstack/version.rb +13 -1
- data/shotstack.gemspec +26 -13
- metadata +38 -40
- data/lib/shotstack/api/render_api.rb +0 -137
- data/lib/shotstack/models/clips.rb +0 -147
- data/lib/shotstack/models/image_clip.rb +0 -216
- data/lib/shotstack/models/image_clip_options.rb +0 -175
- data/lib/shotstack/models/title_clip.rb +0 -216
- data/lib/shotstack/models/title_clip_options.rb +0 -194
- data/lib/shotstack/models/video_clip.rb +0 -216
- data/lib/shotstack/models/video_clip_options.rb +0 -185
- data/tags +0 -306
@@ -1,136 +1,233 @@
|
|
1
|
+
=begin
|
2
|
+
#shotstack
|
3
|
+
|
4
|
+
#The Shotstack API is a video editing service that allows for the programatic creation of videos using JSON.
|
5
|
+
|
6
|
+
OpenAPI spec version: v1
|
7
|
+
|
8
|
+
Generated by: https://openapi-generator.tech
|
9
|
+
OpenAPI Generator version: 4.0.0-beta3
|
10
|
+
|
11
|
+
=end
|
12
|
+
|
1
13
|
require 'date'
|
2
14
|
|
3
15
|
module Shotstack
|
4
|
-
# Model for RenderResponseData
|
5
16
|
class RenderResponseData
|
6
|
-
|
7
|
-
|
8
|
-
attr_accessor :data
|
17
|
+
# The status of the render task
|
18
|
+
attr_accessor :status
|
9
19
|
|
20
|
+
# The id of the render task in UUID format
|
10
21
|
attr_accessor :id
|
11
22
|
|
23
|
+
# The owner id of the render task
|
12
24
|
attr_accessor :owner
|
13
25
|
|
14
|
-
attr_accessor :
|
26
|
+
attr_accessor :data
|
27
|
+
|
28
|
+
# The time the render task was initially queued
|
29
|
+
attr_accessor :created
|
15
30
|
|
31
|
+
# The time the render status was last updated
|
16
32
|
attr_accessor :updated
|
17
33
|
|
34
|
+
class EnumAttributeValidator
|
35
|
+
attr_reader :datatype
|
36
|
+
attr_reader :allowable_values
|
37
|
+
|
38
|
+
def initialize(datatype, allowable_values)
|
39
|
+
@allowable_values = allowable_values.map do |value|
|
40
|
+
case datatype.to_s
|
41
|
+
when /Integer/i
|
42
|
+
value.to_i
|
43
|
+
when /Float/i
|
44
|
+
value.to_f
|
45
|
+
else
|
46
|
+
value
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def valid?(value)
|
52
|
+
!value || allowable_values.include?(value)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
18
56
|
# Attribute mapping from ruby-style variable name to JSON key.
|
19
57
|
def self.attribute_map
|
20
58
|
{
|
21
|
-
|
22
|
-
:'created' => :'created',
|
23
|
-
|
24
|
-
:'data' => :'data',
|
25
|
-
|
59
|
+
:'status' => :'status',
|
26
60
|
:'id' => :'id',
|
27
|
-
|
28
61
|
:'owner' => :'owner',
|
29
|
-
|
30
|
-
:'
|
31
|
-
|
62
|
+
:'data' => :'data',
|
63
|
+
:'created' => :'created',
|
32
64
|
:'updated' => :'updated'
|
33
|
-
|
34
65
|
}
|
35
66
|
end
|
36
67
|
|
37
68
|
# Attribute type mapping.
|
38
|
-
def self.
|
69
|
+
def self.openapi_types
|
39
70
|
{
|
40
|
-
:'
|
41
|
-
:'data' => :'Edit',
|
71
|
+
:'status' => :'String',
|
42
72
|
:'id' => :'String',
|
43
73
|
:'owner' => :'String',
|
44
|
-
:'
|
74
|
+
:'data' => :'Edit',
|
75
|
+
:'created' => :'String',
|
45
76
|
:'updated' => :'String'
|
46
|
-
|
47
77
|
}
|
48
78
|
end
|
49
79
|
|
80
|
+
# Initializes the object
|
81
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
50
82
|
def initialize(attributes = {})
|
51
|
-
|
83
|
+
if (!attributes.is_a?(Hash))
|
84
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `Shotstack::RenderResponseData` initialize method"
|
85
|
+
end
|
52
86
|
|
53
|
-
# convert string to symbol for hash key
|
54
|
-
attributes = attributes.
|
87
|
+
# check to see if the attribute exists and convert string to symbol for hash key
|
88
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
89
|
+
if (!self.class.attribute_map.key?(k.to_sym))
|
90
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `Shotstack::RenderResponseData`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
|
91
|
+
end
|
92
|
+
h[k.to_sym] = v
|
93
|
+
}
|
55
94
|
|
56
|
-
|
57
|
-
|
58
|
-
self.created = attributes[:'created']
|
59
|
-
end
|
60
|
-
|
61
|
-
if attributes[:'data']
|
62
|
-
self.data = attributes[:'data']
|
95
|
+
if attributes.key?(:'status')
|
96
|
+
self.status = attributes[:'status']
|
63
97
|
end
|
64
|
-
|
65
|
-
if attributes
|
98
|
+
|
99
|
+
if attributes.key?(:'id')
|
66
100
|
self.id = attributes[:'id']
|
67
101
|
end
|
68
|
-
|
69
|
-
if attributes
|
102
|
+
|
103
|
+
if attributes.key?(:'owner')
|
70
104
|
self.owner = attributes[:'owner']
|
71
105
|
end
|
72
|
-
|
73
|
-
if attributes
|
74
|
-
self.
|
106
|
+
|
107
|
+
if attributes.key?(:'data')
|
108
|
+
self.data = attributes[:'data']
|
75
109
|
end
|
76
|
-
|
77
|
-
if attributes
|
110
|
+
|
111
|
+
if attributes.key?(:'created')
|
112
|
+
self.created = attributes[:'created']
|
113
|
+
end
|
114
|
+
|
115
|
+
if attributes.key?(:'updated')
|
78
116
|
self.updated = attributes[:'updated']
|
79
117
|
end
|
80
|
-
|
118
|
+
end
|
119
|
+
|
120
|
+
# Show invalid properties with the reasons. Usually used together with valid?
|
121
|
+
# @return Array for valid properties with the reasons
|
122
|
+
def list_invalid_properties
|
123
|
+
invalid_properties = Array.new
|
124
|
+
if @status.nil?
|
125
|
+
invalid_properties.push('invalid value for "status", status cannot be nil.')
|
126
|
+
end
|
127
|
+
|
128
|
+
if @id.nil?
|
129
|
+
invalid_properties.push('invalid value for "id", id cannot be nil.')
|
130
|
+
end
|
131
|
+
|
132
|
+
if @owner.nil?
|
133
|
+
invalid_properties.push('invalid value for "owner", owner cannot be nil.')
|
134
|
+
end
|
135
|
+
|
136
|
+
if @data.nil?
|
137
|
+
invalid_properties.push('invalid value for "data", data cannot be nil.')
|
138
|
+
end
|
139
|
+
|
140
|
+
if @created.nil?
|
141
|
+
invalid_properties.push('invalid value for "created", created cannot be nil.')
|
142
|
+
end
|
143
|
+
|
144
|
+
if @updated.nil?
|
145
|
+
invalid_properties.push('invalid value for "updated", updated cannot be nil.')
|
146
|
+
end
|
147
|
+
|
148
|
+
invalid_properties
|
149
|
+
end
|
150
|
+
|
151
|
+
# Check to see if the all the properties in the model are valid
|
152
|
+
# @return true if the model is valid
|
153
|
+
def valid?
|
154
|
+
return false if @status.nil?
|
155
|
+
status_validator = EnumAttributeValidator.new('String', ["queued", "fetching", "rendering", "saving", "done", "failed"])
|
156
|
+
return false unless status_validator.valid?(@status)
|
157
|
+
return false if @id.nil?
|
158
|
+
return false if @owner.nil?
|
159
|
+
return false if @data.nil?
|
160
|
+
return false if @created.nil?
|
161
|
+
return false if @updated.nil?
|
162
|
+
true
|
81
163
|
end
|
82
164
|
|
83
165
|
# Custom attribute writer method checking allowed values (enum).
|
166
|
+
# @param [Object] status Object to be assigned
|
84
167
|
def status=(status)
|
85
|
-
|
86
|
-
|
87
|
-
fail "invalid value for
|
168
|
+
validator = EnumAttributeValidator.new('String', ["queued", "fetching", "rendering", "saving", "done", "failed"])
|
169
|
+
unless validator.valid?(status)
|
170
|
+
fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
|
88
171
|
end
|
89
172
|
@status = status
|
90
173
|
end
|
91
174
|
|
92
|
-
#
|
175
|
+
# Checks equality by comparing each attribute.
|
176
|
+
# @param [Object] Object to be compared
|
93
177
|
def ==(o)
|
94
178
|
return true if self.equal?(o)
|
95
179
|
self.class == o.class &&
|
96
|
-
|
97
|
-
data == o.data &&
|
180
|
+
status == o.status &&
|
98
181
|
id == o.id &&
|
99
182
|
owner == o.owner &&
|
100
|
-
|
183
|
+
data == o.data &&
|
184
|
+
created == o.created &&
|
101
185
|
updated == o.updated
|
102
186
|
end
|
103
187
|
|
104
188
|
# @see the `==` method
|
189
|
+
# @param [Object] Object to be compared
|
105
190
|
def eql?(o)
|
106
191
|
self == o
|
107
192
|
end
|
108
193
|
|
109
|
-
#
|
194
|
+
# Calculates hash code according to all attributes.
|
195
|
+
# @return [Integer] Hash code
|
110
196
|
def hash
|
111
|
-
[
|
197
|
+
[status, id, owner, data, created, updated].hash
|
112
198
|
end
|
113
199
|
|
114
|
-
#
|
200
|
+
# Builds the object from hash
|
201
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
202
|
+
# @return [Object] Returns the model itself
|
203
|
+
def self.build_from_hash(attributes)
|
204
|
+
new.build_from_hash(attributes)
|
205
|
+
end
|
206
|
+
|
207
|
+
# Builds the object from hash
|
208
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
209
|
+
# @return [Object] Returns the model itself
|
115
210
|
def build_from_hash(attributes)
|
116
211
|
return nil unless attributes.is_a?(Hash)
|
117
|
-
self.class.
|
118
|
-
if type =~
|
212
|
+
self.class.openapi_types.each_pair do |key, type|
|
213
|
+
if type =~ /\AArray<(.*)>/i
|
214
|
+
# check to ensure the input is an array given that the attribute
|
215
|
+
# is documented as an array but the input is not
|
119
216
|
if attributes[self.class.attribute_map[key]].is_a?(Array)
|
120
|
-
self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) }
|
121
|
-
else
|
122
|
-
#TODO show warning in debug mode
|
217
|
+
self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
|
123
218
|
end
|
124
219
|
elsif !attributes[self.class.attribute_map[key]].nil?
|
125
220
|
self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
|
126
|
-
else
|
127
|
-
# data not found in attributes(hash), not an issue as the data can be optional
|
128
|
-
end
|
221
|
+
end # or else data not found in attributes(hash), not an issue as the data can be optional
|
129
222
|
end
|
130
223
|
|
131
224
|
self
|
132
225
|
end
|
133
226
|
|
227
|
+
# Deserializes the data based on type
|
228
|
+
# @param string type Data type
|
229
|
+
# @param string value Value to be deserialized
|
230
|
+
# @return [Object] Deserialized data
|
134
231
|
def _deserialize(type, value)
|
135
232
|
case type.to_sym
|
136
233
|
when :DateTime
|
@@ -143,16 +240,19 @@ module Shotstack
|
|
143
240
|
value.to_i
|
144
241
|
when :Float
|
145
242
|
value.to_f
|
146
|
-
when :
|
147
|
-
if value =~
|
243
|
+
when :Boolean
|
244
|
+
if value.to_s =~ /\A(true|t|yes|y|1)\z/i
|
148
245
|
true
|
149
246
|
else
|
150
247
|
false
|
151
248
|
end
|
249
|
+
when :Object
|
250
|
+
# generic object (usually a Hash), return directly
|
251
|
+
value
|
152
252
|
when /\AArray<(?<inner_type>.+)>\z/
|
153
253
|
inner_type = Regexp.last_match[:inner_type]
|
154
254
|
value.map { |v| _deserialize(inner_type, v) }
|
155
|
-
when /\AHash<(?<k_type
|
255
|
+
when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
|
156
256
|
k_type = Regexp.last_match[:k_type]
|
157
257
|
v_type = Regexp.last_match[:v_type]
|
158
258
|
{}.tap do |hash|
|
@@ -161,21 +261,24 @@ module Shotstack
|
|
161
261
|
end
|
162
262
|
end
|
163
263
|
else # model
|
164
|
-
|
165
|
-
_model.build_from_hash(value)
|
264
|
+
Shotstack.const_get(type).build_from_hash(value)
|
166
265
|
end
|
167
266
|
end
|
168
267
|
|
268
|
+
# Returns the string representation of the object
|
269
|
+
# @return [String] String presentation of the object
|
169
270
|
def to_s
|
170
271
|
to_hash.to_s
|
171
272
|
end
|
172
273
|
|
173
|
-
# to_body is an alias to
|
274
|
+
# to_body is an alias to to_hash (backward compatibility)
|
275
|
+
# @return [Hash] Returns the object in the form of hash
|
174
276
|
def to_body
|
175
277
|
to_hash
|
176
278
|
end
|
177
279
|
|
178
|
-
#
|
280
|
+
# Returns the object in the form of hash
|
281
|
+
# @return [Hash] Returns the object in the form of hash
|
179
282
|
def to_hash
|
180
283
|
hash = {}
|
181
284
|
self.class.attribute_map.each_pair do |attr, param|
|
@@ -186,11 +289,13 @@ module Shotstack
|
|
186
289
|
hash
|
187
290
|
end
|
188
291
|
|
189
|
-
#
|
292
|
+
# Outputs non-array value in the form of hash
|
190
293
|
# For object, use to_hash. Otherwise, just return the value
|
294
|
+
# @param [Object] value Any valid value
|
295
|
+
# @return [Hash] Returns the value in the form of hash
|
191
296
|
def _to_hash(value)
|
192
297
|
if value.is_a?(Array)
|
193
|
-
value.compact.map{ |v| _to_hash(v) }
|
298
|
+
value.compact.map { |v| _to_hash(v) }
|
194
299
|
elsif value.is_a?(Hash)
|
195
300
|
{}.tap do |hash|
|
196
301
|
value.each { |k, v| hash[k] = _to_hash(v) }
|
@@ -201,6 +306,5 @@ module Shotstack
|
|
201
306
|
value
|
202
307
|
end
|
203
308
|
end
|
204
|
-
|
205
309
|
end
|
206
310
|
end
|
@@ -1,87 +1,141 @@
|
|
1
|
+
=begin
|
2
|
+
#shotstack
|
3
|
+
|
4
|
+
#The Shotstack API is a video editing service that allows for the programatic creation of videos using JSON.
|
5
|
+
|
6
|
+
OpenAPI spec version: v1
|
7
|
+
|
8
|
+
Generated by: https://openapi-generator.tech
|
9
|
+
OpenAPI Generator version: 4.0.0-beta3
|
10
|
+
|
11
|
+
=end
|
12
|
+
|
1
13
|
require 'date'
|
2
14
|
|
3
15
|
module Shotstack
|
4
|
-
#
|
16
|
+
# A music or audio file in mp3 format that plays for the duration of the rendered video or the length of the audio file, which ever is shortest.
|
5
17
|
class Soundtrack
|
6
|
-
|
7
|
-
|
18
|
+
# The URL of the mp3 audio file. The URL must be publicly accessible or include credentials.
|
8
19
|
attr_accessor :src
|
9
20
|
|
21
|
+
# The effect to apply to the audio file
|
22
|
+
attr_accessor :effect
|
23
|
+
|
10
24
|
# Attribute mapping from ruby-style variable name to JSON key.
|
11
25
|
def self.attribute_map
|
12
26
|
{
|
13
|
-
|
14
|
-
:'effect' => :'effect'
|
15
|
-
|
16
|
-
:'src' => :'src'
|
17
|
-
|
27
|
+
:'src' => :'src',
|
28
|
+
:'effect' => :'effect'
|
18
29
|
}
|
19
30
|
end
|
20
31
|
|
21
32
|
# Attribute type mapping.
|
22
|
-
def self.
|
33
|
+
def self.openapi_types
|
23
34
|
{
|
24
|
-
:'
|
25
|
-
:'
|
26
|
-
|
35
|
+
:'src' => :'String',
|
36
|
+
:'effect' => :'String'
|
27
37
|
}
|
28
38
|
end
|
29
39
|
|
40
|
+
# Initializes the object
|
41
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
30
42
|
def initialize(attributes = {})
|
31
|
-
|
43
|
+
if (!attributes.is_a?(Hash))
|
44
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `Shotstack::Soundtrack` initialize method"
|
45
|
+
end
|
32
46
|
|
33
|
-
# convert string to symbol for hash key
|
34
|
-
attributes = attributes.
|
47
|
+
# check to see if the attribute exists and convert string to symbol for hash key
|
48
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
49
|
+
if (!self.class.attribute_map.key?(k.to_sym))
|
50
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `Shotstack::Soundtrack`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
|
51
|
+
end
|
52
|
+
h[k.to_sym] = v
|
53
|
+
}
|
54
|
+
|
55
|
+
if attributes.key?(:'src')
|
56
|
+
self.src = attributes[:'src']
|
57
|
+
end
|
35
58
|
|
36
|
-
|
37
|
-
if attributes[:'effect']
|
59
|
+
if attributes.key?(:'effect')
|
38
60
|
self.effect = attributes[:'effect']
|
39
61
|
end
|
40
|
-
|
41
|
-
|
42
|
-
|
62
|
+
end
|
63
|
+
|
64
|
+
# Show invalid properties with the reasons. Usually used together with valid?
|
65
|
+
# @return Array for valid properties with the reasons
|
66
|
+
def list_invalid_properties
|
67
|
+
invalid_properties = Array.new
|
68
|
+
if @src.nil?
|
69
|
+
invalid_properties.push('invalid value for "src", src cannot be nil.')
|
43
70
|
end
|
44
|
-
|
71
|
+
|
72
|
+
if @effect.nil?
|
73
|
+
invalid_properties.push('invalid value for "effect", effect cannot be nil.')
|
74
|
+
end
|
75
|
+
|
76
|
+
invalid_properties
|
77
|
+
end
|
78
|
+
|
79
|
+
# Check to see if the all the properties in the model are valid
|
80
|
+
# @return true if the model is valid
|
81
|
+
def valid?
|
82
|
+
return false if @src.nil?
|
83
|
+
return false if @effect.nil?
|
84
|
+
true
|
45
85
|
end
|
46
86
|
|
47
|
-
#
|
87
|
+
# Checks equality by comparing each attribute.
|
88
|
+
# @param [Object] Object to be compared
|
48
89
|
def ==(o)
|
49
90
|
return true if self.equal?(o)
|
50
91
|
self.class == o.class &&
|
51
|
-
|
52
|
-
|
92
|
+
src == o.src &&
|
93
|
+
effect == o.effect
|
53
94
|
end
|
54
95
|
|
55
96
|
# @see the `==` method
|
97
|
+
# @param [Object] Object to be compared
|
56
98
|
def eql?(o)
|
57
99
|
self == o
|
58
100
|
end
|
59
101
|
|
60
|
-
#
|
102
|
+
# Calculates hash code according to all attributes.
|
103
|
+
# @return [Integer] Hash code
|
61
104
|
def hash
|
62
|
-
[
|
105
|
+
[src, effect].hash
|
106
|
+
end
|
107
|
+
|
108
|
+
# Builds the object from hash
|
109
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
110
|
+
# @return [Object] Returns the model itself
|
111
|
+
def self.build_from_hash(attributes)
|
112
|
+
new.build_from_hash(attributes)
|
63
113
|
end
|
64
114
|
|
65
|
-
#
|
115
|
+
# Builds the object from hash
|
116
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
117
|
+
# @return [Object] Returns the model itself
|
66
118
|
def build_from_hash(attributes)
|
67
119
|
return nil unless attributes.is_a?(Hash)
|
68
|
-
self.class.
|
69
|
-
if type =~
|
120
|
+
self.class.openapi_types.each_pair do |key, type|
|
121
|
+
if type =~ /\AArray<(.*)>/i
|
122
|
+
# check to ensure the input is an array given that the attribute
|
123
|
+
# is documented as an array but the input is not
|
70
124
|
if attributes[self.class.attribute_map[key]].is_a?(Array)
|
71
|
-
self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) }
|
72
|
-
else
|
73
|
-
#TODO show warning in debug mode
|
125
|
+
self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
|
74
126
|
end
|
75
127
|
elsif !attributes[self.class.attribute_map[key]].nil?
|
76
128
|
self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
|
77
|
-
else
|
78
|
-
# data not found in attributes(hash), not an issue as the data can be optional
|
79
|
-
end
|
129
|
+
end # or else data not found in attributes(hash), not an issue as the data can be optional
|
80
130
|
end
|
81
131
|
|
82
132
|
self
|
83
133
|
end
|
84
134
|
|
135
|
+
# Deserializes the data based on type
|
136
|
+
# @param string type Data type
|
137
|
+
# @param string value Value to be deserialized
|
138
|
+
# @return [Object] Deserialized data
|
85
139
|
def _deserialize(type, value)
|
86
140
|
case type.to_sym
|
87
141
|
when :DateTime
|
@@ -94,16 +148,19 @@ module Shotstack
|
|
94
148
|
value.to_i
|
95
149
|
when :Float
|
96
150
|
value.to_f
|
97
|
-
when :
|
98
|
-
if value =~
|
151
|
+
when :Boolean
|
152
|
+
if value.to_s =~ /\A(true|t|yes|y|1)\z/i
|
99
153
|
true
|
100
154
|
else
|
101
155
|
false
|
102
156
|
end
|
157
|
+
when :Object
|
158
|
+
# generic object (usually a Hash), return directly
|
159
|
+
value
|
103
160
|
when /\AArray<(?<inner_type>.+)>\z/
|
104
161
|
inner_type = Regexp.last_match[:inner_type]
|
105
162
|
value.map { |v| _deserialize(inner_type, v) }
|
106
|
-
when /\AHash<(?<k_type
|
163
|
+
when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
|
107
164
|
k_type = Regexp.last_match[:k_type]
|
108
165
|
v_type = Regexp.last_match[:v_type]
|
109
166
|
{}.tap do |hash|
|
@@ -112,21 +169,24 @@ module Shotstack
|
|
112
169
|
end
|
113
170
|
end
|
114
171
|
else # model
|
115
|
-
|
116
|
-
_model.build_from_hash(value)
|
172
|
+
Shotstack.const_get(type).build_from_hash(value)
|
117
173
|
end
|
118
174
|
end
|
119
175
|
|
176
|
+
# Returns the string representation of the object
|
177
|
+
# @return [String] String presentation of the object
|
120
178
|
def to_s
|
121
179
|
to_hash.to_s
|
122
180
|
end
|
123
181
|
|
124
|
-
# to_body is an alias to
|
182
|
+
# to_body is an alias to to_hash (backward compatibility)
|
183
|
+
# @return [Hash] Returns the object in the form of hash
|
125
184
|
def to_body
|
126
185
|
to_hash
|
127
186
|
end
|
128
187
|
|
129
|
-
#
|
188
|
+
# Returns the object in the form of hash
|
189
|
+
# @return [Hash] Returns the object in the form of hash
|
130
190
|
def to_hash
|
131
191
|
hash = {}
|
132
192
|
self.class.attribute_map.each_pair do |attr, param|
|
@@ -137,11 +197,13 @@ module Shotstack
|
|
137
197
|
hash
|
138
198
|
end
|
139
199
|
|
140
|
-
#
|
200
|
+
# Outputs non-array value in the form of hash
|
141
201
|
# For object, use to_hash. Otherwise, just return the value
|
202
|
+
# @param [Object] value Any valid value
|
203
|
+
# @return [Hash] Returns the value in the form of hash
|
142
204
|
def _to_hash(value)
|
143
205
|
if value.is_a?(Array)
|
144
|
-
value.compact.map{ |v| _to_hash(v) }
|
206
|
+
value.compact.map { |v| _to_hash(v) }
|
145
207
|
elsif value.is_a?(Hash)
|
146
208
|
{}.tap do |hash|
|
147
209
|
value.each { |k, v| hash[k] = _to_hash(v) }
|
@@ -152,6 +214,5 @@ module Shotstack
|
|
152
214
|
value
|
153
215
|
end
|
154
216
|
end
|
155
|
-
|
156
217
|
end
|
157
218
|
end
|