cloudmersive-video-api-client 2.0.1 → 2.0.2

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.
@@ -0,0 +1,278 @@
1
+ =begin
2
+ #videoapi
3
+
4
+ #The video APIs help you convert, encode, and transcode videos.
5
+
6
+ OpenAPI spec version: v1
7
+
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.14
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module CloudmersiveVideoApiClient
16
+ # Result of retrieving information about a video or audio file
17
+ class MediaInformation
18
+ # True if the operation was successful, false otherwise
19
+ attr_accessor :successful
20
+
21
+ # The file's short format name
22
+ attr_accessor :file_format
23
+
24
+ # The file's full format name
25
+ attr_accessor :file_format_full
26
+
27
+ # A list of the file's valid formats
28
+ attr_accessor :valid_file_formats
29
+
30
+ # The video's width, if file is a video
31
+ attr_accessor :width
32
+
33
+ # The video's height, if file is a video
34
+ attr_accessor :height
35
+
36
+ # The file's size in bytes
37
+ attr_accessor :size
38
+
39
+ # The file's bit rate
40
+ attr_accessor :bit_rate
41
+
42
+ # The file's duration in seconds
43
+ attr_accessor :duration
44
+
45
+ # The file's media start time
46
+ attr_accessor :start_time
47
+
48
+ # Attribute mapping from ruby-style variable name to JSON key.
49
+ def self.attribute_map
50
+ {
51
+ :'successful' => :'Successful',
52
+ :'file_format' => :'FileFormat',
53
+ :'file_format_full' => :'FileFormatFull',
54
+ :'valid_file_formats' => :'ValidFileFormats',
55
+ :'width' => :'Width',
56
+ :'height' => :'Height',
57
+ :'size' => :'Size',
58
+ :'bit_rate' => :'BitRate',
59
+ :'duration' => :'Duration',
60
+ :'start_time' => :'StartTime'
61
+ }
62
+ end
63
+
64
+ # Attribute type mapping.
65
+ def self.swagger_types
66
+ {
67
+ :'successful' => :'BOOLEAN',
68
+ :'file_format' => :'String',
69
+ :'file_format_full' => :'String',
70
+ :'valid_file_formats' => :'Array<String>',
71
+ :'width' => :'Integer',
72
+ :'height' => :'Integer',
73
+ :'size' => :'Integer',
74
+ :'bit_rate' => :'Integer',
75
+ :'duration' => :'Float',
76
+ :'start_time' => :'Float'
77
+ }
78
+ end
79
+
80
+ # Initializes the object
81
+ # @param [Hash] attributes Model attributes in the form of hash
82
+ def initialize(attributes = {})
83
+ return unless attributes.is_a?(Hash)
84
+
85
+ # convert string to symbol for hash key
86
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
87
+
88
+ if attributes.has_key?(:'Successful')
89
+ self.successful = attributes[:'Successful']
90
+ end
91
+
92
+ if attributes.has_key?(:'FileFormat')
93
+ self.file_format = attributes[:'FileFormat']
94
+ end
95
+
96
+ if attributes.has_key?(:'FileFormatFull')
97
+ self.file_format_full = attributes[:'FileFormatFull']
98
+ end
99
+
100
+ if attributes.has_key?(:'ValidFileFormats')
101
+ if (value = attributes[:'ValidFileFormats']).is_a?(Array)
102
+ self.valid_file_formats = value
103
+ end
104
+ end
105
+
106
+ if attributes.has_key?(:'Width')
107
+ self.width = attributes[:'Width']
108
+ end
109
+
110
+ if attributes.has_key?(:'Height')
111
+ self.height = attributes[:'Height']
112
+ end
113
+
114
+ if attributes.has_key?(:'Size')
115
+ self.size = attributes[:'Size']
116
+ end
117
+
118
+ if attributes.has_key?(:'BitRate')
119
+ self.bit_rate = attributes[:'BitRate']
120
+ end
121
+
122
+ if attributes.has_key?(:'Duration')
123
+ self.duration = attributes[:'Duration']
124
+ end
125
+
126
+ if attributes.has_key?(:'StartTime')
127
+ self.start_time = attributes[:'StartTime']
128
+ end
129
+ end
130
+
131
+ # Show invalid properties with the reasons. Usually used together with valid?
132
+ # @return Array for valid properties with the reasons
133
+ def list_invalid_properties
134
+ invalid_properties = Array.new
135
+ invalid_properties
136
+ end
137
+
138
+ # Check to see if the all the properties in the model are valid
139
+ # @return true if the model is valid
140
+ def valid?
141
+ true
142
+ end
143
+
144
+ # Checks equality by comparing each attribute.
145
+ # @param [Object] Object to be compared
146
+ def ==(o)
147
+ return true if self.equal?(o)
148
+ self.class == o.class &&
149
+ successful == o.successful &&
150
+ file_format == o.file_format &&
151
+ file_format_full == o.file_format_full &&
152
+ valid_file_formats == o.valid_file_formats &&
153
+ width == o.width &&
154
+ height == o.height &&
155
+ size == o.size &&
156
+ bit_rate == o.bit_rate &&
157
+ duration == o.duration &&
158
+ start_time == o.start_time
159
+ end
160
+
161
+ # @see the `==` method
162
+ # @param [Object] Object to be compared
163
+ def eql?(o)
164
+ self == o
165
+ end
166
+
167
+ # Calculates hash code according to all attributes.
168
+ # @return [Fixnum] Hash code
169
+ def hash
170
+ [successful, file_format, file_format_full, valid_file_formats, width, height, size, bit_rate, duration, start_time].hash
171
+ end
172
+
173
+ # Builds the object from hash
174
+ # @param [Hash] attributes Model attributes in the form of hash
175
+ # @return [Object] Returns the model itself
176
+ def build_from_hash(attributes)
177
+ return nil unless attributes.is_a?(Hash)
178
+ self.class.swagger_types.each_pair do |key, type|
179
+ if type =~ /\AArray<(.*)>/i
180
+ # check to ensure the input is an array given that the attribute
181
+ # is documented as an array but the input is not
182
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
183
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
184
+ end
185
+ elsif !attributes[self.class.attribute_map[key]].nil?
186
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
187
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
188
+ end
189
+
190
+ self
191
+ end
192
+
193
+ # Deserializes the data based on type
194
+ # @param string type Data type
195
+ # @param string value Value to be deserialized
196
+ # @return [Object] Deserialized data
197
+ def _deserialize(type, value)
198
+ case type.to_sym
199
+ when :DateTime
200
+ DateTime.parse(value)
201
+ when :Date
202
+ Date.parse(value)
203
+ when :String
204
+ value.to_s
205
+ when :Integer
206
+ value.to_i
207
+ when :Float
208
+ value.to_f
209
+ when :BOOLEAN
210
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
211
+ true
212
+ else
213
+ false
214
+ end
215
+ when :Object
216
+ # generic object (usually a Hash), return directly
217
+ value
218
+ when /\AArray<(?<inner_type>.+)>\z/
219
+ inner_type = Regexp.last_match[:inner_type]
220
+ value.map { |v| _deserialize(inner_type, v) }
221
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
222
+ k_type = Regexp.last_match[:k_type]
223
+ v_type = Regexp.last_match[:v_type]
224
+ {}.tap do |hash|
225
+ value.each do |k, v|
226
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
227
+ end
228
+ end
229
+ else # model
230
+ temp_model = CloudmersiveVideoApiClient.const_get(type).new
231
+ temp_model.build_from_hash(value)
232
+ end
233
+ end
234
+
235
+ # Returns the string representation of the object
236
+ # @return [String] String presentation of the object
237
+ def to_s
238
+ to_hash.to_s
239
+ end
240
+
241
+ # to_body is an alias to to_hash (backward compatibility)
242
+ # @return [Hash] Returns the object in the form of hash
243
+ def to_body
244
+ to_hash
245
+ end
246
+
247
+ # Returns the object in the form of hash
248
+ # @return [Hash] Returns the object in the form of hash
249
+ def to_hash
250
+ hash = {}
251
+ self.class.attribute_map.each_pair do |attr, param|
252
+ value = self.send(attr)
253
+ next if value.nil?
254
+ hash[param] = _to_hash(value)
255
+ end
256
+ hash
257
+ end
258
+
259
+ # Outputs non-array value in the form of hash
260
+ # For object, use to_hash. Otherwise, just return the value
261
+ # @param [Object] value Any valid value
262
+ # @return [Hash] Returns the value in the form of hash
263
+ def _to_hash(value)
264
+ if value.is_a?(Array)
265
+ value.compact.map { |v| _to_hash(v) }
266
+ elsif value.is_a?(Hash)
267
+ {}.tap do |hash|
268
+ value.each { |k, v| hash[k] = _to_hash(v) }
269
+ end
270
+ elsif value.respond_to? :to_hash
271
+ value.to_hash
272
+ else
273
+ value
274
+ end
275
+ end
276
+
277
+ end
278
+ end
@@ -0,0 +1,15 @@
1
+ =begin
2
+ #videoapi
3
+
4
+ #The video APIs help you convert, encode, and transcode videos.
5
+
6
+ OpenAPI spec version: v1
7
+
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.14
10
+
11
+ =end
12
+
13
+ module CloudmersiveVideoApiClient
14
+ VERSION = '2.0.2'
15
+ end
@@ -0,0 +1,125 @@
1
+ =begin
2
+ #videoapi
3
+
4
+ #The video APIs help you convert, encode, and transcode videos.
5
+
6
+ OpenAPI spec version: v1
7
+
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.14
10
+
11
+ =end
12
+
13
+ require 'spec_helper'
14
+ require 'json'
15
+
16
+ # Unit tests for CloudmersiveVideoApiClient::VideoApi
17
+ # Automatically generated by swagger-codegen (github.com/swagger-api/swagger-codegen)
18
+ # Please update as you see appropriate
19
+ describe 'VideoApi' do
20
+ before do
21
+ # run before each test
22
+ @instance = CloudmersiveVideoApiClient::VideoApi.new
23
+ end
24
+
25
+ after do
26
+ # run after each test
27
+ end
28
+
29
+ describe 'test an instance of VideoApi' do
30
+ it 'should create an instance of VideoApi' do
31
+ expect(@instance).to be_instance_of(CloudmersiveVideoApiClient::VideoApi)
32
+ end
33
+ end
34
+
35
+ # unit tests for video_convert_to_gif
36
+ # Convert Video to Animated GIF format.
37
+ # Automatically detect video file format and convert it to animated GIF format. Supports many input video formats, including AVI, ASF, FLV, MP4, MPEG/MPG, Matroska/WEBM, 3G2, OGV, MKV, M4V and MOV. Uses 1 API call per 10 MB of file size. Maximum output file size is 50GB. Default height is 250 pixels, while preserving the video&#39;s aspect ratio.
38
+ # @param input_file Input file to perform the operation on.
39
+ # @param [Hash] opts the optional parameters
40
+ # @option opts [String] :file_url Optional; URL of a video file being used for conversion. Use this option for files larger than 2GB.
41
+ # @option opts [Integer] :max_width Optional; Maximum width of the output video, up to the original video width. Defaults to 250 pixels.
42
+ # @option opts [Integer] :max_height Optional; Maximum height of the output video, up to the original video width. Defaults to 250 pixels.
43
+ # @option opts [BOOLEAN] :preserve_aspect_ratio Optional; If false, the original video&#39;s aspect ratio will not be preserved, allowing customization of the aspect ratio using maxWidth and maxHeight, potentially skewing the video. Default is true.
44
+ # @option opts [Integer] :frame_rate Optional; Specify the frame rate of the output video. Defaults to 24 frames per second.
45
+ # @option opts [BOOLEAN] :extend_processing_time Optional; If true, will allow additional processing time for the video file conversion, using one API call per additional minute over the 5 minute default processing time, up to a maximum of 25 total minutes. This is generally necessary for files larger than 500 MB or longer than 30 minutes.
46
+ # @option opts [DateTime] :start_time Optional; Specify the desired starting time of the GIF video in TimeSpan format.
47
+ # @option opts [DateTime] :time_span Optional; Specify the desired length of the GIF video in TimeSpan format. Limit is 30 minutes.
48
+ # @return [String]
49
+ describe 'video_convert_to_gif test' do
50
+ it 'should work' do
51
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
52
+ end
53
+ end
54
+
55
+ # unit tests for video_convert_to_mov
56
+ # Convert Video to MOV format.
57
+ # Automatically detect video file format and convert it to MOV format. Supports many input video formats, including AVI, ASF, FLV, MP4, MPEG/MPG, Matroska/WEBM, 3G2, OGV, MKV, M4V and MOV. Uses 1 API call per 10 MB of file size. Maximum output file size is 50GB.
58
+ # @param input_file Input file to perform the operation on.
59
+ # @param [Hash] opts the optional parameters
60
+ # @option opts [String] :file_url Optional; URL of a video file being used for conversion. Use this option for files larger than 2GB.
61
+ # @option opts [Integer] :max_width Optional; Maximum width of the output video, up to the original video width. Defaults to original video width.
62
+ # @option opts [Integer] :max_height Optional; Maximum height of the output video, up to the original video width. Defaults to original video height.
63
+ # @option opts [BOOLEAN] :preserve_aspect_ratio Optional; If false, the original video&#39;s aspect ratio will not be preserved, allowing customization of the aspect ratio using maxWidth and maxHeight, potentially skewing the video. Default is true.
64
+ # @option opts [Integer] :frame_rate Optional; Specify the frame rate of the output video. Defaults to original video frame rate.
65
+ # @option opts [Integer] :quality Optional; Specify the quality of the output video, where 100 is lossless and 1 is the lowest possible quality with highest compression. Default is 50.
66
+ # @option opts [BOOLEAN] :extend_processing_time Optional; If true, will allow additional processing time for the video file conversion, using one API call per additional minute over the 5 minute default processing time, up to a maximum of 25 total minutes. This is generally necessary for files larger than 500 MB or longer than 30 minutes.
67
+ # @return [String]
68
+ describe 'video_convert_to_mov test' do
69
+ it 'should work' do
70
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
71
+ end
72
+ end
73
+
74
+ # unit tests for video_convert_to_mp4
75
+ # Convert Video to MP4 format.
76
+ # Automatically detect video file format and convert it to MP4 format. Supports many input video formats, including AVI, ASF, FLV, MP4, MPEG/MPG, Matroska/WEBM, 3G2, OGV, MKV, M4V and MOV. Uses 1 API call per 10 MB of file size. Maximum output file size is 50GB.
77
+ # @param input_file Input file to perform the operation on.
78
+ # @param [Hash] opts the optional parameters
79
+ # @option opts [String] :file_url Optional; URL of a video file being used for conversion. Use this option for files larger than 2GB.
80
+ # @option opts [Integer] :max_width Optional; Maximum width of the output video, up to the original video width. Defaults to original video width.
81
+ # @option opts [Integer] :max_height Optional; Maximum height of the output video, up to the original video width. Defaults to original video height.
82
+ # @option opts [BOOLEAN] :preserve_aspect_ratio Optional; If false, the original video&#39;s aspect ratio will not be preserved, allowing customization of the aspect ratio using maxWidth and maxHeight, potentially skewing the video. Default is true.
83
+ # @option opts [Integer] :frame_rate Optional; Specify the frame rate of the output video. Defaults to original video frame rate.
84
+ # @option opts [Integer] :quality Optional; Specify the quality of the output video, where 100 is lossless and 1 is the lowest possible quality with highest compression. Default is 50.
85
+ # @option opts [BOOLEAN] :extend_processing_time Optional; If true, will allow additional processing time for the video file conversion, using one API call per additional minute over the 5 minute default processing time, up to a maximum of 25 total minutes. This is generally necessary for files larger than 500 MB or longer than 30 minutes.
86
+ # @return [String]
87
+ describe 'video_convert_to_mp4 test' do
88
+ it 'should work' do
89
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
90
+ end
91
+ end
92
+
93
+ # unit tests for video_convert_to_webm
94
+ # Convert Video to WEBM format.
95
+ # Automatically detect video file format and convert it to WEBM format. Supports many input video formats, including AVI, ASF, FLV, MP4, MPEG/MPG, Matroska/WEBM, 3G2, OGV, MKV, M4V and MOV. Uses 1 API call per 10 MB of file size. Maximum output file size is 50GB.
96
+ # @param input_file Input file to perform the operation on.
97
+ # @param [Hash] opts the optional parameters
98
+ # @option opts [String] :file_url Optional; URL of a video file being used for conversion. Use this option for files larger than 2GB.
99
+ # @option opts [Integer] :max_width Optional; Maximum width of the output video, up to the original video width. Defaults to original video width.
100
+ # @option opts [Integer] :max_height Optional; Maximum height of the output video, up to the original video width. Defaults to original video height.
101
+ # @option opts [BOOLEAN] :preserve_aspect_ratio Optional; If false, the original video&#39;s aspect ratio will not be preserved, allowing customization of the aspect ratio using maxWidth and maxHeight, potentially skewing the video. Default is true.
102
+ # @option opts [Integer] :frame_rate Optional; Specify the frame rate of the output video. Defaults to original video frame rate.
103
+ # @option opts [Integer] :quality Optional; Specify the quality of the output video, where 100 is lossless and 1 is the lowest possible quality with highest compression. Default is 50.
104
+ # @option opts [BOOLEAN] :extend_processing_time Optional; If true, will allow additional processing time for the video file conversion, using one API call per additional minute over the 5 minute default processing time, up to a maximum of 25 total minutes. This is generally necessary for files larger than 500 MB or longer than 30 minutes.
105
+ # @return [String]
106
+ describe 'video_convert_to_webm test' do
107
+ it 'should work' do
108
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
109
+ end
110
+ end
111
+
112
+ # unit tests for video_get_info
113
+ # Get detailed information about a video or audio file
114
+ # Retrieve detailed information about a video or audio file, including format, dimensions, file size, bit rate, duration and start time. Compatible with many formats, including: AVI, ASF, FLV, GIF, MP4, MPEG/MPG, Matroska/WEBM, MOV, AIFF, ASF, CAF, MP3, MP2, MP1, Ogg, OMG/OMA, and WAV. Uses 1 API call per 10 MB of file size.
115
+ # @param input_file Input file to perform the operation on.
116
+ # @param [Hash] opts the optional parameters
117
+ # @option opts [String] :file_url Optional; URL of a video file being used for conversion. Use this option for files larger than 2GB.
118
+ # @return [String]
119
+ describe 'video_get_info test' do
120
+ it 'should work' do
121
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
122
+ end
123
+ end
124
+
125
+ end
@@ -0,0 +1,243 @@
1
+ =begin
2
+ #videoapi
3
+
4
+ #The video APIs help you convert, encode, and transcode videos.
5
+
6
+ OpenAPI spec version: v1
7
+
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.14
10
+
11
+ =end
12
+
13
+ require 'spec_helper'
14
+
15
+ describe CloudmersiveVideoApiClient::ApiClient do
16
+ context 'initialization' do
17
+ context 'URL stuff' do
18
+ context 'host' do
19
+ it 'removes http from host' do
20
+ CloudmersiveVideoApiClient.configure { |c| c.host = 'http://example.com' }
21
+ expect(CloudmersiveVideoApiClient::Configuration.default.host).to eq('example.com')
22
+ end
23
+
24
+ it 'removes https from host' do
25
+ CloudmersiveVideoApiClient.configure { |c| c.host = 'https://wookiee.com' }
26
+ expect(CloudmersiveVideoApiClient::ApiClient.default.config.host).to eq('wookiee.com')
27
+ end
28
+
29
+ it 'removes trailing path from host' do
30
+ CloudmersiveVideoApiClient.configure { |c| c.host = 'hobo.com/v4' }
31
+ expect(CloudmersiveVideoApiClient::Configuration.default.host).to eq('hobo.com')
32
+ end
33
+ end
34
+
35
+ context 'base_path' do
36
+ it "prepends a slash to base_path" do
37
+ CloudmersiveVideoApiClient.configure { |c| c.base_path = 'v4/dog' }
38
+ expect(CloudmersiveVideoApiClient::Configuration.default.base_path).to eq('/v4/dog')
39
+ end
40
+
41
+ it "doesn't prepend a slash if one is already there" do
42
+ CloudmersiveVideoApiClient.configure { |c| c.base_path = '/v4/dog' }
43
+ expect(CloudmersiveVideoApiClient::Configuration.default.base_path).to eq('/v4/dog')
44
+ end
45
+
46
+ it "ends up as a blank string if nil" do
47
+ CloudmersiveVideoApiClient.configure { |c| c.base_path = nil }
48
+ expect(CloudmersiveVideoApiClient::Configuration.default.base_path).to eq('')
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+ describe 'params_encoding in #build_request' do
55
+ let(:config) { CloudmersiveVideoApiClient::Configuration.new }
56
+ let(:api_client) { CloudmersiveVideoApiClient::ApiClient.new(config) }
57
+
58
+ it 'defaults to nil' do
59
+ expect(CloudmersiveVideoApiClient::Configuration.default.params_encoding).to eq(nil)
60
+ expect(config.params_encoding).to eq(nil)
61
+
62
+ request = api_client.build_request(:get, '/test')
63
+ expect(request.options[:params_encoding]).to eq(nil)
64
+ end
65
+
66
+ it 'can be customized' do
67
+ config.params_encoding = :multi
68
+ request = api_client.build_request(:get, '/test')
69
+ expect(request.options[:params_encoding]).to eq(:multi)
70
+ end
71
+ end
72
+
73
+ describe 'timeout in #build_request' do
74
+ let(:config) { CloudmersiveVideoApiClient::Configuration.new }
75
+ let(:api_client) { CloudmersiveVideoApiClient::ApiClient.new(config) }
76
+
77
+ it 'defaults to 0' do
78
+ expect(CloudmersiveVideoApiClient::Configuration.default.timeout).to eq(0)
79
+ expect(config.timeout).to eq(0)
80
+
81
+ request = api_client.build_request(:get, '/test')
82
+ expect(request.options[:timeout]).to eq(0)
83
+ end
84
+
85
+ it 'can be customized' do
86
+ config.timeout = 100
87
+ request = api_client.build_request(:get, '/test')
88
+ expect(request.options[:timeout]).to eq(100)
89
+ end
90
+ end
91
+
92
+ describe '#build_request' do
93
+ let(:config) { CloudmersiveVideoApiClient::Configuration.new }
94
+ let(:api_client) { CloudmersiveVideoApiClient::ApiClient.new(config) }
95
+
96
+ it 'does not send multipart to request' do
97
+ expect(Typhoeus::Request).to receive(:new).with(anything, hash_not_including(:multipart))
98
+ api_client.build_request(:get, '/test')
99
+ end
100
+
101
+ context 'when the content type is multipart' do
102
+ it 'sends multipart to request' do
103
+ expect(Typhoeus::Request).to receive(:new).with(anything, hash_including(multipart: true))
104
+ api_client.build_request(:get, '/test', {header_params: { 'Content-Type' => 'multipart/form-data'}})
105
+ end
106
+ end
107
+ end
108
+
109
+ describe '#deserialize' do
110
+ it "handles Array<Integer>" do
111
+ api_client = CloudmersiveVideoApiClient::ApiClient.new
112
+ headers = { 'Content-Type' => 'application/json' }
113
+ response = double('response', headers: headers, body: '[12, 34]')
114
+ data = api_client.deserialize(response, 'Array<Integer>')
115
+ expect(data).to be_instance_of(Array)
116
+ expect(data).to eq([12, 34])
117
+ end
118
+
119
+ it 'handles Array<Array<Integer>>' do
120
+ api_client = CloudmersiveVideoApiClient::ApiClient.new
121
+ headers = { 'Content-Type' => 'application/json' }
122
+ response = double('response', headers: headers, body: '[[12, 34], [56]]')
123
+ data = api_client.deserialize(response, 'Array<Array<Integer>>')
124
+ expect(data).to be_instance_of(Array)
125
+ expect(data).to eq([[12, 34], [56]])
126
+ end
127
+
128
+ it 'handles Hash<String, String>' do
129
+ api_client = CloudmersiveVideoApiClient::ApiClient.new
130
+ headers = { 'Content-Type' => 'application/json' }
131
+ response = double('response', headers: headers, body: '{"message": "Hello"}')
132
+ data = api_client.deserialize(response, 'Hash<String, String>')
133
+ expect(data).to be_instance_of(Hash)
134
+ expect(data).to eq(:message => 'Hello')
135
+ end
136
+ end
137
+
138
+ describe "#object_to_hash" do
139
+ it 'ignores nils and includes empty arrays' do
140
+ # uncomment below to test object_to_hash for model
141
+ # api_client = CloudmersiveVideoApiClient::ApiClient.new
142
+ # _model = CloudmersiveVideoApiClient::ModelName.new
143
+ # update the model attribute below
144
+ # _model.id = 1
145
+ # update the expected value (hash) below
146
+ # expected = {id: 1, name: '', tags: []}
147
+ # expect(api_client.object_to_hash(_model)).to eq(expected)
148
+ end
149
+ end
150
+
151
+ describe '#build_collection_param' do
152
+ let(:param) { ['aa', 'bb', 'cc'] }
153
+ let(:api_client) { CloudmersiveVideoApiClient::ApiClient.new }
154
+
155
+ it 'works for csv' do
156
+ expect(api_client.build_collection_param(param, :csv)).to eq('aa,bb,cc')
157
+ end
158
+
159
+ it 'works for ssv' do
160
+ expect(api_client.build_collection_param(param, :ssv)).to eq('aa bb cc')
161
+ end
162
+
163
+ it 'works for tsv' do
164
+ expect(api_client.build_collection_param(param, :tsv)).to eq("aa\tbb\tcc")
165
+ end
166
+
167
+ it 'works for pipes' do
168
+ expect(api_client.build_collection_param(param, :pipes)).to eq('aa|bb|cc')
169
+ end
170
+
171
+ it 'works for multi' do
172
+ expect(api_client.build_collection_param(param, :multi)).to eq(['aa', 'bb', 'cc'])
173
+ end
174
+
175
+ it 'fails for invalid collection format' do
176
+ expect(proc { api_client.build_collection_param(param, :INVALID) }).to raise_error(RuntimeError, 'unknown collection format: :INVALID')
177
+ end
178
+ end
179
+
180
+ describe '#json_mime?' do
181
+ let(:api_client) { CloudmersiveVideoApiClient::ApiClient.new }
182
+
183
+ it 'works' do
184
+ expect(api_client.json_mime?(nil)).to eq false
185
+ expect(api_client.json_mime?('')).to eq false
186
+
187
+ expect(api_client.json_mime?('application/json')).to eq true
188
+ expect(api_client.json_mime?('application/json; charset=UTF8')).to eq true
189
+ expect(api_client.json_mime?('APPLICATION/JSON')).to eq true
190
+
191
+ expect(api_client.json_mime?('application/xml')).to eq false
192
+ expect(api_client.json_mime?('text/plain')).to eq false
193
+ expect(api_client.json_mime?('application/jsonp')).to eq false
194
+ end
195
+ end
196
+
197
+ describe '#select_header_accept' do
198
+ let(:api_client) { CloudmersiveVideoApiClient::ApiClient.new }
199
+
200
+ it 'works' do
201
+ expect(api_client.select_header_accept(nil)).to be_nil
202
+ expect(api_client.select_header_accept([])).to be_nil
203
+
204
+ expect(api_client.select_header_accept(['application/json'])).to eq('application/json')
205
+ expect(api_client.select_header_accept(['application/xml', 'application/json; charset=UTF8'])).to eq('application/json; charset=UTF8')
206
+ expect(api_client.select_header_accept(['APPLICATION/JSON', 'text/html'])).to eq('APPLICATION/JSON')
207
+
208
+ expect(api_client.select_header_accept(['application/xml'])).to eq('application/xml')
209
+ expect(api_client.select_header_accept(['text/html', 'application/xml'])).to eq('text/html,application/xml')
210
+ end
211
+ end
212
+
213
+ describe '#select_header_content_type' do
214
+ let(:api_client) { CloudmersiveVideoApiClient::ApiClient.new }
215
+
216
+ it 'works' do
217
+ expect(api_client.select_header_content_type(nil)).to eq('application/json')
218
+ expect(api_client.select_header_content_type([])).to eq('application/json')
219
+
220
+ expect(api_client.select_header_content_type(['application/json'])).to eq('application/json')
221
+ expect(api_client.select_header_content_type(['application/xml', 'application/json; charset=UTF8'])).to eq('application/json; charset=UTF8')
222
+ expect(api_client.select_header_content_type(['APPLICATION/JSON', 'text/html'])).to eq('APPLICATION/JSON')
223
+ expect(api_client.select_header_content_type(['application/xml'])).to eq('application/xml')
224
+ expect(api_client.select_header_content_type(['text/plain', 'application/xml'])).to eq('text/plain')
225
+ end
226
+ end
227
+
228
+ describe '#sanitize_filename' do
229
+ let(:api_client) { CloudmersiveVideoApiClient::ApiClient.new }
230
+
231
+ it 'works' do
232
+ expect(api_client.sanitize_filename('sun')).to eq('sun')
233
+ expect(api_client.sanitize_filename('sun.gif')).to eq('sun.gif')
234
+ expect(api_client.sanitize_filename('../sun.gif')).to eq('sun.gif')
235
+ expect(api_client.sanitize_filename('/var/tmp/sun.gif')).to eq('sun.gif')
236
+ expect(api_client.sanitize_filename('./sun.gif')).to eq('sun.gif')
237
+ expect(api_client.sanitize_filename('..\sun.gif')).to eq('sun.gif')
238
+ expect(api_client.sanitize_filename('\var\tmp\sun.gif')).to eq('sun.gif')
239
+ expect(api_client.sanitize_filename('c:\var\tmp\sun.gif')).to eq('sun.gif')
240
+ expect(api_client.sanitize_filename('.\sun.gif')).to eq('sun.gif')
241
+ end
242
+ end
243
+ end