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
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 2 
     | 
    
         
            +
            SHA256:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: c25bb8f71fb1b0d993a60aa4028546375451f0978461b1c91ac0caf9b651df55
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: cdeea3fed0658a006339aef975b40b94067d2e0d80c611cea9319fd304f5f1b8
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 33c957198774b015ddcf9364efa98f1f104b883c02561f65acb946b790266943cac49f98178f5dbb774821c08f735c9be1f8918df30e9ff23f82f7a880ef3183
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: c7edb8be614276130289c71bf100892ef32d124b8cd480704b83f5dd26fb5bbe1c3302af6ca50a514aaac8075ab57894f390d133d96703aed7610186832f3099
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -2,3 +2,20 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            Ruby SDK for Shotstack, the cloud video editing API.
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
      
 5 
     | 
    
         
            +
            ## Build Instructions
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            First make sure the version in `shotstack/version.rb` is correct.
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            Then, to build as a gem:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 12 
     | 
    
         
            +
            rm shotstack-*.gem
         
     | 
| 
      
 13 
     | 
    
         
            +
            gem build shotstack
         
     | 
| 
      
 14 
     | 
    
         
            +
            gem push shotstack-*.*.*.gem   # use the correct version number
         
     | 
| 
      
 15 
     | 
    
         
            +
            ```
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            For local development install the gem:
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 20 
     | 
    
         
            +
            sudo gem install shotstack
         
     | 
| 
      
 21 
     | 
    
         
            +
            ```
         
     | 
    
        data/lib/shotstack.rb
    CHANGED
    
    | 
         @@ -1,3 +1,15 @@ 
     | 
|
| 
      
 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 
     | 
    
         
             
            # Common files
         
     | 
| 
       2 
14 
     | 
    
         
             
            require 'shotstack/api_client'
         
     | 
| 
       3 
15 
     | 
    
         
             
            require 'shotstack/api_error'
         
     | 
| 
         @@ -5,26 +17,23 @@ require 'shotstack/version' 
     | 
|
| 
       5 
17 
     | 
    
         
             
            require 'shotstack/configuration'
         
     | 
| 
       6 
18 
     | 
    
         | 
| 
       7 
19 
     | 
    
         
             
            # Models
         
     | 
| 
       8 
     | 
    
         
            -
            require 'shotstack/models/ 
     | 
| 
       9 
     | 
    
         
            -
            require 'shotstack/models/ 
     | 
| 
       10 
     | 
    
         
            -
            require 'shotstack/models/ 
     | 
| 
       11 
     | 
    
         
            -
            require 'shotstack/models/queued_response'
         
     | 
| 
      
 20 
     | 
    
         
            +
            require 'shotstack/models/clip'
         
     | 
| 
      
 21 
     | 
    
         
            +
            require 'shotstack/models/edit'
         
     | 
| 
      
 22 
     | 
    
         
            +
            require 'shotstack/models/image_asset'
         
     | 
| 
       12 
23 
     | 
    
         
             
            require 'shotstack/models/output'
         
     | 
| 
       13 
     | 
    
         
            -
            require 'shotstack/models/ 
     | 
| 
       14 
     | 
    
         
            -
            require 'shotstack/models/ 
     | 
| 
       15 
     | 
    
         
            -
            require 'shotstack/models/ 
     | 
| 
       16 
     | 
    
         
            -
            require 'shotstack/models/ 
     | 
| 
       17 
     | 
    
         
            -
            require 'shotstack/models/image_clip'
         
     | 
| 
       18 
     | 
    
         
            -
            require 'shotstack/models/title_clip_options'
         
     | 
| 
       19 
     | 
    
         
            -
            require 'shotstack/models/title_clip'
         
     | 
| 
       20 
     | 
    
         
            -
            require 'shotstack/models/track'
         
     | 
| 
       21 
     | 
    
         
            -
            require 'shotstack/models/clips'
         
     | 
| 
      
 24 
     | 
    
         
            +
            require 'shotstack/models/queued_response'
         
     | 
| 
      
 25 
     | 
    
         
            +
            require 'shotstack/models/queued_response_data'
         
     | 
| 
      
 26 
     | 
    
         
            +
            require 'shotstack/models/render_response'
         
     | 
| 
      
 27 
     | 
    
         
            +
            require 'shotstack/models/render_response_data'
         
     | 
| 
       22 
28 
     | 
    
         
             
            require 'shotstack/models/soundtrack'
         
     | 
| 
       23 
29 
     | 
    
         
             
            require 'shotstack/models/timeline'
         
     | 
| 
       24 
     | 
    
         
            -
            require 'shotstack/models/ 
     | 
| 
      
 30 
     | 
    
         
            +
            require 'shotstack/models/title_asset'
         
     | 
| 
      
 31 
     | 
    
         
            +
            require 'shotstack/models/track'
         
     | 
| 
      
 32 
     | 
    
         
            +
            require 'shotstack/models/transition'
         
     | 
| 
      
 33 
     | 
    
         
            +
            require 'shotstack/models/video_asset'
         
     | 
| 
       25 
34 
     | 
    
         | 
| 
       26 
35 
     | 
    
         
             
            # APIs
         
     | 
| 
       27 
     | 
    
         
            -
            require 'shotstack/api/ 
     | 
| 
      
 36 
     | 
    
         
            +
            require 'shotstack/api/default_api'
         
     | 
| 
       28 
37 
     | 
    
         | 
| 
       29 
38 
     | 
    
         
             
            module Shotstack
         
     | 
| 
       30 
39 
     | 
    
         
             
              class << self
         
     | 
| 
         @@ -0,0 +1,131 @@ 
     | 
|
| 
      
 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 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            require 'uri'
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            module Shotstack
         
     | 
| 
      
 16 
     | 
    
         
            +
              class DefaultApi
         
     | 
| 
      
 17 
     | 
    
         
            +
                attr_accessor :api_client
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                def initialize(api_client = ApiClient.default)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @api_client = api_client
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
                # Get the rendering status and details of a timeline by ID.
         
     | 
| 
      
 23 
     | 
    
         
            +
                # @param id [String] The id of the timeline render task in UUID format
         
     | 
| 
      
 24 
     | 
    
         
            +
                # @param [Hash] opts the optional parameters
         
     | 
| 
      
 25 
     | 
    
         
            +
                # @return [RenderResponse]
         
     | 
| 
      
 26 
     | 
    
         
            +
                def get_render(id, opts = {})
         
     | 
| 
      
 27 
     | 
    
         
            +
                  data, _status_code, _headers = g_et_render_id_with_http_info(id, opts)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  data
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                # Get the rendering status and details of a timeline by ID.
         
     | 
| 
      
 32 
     | 
    
         
            +
                # @param id [String] The id of the timeline render task in UUID format
         
     | 
| 
      
 33 
     | 
    
         
            +
                # @param [Hash] opts the optional parameters
         
     | 
| 
      
 34 
     | 
    
         
            +
                # @return [Array<(RenderResponse, Integer, Hash)>] RenderResponse data, response status code and response headers
         
     | 
| 
      
 35 
     | 
    
         
            +
                def g_et_render_id_with_http_info(id, opts = {})
         
     | 
| 
      
 36 
     | 
    
         
            +
                  if @api_client.config.debugging
         
     | 
| 
      
 37 
     | 
    
         
            +
                    @api_client.config.logger.debug 'Calling API: DefaultApi.g_et_render_id ...'
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
                  # verify the required parameter 'id' is set
         
     | 
| 
      
 40 
     | 
    
         
            +
                  if @api_client.config.client_side_validation && id.nil?
         
     | 
| 
      
 41 
     | 
    
         
            +
                    fail ArgumentError, "Missing the required parameter 'id' when calling DefaultApi.g_et_render_id"
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
                  pattern = Regexp.new(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  if @api_client.config.client_side_validation && id !~ pattern
         
     | 
| 
      
 45 
     | 
    
         
            +
                    fail ArgumentError, "invalid value for 'id' when calling DefaultApi.get_render, must conform to the pattern #{pattern}."
         
     | 
| 
      
 46 
     | 
    
         
            +
                  end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                  # resource path
         
     | 
| 
      
 49 
     | 
    
         
            +
                  local_var_path = '/render/{id}'.sub('{' + 'id' + '}', id.to_s)
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                  # query parameters
         
     | 
| 
      
 52 
     | 
    
         
            +
                  query_params = {}
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                  # header parameters
         
     | 
| 
      
 55 
     | 
    
         
            +
                  header_params = {}
         
     | 
| 
      
 56 
     | 
    
         
            +
                  # HTTP header 'Accept' (if needed)
         
     | 
| 
      
 57 
     | 
    
         
            +
                  header_params['Accept'] = @api_client.select_header_accept(['application/json'])
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                  # form parameters
         
     | 
| 
      
 60 
     | 
    
         
            +
                  form_params = {}
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                  # http body (model)
         
     | 
| 
      
 63 
     | 
    
         
            +
                  post_body = nil
         
     | 
| 
      
 64 
     | 
    
         
            +
                  auth_names = ['DeveloperKey']
         
     | 
| 
      
 65 
     | 
    
         
            +
                  data, status_code, headers = @api_client.call_api(:GET, local_var_path,
         
     | 
| 
      
 66 
     | 
    
         
            +
                    :header_params => header_params,
         
     | 
| 
      
 67 
     | 
    
         
            +
                    :query_params => query_params,
         
     | 
| 
      
 68 
     | 
    
         
            +
                    :form_params => form_params,
         
     | 
| 
      
 69 
     | 
    
         
            +
                    :body => post_body,
         
     | 
| 
      
 70 
     | 
    
         
            +
                    :auth_names => auth_names,
         
     | 
| 
      
 71 
     | 
    
         
            +
                    :return_type => 'RenderResponse')
         
     | 
| 
      
 72 
     | 
    
         
            +
                  if @api_client.config.debugging
         
     | 
| 
      
 73 
     | 
    
         
            +
                    @api_client.config.logger.debug "API called: DefaultApi#get_render\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
         
     | 
| 
      
 74 
     | 
    
         
            +
                  end
         
     | 
| 
      
 75 
     | 
    
         
            +
                  return data, status_code, headers
         
     | 
| 
      
 76 
     | 
    
         
            +
                end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
                # Render the contents of a timeline as a video file.
         
     | 
| 
      
 79 
     | 
    
         
            +
                # @param edit [Edit] 
         
     | 
| 
      
 80 
     | 
    
         
            +
                # @param [Hash] opts the optional parameters
         
     | 
| 
      
 81 
     | 
    
         
            +
                # @return [QueuedResponse]
         
     | 
| 
      
 82 
     | 
    
         
            +
                def post_render(edit, opts = {})
         
     | 
| 
      
 83 
     | 
    
         
            +
                  data, _status_code, _headers = p_ost_render_with_http_info(edit, opts)
         
     | 
| 
      
 84 
     | 
    
         
            +
                  data
         
     | 
| 
      
 85 
     | 
    
         
            +
                end
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
                # Render the contents of a timeline as a video file.
         
     | 
| 
      
 88 
     | 
    
         
            +
                # @param edit [Edit] 
         
     | 
| 
      
 89 
     | 
    
         
            +
                # @param [Hash] opts the optional parameters
         
     | 
| 
      
 90 
     | 
    
         
            +
                # @return [Array<(QueuedResponse, Integer, Hash)>] QueuedResponse data, response status code and response headers
         
     | 
| 
      
 91 
     | 
    
         
            +
                def p_ost_render_with_http_info(edit, opts = {})
         
     | 
| 
      
 92 
     | 
    
         
            +
                  if @api_client.config.debugging
         
     | 
| 
      
 93 
     | 
    
         
            +
                    @api_client.config.logger.debug 'Calling API: DefaultApi.post_render ...'
         
     | 
| 
      
 94 
     | 
    
         
            +
                  end
         
     | 
| 
      
 95 
     | 
    
         
            +
                  # verify the required parameter 'edit' is set
         
     | 
| 
      
 96 
     | 
    
         
            +
                  if @api_client.config.client_side_validation && edit.nil?
         
     | 
| 
      
 97 
     | 
    
         
            +
                    fail ArgumentError, "Missing the required parameter 'edit' when calling DefaultApi.post_render"
         
     | 
| 
      
 98 
     | 
    
         
            +
                  end
         
     | 
| 
      
 99 
     | 
    
         
            +
                  # resource path
         
     | 
| 
      
 100 
     | 
    
         
            +
                  local_var_path = '/render'
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
                  # query parameters
         
     | 
| 
      
 103 
     | 
    
         
            +
                  query_params = {}
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
                  # header parameters
         
     | 
| 
      
 106 
     | 
    
         
            +
                  header_params = {}
         
     | 
| 
      
 107 
     | 
    
         
            +
                  # HTTP header 'Accept' (if needed)
         
     | 
| 
      
 108 
     | 
    
         
            +
                  header_params['Accept'] = @api_client.select_header_accept(['application/json'])
         
     | 
| 
      
 109 
     | 
    
         
            +
                  # HTTP header 'Content-Type'
         
     | 
| 
      
 110 
     | 
    
         
            +
                  header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                  # form parameters
         
     | 
| 
      
 113 
     | 
    
         
            +
                  form_params = {}
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
                  # http body (model)
         
     | 
| 
      
 116 
     | 
    
         
            +
                  post_body = @api_client.object_to_http_body(edit)
         
     | 
| 
      
 117 
     | 
    
         
            +
                  auth_names = ['DeveloperKey']
         
     | 
| 
      
 118 
     | 
    
         
            +
                  data, status_code, headers = @api_client.call_api(:POST, local_var_path,
         
     | 
| 
      
 119 
     | 
    
         
            +
                    :header_params => header_params,
         
     | 
| 
      
 120 
     | 
    
         
            +
                    :query_params => query_params,
         
     | 
| 
      
 121 
     | 
    
         
            +
                    :form_params => form_params,
         
     | 
| 
      
 122 
     | 
    
         
            +
                    :body => post_body,
         
     | 
| 
      
 123 
     | 
    
         
            +
                    :auth_names => auth_names,
         
     | 
| 
      
 124 
     | 
    
         
            +
                    :return_type => 'QueuedResponse')
         
     | 
| 
      
 125 
     | 
    
         
            +
                  if @api_client.config.debugging
         
     | 
| 
      
 126 
     | 
    
         
            +
                    @api_client.config.logger.debug "API called: DefaultApi#post_render\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
         
     | 
| 
      
 127 
     | 
    
         
            +
                  end
         
     | 
| 
      
 128 
     | 
    
         
            +
                  return data, status_code, headers
         
     | 
| 
      
 129 
     | 
    
         
            +
                end
         
     | 
| 
      
 130 
     | 
    
         
            +
              end
         
     | 
| 
      
 131 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/shotstack/api_client.rb
    CHANGED
    
    | 
         @@ -1,3 +1,15 @@ 
     | 
|
| 
      
 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 
     | 
    
         
             
            require 'json'
         
     | 
| 
       3 
15 
     | 
    
         
             
            require 'logger'
         
     | 
| 
         @@ -15,11 +27,13 @@ module Shotstack 
     | 
|
| 
       15 
27 
     | 
    
         
             
                # @return [Hash]
         
     | 
| 
       16 
28 
     | 
    
         
             
                attr_accessor :default_headers
         
     | 
| 
       17 
29 
     | 
    
         | 
| 
      
 30 
     | 
    
         
            +
                # Initializes the ApiClient
         
     | 
| 
      
 31 
     | 
    
         
            +
                # @option config [Configuration] Configuration for initializing the object, default to Configuration.default
         
     | 
| 
       18 
32 
     | 
    
         
             
                def initialize(config = Configuration.default)
         
     | 
| 
       19 
33 
     | 
    
         
             
                  @config = config
         
     | 
| 
       20 
     | 
    
         
            -
                  @user_agent = " 
     | 
| 
      
 34 
     | 
    
         
            +
                  @user_agent = "OpenAPI-Generator/#{VERSION}/ruby"
         
     | 
| 
       21 
35 
     | 
    
         
             
                  @default_headers = {
         
     | 
| 
       22 
     | 
    
         
            -
                    'Content-Type' =>  
     | 
| 
      
 36 
     | 
    
         
            +
                    'Content-Type' => 'application/json',
         
     | 
| 
       23 
37 
     | 
    
         
             
                    'User-Agent' => @user_agent
         
     | 
| 
       24 
38 
     | 
    
         
             
                  }
         
     | 
| 
       25 
39 
     | 
    
         
             
                end
         
     | 
| 
         @@ -30,7 +44,7 @@ module Shotstack 
     | 
|
| 
       30 
44 
     | 
    
         | 
| 
       31 
45 
     | 
    
         
             
                # Call an API with given options.
         
     | 
| 
       32 
46 
     | 
    
         
             
                #
         
     | 
| 
       33 
     | 
    
         
            -
                # @return [Array<(Object,  
     | 
| 
      
 47 
     | 
    
         
            +
                # @return [Array<(Object, Integer, Hash)>] an array of 3 elements:
         
     | 
| 
       34 
48 
     | 
    
         
             
                #   the data deserialized from response body (could be nil), response status code and response headers.
         
     | 
| 
       35 
49 
     | 
    
         
             
                def call_api(http_method, path, opts = {})
         
     | 
| 
       36 
50 
     | 
    
         
             
                  request = build_request(http_method, path, opts)
         
     | 
| 
         @@ -41,10 +55,18 @@ module Shotstack 
     | 
|
| 
       41 
55 
     | 
    
         
             
                  end
         
     | 
| 
       42 
56 
     | 
    
         | 
| 
       43 
57 
     | 
    
         
             
                  unless response.success?
         
     | 
| 
       44 
     | 
    
         
            -
                     
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
      
 58 
     | 
    
         
            +
                    if response.timed_out?
         
     | 
| 
      
 59 
     | 
    
         
            +
                      fail ApiError.new('Connection timed out')
         
     | 
| 
      
 60 
     | 
    
         
            +
                    elsif response.code == 0
         
     | 
| 
      
 61 
     | 
    
         
            +
                      # Errors from libcurl will be made visible here
         
     | 
| 
      
 62 
     | 
    
         
            +
                      fail ApiError.new(:code => 0,
         
     | 
| 
      
 63 
     | 
    
         
            +
                                        :message => response.return_message)
         
     | 
| 
      
 64 
     | 
    
         
            +
                    else
         
     | 
| 
      
 65 
     | 
    
         
            +
                      fail ApiError.new(:code => response.code,
         
     | 
| 
      
 66 
     | 
    
         
            +
                                        :response_headers => response.headers,
         
     | 
| 
      
 67 
     | 
    
         
            +
                                        :response_body => response.body),
         
     | 
| 
      
 68 
     | 
    
         
            +
                           response.status_message
         
     | 
| 
      
 69 
     | 
    
         
            +
                    end
         
     | 
| 
       48 
70 
     | 
    
         
             
                  end
         
     | 
| 
       49 
71 
     | 
    
         | 
| 
       50 
72 
     | 
    
         
             
                  if opts[:return_type]
         
     | 
| 
         @@ -55,6 +77,15 @@ module Shotstack 
     | 
|
| 
       55 
77 
     | 
    
         
             
                  return data, response.code, response.headers
         
     | 
| 
       56 
78 
     | 
    
         
             
                end
         
     | 
| 
       57 
79 
     | 
    
         | 
| 
      
 80 
     | 
    
         
            +
                # Builds the HTTP request
         
     | 
| 
      
 81 
     | 
    
         
            +
                #
         
     | 
| 
      
 82 
     | 
    
         
            +
                # @param [String] http_method HTTP method/verb (e.g. POST)
         
     | 
| 
      
 83 
     | 
    
         
            +
                # @param [String] path URL path (e.g. /account/new)
         
     | 
| 
      
 84 
     | 
    
         
            +
                # @option opts [Hash] :header_params Header parameters
         
     | 
| 
      
 85 
     | 
    
         
            +
                # @option opts [Hash] :query_params Query parameters
         
     | 
| 
      
 86 
     | 
    
         
            +
                # @option opts [Hash] :form_params Query parameters
         
     | 
| 
      
 87 
     | 
    
         
            +
                # @option opts [Object] :body HTTP body (JSON/XML)
         
     | 
| 
      
 88 
     | 
    
         
            +
                # @return [Typhoeus::Request] A Typhoeus Request
         
     | 
| 
       58 
89 
     | 
    
         
             
                def build_request(http_method, path, opts = {})
         
     | 
| 
       59 
90 
     | 
    
         
             
                  url = build_request_url(path)
         
     | 
| 
       60 
91 
     | 
    
         
             
                  http_method = http_method.to_sym.downcase
         
     | 
| 
         @@ -63,22 +94,27 @@ module Shotstack 
     | 
|
| 
       63 
94 
     | 
    
         
             
                  query_params = opts[:query_params] || {}
         
     | 
| 
       64 
95 
     | 
    
         
             
                  form_params = opts[:form_params] || {}
         
     | 
| 
       65 
96 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
                  
         
     | 
| 
       67 
97 
     | 
    
         
             
                  update_params_for_auth! header_params, query_params, opts[:auth_names]
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                  # set ssl_verifyhosts option based on @config.verify_ssl_host (true/false)
         
     | 
| 
      
 100 
     | 
    
         
            +
                  _verify_ssl_host = @config.verify_ssl_host ? 2 : 0
         
     | 
| 
       69 
101 
     | 
    
         | 
| 
       70 
102 
     | 
    
         
             
                  req_opts = {
         
     | 
| 
       71 
103 
     | 
    
         
             
                    :method => http_method,
         
     | 
| 
       72 
104 
     | 
    
         
             
                    :headers => header_params,
         
     | 
| 
       73 
105 
     | 
    
         
             
                    :params => query_params,
         
     | 
| 
      
 106 
     | 
    
         
            +
                    :params_encoding => @config.params_encoding,
         
     | 
| 
       74 
107 
     | 
    
         
             
                    :timeout => @config.timeout,
         
     | 
| 
       75 
108 
     | 
    
         
             
                    :ssl_verifypeer => @config.verify_ssl,
         
     | 
| 
      
 109 
     | 
    
         
            +
                    :ssl_verifyhost => _verify_ssl_host,
         
     | 
| 
       76 
110 
     | 
    
         
             
                    :sslcert => @config.cert_file,
         
     | 
| 
       77 
111 
     | 
    
         
             
                    :sslkey => @config.key_file,
         
     | 
| 
       78 
     | 
    
         
            -
                    :cainfo => @config.ssl_ca_cert,
         
     | 
| 
       79 
112 
     | 
    
         
             
                    :verbose => @config.debugging
         
     | 
| 
       80 
113 
     | 
    
         
             
                  }
         
     | 
| 
       81 
114 
     | 
    
         | 
| 
      
 115 
     | 
    
         
            +
                  # set custom cert, if provided
         
     | 
| 
      
 116 
     | 
    
         
            +
                  req_opts[:cainfo] = @config.ssl_ca_cert if @config.ssl_ca_cert
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
       82 
118 
     | 
    
         
             
                  if [:post, :patch, :put, :delete].include?(http_method)
         
     | 
| 
       83 
119 
     | 
    
         
             
                    req_body = build_request_body(header_params, form_params, opts[:body])
         
     | 
| 
       84 
120 
     | 
    
         
             
                    req_opts.update :body => req_body
         
     | 
| 
         @@ -87,7 +123,9 @@ module Shotstack 
     | 
|
| 
       87 
123 
     | 
    
         
             
                    end
         
     | 
| 
       88 
124 
     | 
    
         
             
                  end
         
     | 
| 
       89 
125 
     | 
    
         | 
| 
       90 
     | 
    
         
            -
                  Typhoeus::Request.new(url, req_opts)
         
     | 
| 
      
 126 
     | 
    
         
            +
                  request = Typhoeus::Request.new(url, req_opts)
         
     | 
| 
      
 127 
     | 
    
         
            +
                  download_file(request) if opts[:return_type] == 'File'
         
     | 
| 
      
 128 
     | 
    
         
            +
                  request
         
     | 
| 
       91 
129 
     | 
    
         
             
                end
         
     | 
| 
       92 
130 
     | 
    
         | 
| 
       93 
131 
     | 
    
         
             
                # Check if the given MIME is a JSON MIME.
         
     | 
| 
         @@ -95,19 +133,28 @@ module Shotstack 
     | 
|
| 
       95 
133 
     | 
    
         
             
                #   application/json
         
     | 
| 
       96 
134 
     | 
    
         
             
                #   application/json; charset=UTF8
         
     | 
| 
       97 
135 
     | 
    
         
             
                #   APPLICATION/JSON
         
     | 
| 
      
 136 
     | 
    
         
            +
                #   */*
         
     | 
| 
      
 137 
     | 
    
         
            +
                # @param [String] mime MIME
         
     | 
| 
      
 138 
     | 
    
         
            +
                # @return [Boolean] True if the MIME is application/json
         
     | 
| 
       98 
139 
     | 
    
         
             
                def json_mime?(mime)
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
      
 140 
     | 
    
         
            +
                  (mime == '*/*') || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
         
     | 
| 
       100 
141 
     | 
    
         
             
                end
         
     | 
| 
       101 
142 
     | 
    
         | 
| 
       102 
143 
     | 
    
         
             
                # Deserialize the response to the given return type.
         
     | 
| 
       103 
144 
     | 
    
         
             
                #
         
     | 
| 
       104 
     | 
    
         
            -
                # @param [ 
     | 
| 
      
 145 
     | 
    
         
            +
                # @param [Response] response HTTP response
         
     | 
| 
      
 146 
     | 
    
         
            +
                # @param [String] return_type some examples: "User", "Array<User>", "Hash<String, Integer>"
         
     | 
| 
       105 
147 
     | 
    
         
             
                def deserialize(response, return_type)
         
     | 
| 
       106 
148 
     | 
    
         
             
                  body = response.body
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
                  # handle file downloading - return the File instance processed in request callbacks
         
     | 
| 
      
 151 
     | 
    
         
            +
                  # note that response body is empty when the file is written in chunks in request on_body callback
         
     | 
| 
      
 152 
     | 
    
         
            +
                  return @tempfile if return_type == 'File'
         
     | 
| 
      
 153 
     | 
    
         
            +
             
     | 
| 
       107 
154 
     | 
    
         
             
                  return nil if body.nil? || body.empty?
         
     | 
| 
       108 
155 
     | 
    
         | 
| 
       109 
     | 
    
         
            -
                  #  
     | 
| 
       110 
     | 
    
         
            -
                  return  
     | 
| 
      
 156 
     | 
    
         
            +
                  # return response body directly for String return type
         
     | 
| 
      
 157 
     | 
    
         
            +
                  return body if return_type == 'String'
         
     | 
| 
       111 
158 
     | 
    
         | 
| 
       112 
159 
     | 
    
         
             
                  # ensuring a default content type
         
     | 
| 
       113 
160 
     | 
    
         
             
                  content_type = response.headers['Content-Type'] || 'application/json'
         
     | 
| 
         @@ -128,6 +175,9 @@ module Shotstack 
     | 
|
| 
       128 
175 
     | 
    
         
             
                end
         
     | 
| 
       129 
176 
     | 
    
         | 
| 
       130 
177 
     | 
    
         
             
                # Convert data to the given return type.
         
     | 
| 
      
 178 
     | 
    
         
            +
                # @param [Object] data Data to be converted
         
     | 
| 
      
 179 
     | 
    
         
            +
                # @param [String] return_type Return type
         
     | 
| 
      
 180 
     | 
    
         
            +
                # @return [Mixed] Data in a particular type
         
     | 
| 
       131 
181 
     | 
    
         
             
                def convert_to_type(data, return_type)
         
     | 
| 
       132 
182 
     | 
    
         
             
                  return nil if data.nil?
         
     | 
| 
       133 
183 
     | 
    
         
             
                  case return_type
         
     | 
| 
         @@ -137,7 +187,7 @@ module Shotstack 
     | 
|
| 
       137 
187 
     | 
    
         
             
                    data.to_i
         
     | 
| 
       138 
188 
     | 
    
         
             
                  when 'Float'
         
     | 
| 
       139 
189 
     | 
    
         
             
                    data.to_f
         
     | 
| 
       140 
     | 
    
         
            -
                  when ' 
     | 
| 
      
 190 
     | 
    
         
            +
                  when 'Boolean'
         
     | 
| 
       141 
191 
     | 
    
         
             
                    data == true
         
     | 
| 
       142 
192 
     | 
    
         
             
                  when 'DateTime'
         
     | 
| 
       143 
193 
     | 
    
         
             
                    # parse date time (expecting ISO 8601 format)
         
     | 
| 
         @@ -146,52 +196,58 @@ module Shotstack 
     | 
|
| 
       146 
196 
     | 
    
         
             
                    # parse date time (expecting ISO 8601 format)
         
     | 
| 
       147 
197 
     | 
    
         
             
                    Date.parse data
         
     | 
| 
       148 
198 
     | 
    
         
             
                  when 'Object'
         
     | 
| 
       149 
     | 
    
         
            -
                    # generic object, return directly
         
     | 
| 
      
 199 
     | 
    
         
            +
                    # generic object (usually a Hash), return directly
         
     | 
| 
       150 
200 
     | 
    
         
             
                    data
         
     | 
| 
       151 
201 
     | 
    
         
             
                  when /\AArray<(.+)>\z/
         
     | 
| 
       152 
202 
     | 
    
         
             
                    # e.g. Array<Pet>
         
     | 
| 
       153 
203 
     | 
    
         
             
                    sub_type = $1
         
     | 
| 
       154 
     | 
    
         
            -
                    data.map {|item| convert_to_type(item, sub_type) }
         
     | 
| 
      
 204 
     | 
    
         
            +
                    data.map { |item| convert_to_type(item, sub_type) }
         
     | 
| 
       155 
205 
     | 
    
         
             
                  when /\AHash\<String, (.+)\>\z/
         
     | 
| 
       156 
206 
     | 
    
         
             
                    # e.g. Hash<String, Integer>
         
     | 
| 
       157 
207 
     | 
    
         
             
                    sub_type = $1
         
     | 
| 
       158 
208 
     | 
    
         
             
                    {}.tap do |hash|
         
     | 
| 
       159 
     | 
    
         
            -
                      data.each {|k, v| hash[k] = convert_to_type(v, sub_type) }
         
     | 
| 
      
 209 
     | 
    
         
            +
                      data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
         
     | 
| 
       160 
210 
     | 
    
         
             
                    end
         
     | 
| 
       161 
211 
     | 
    
         
             
                  else
         
     | 
| 
       162 
212 
     | 
    
         
             
                    # models, e.g. Pet
         
     | 
| 
       163 
     | 
    
         
            -
                    Shotstack.const_get(return_type). 
     | 
| 
       164 
     | 
    
         
            -
                      model.build_from_hash data
         
     | 
| 
       165 
     | 
    
         
            -
                    end
         
     | 
| 
      
 213 
     | 
    
         
            +
                    Shotstack.const_get(return_type).build_from_hash(data)
         
     | 
| 
       166 
214 
     | 
    
         
             
                  end
         
     | 
| 
       167 
215 
     | 
    
         
             
                end
         
     | 
| 
       168 
216 
     | 
    
         | 
| 
       169 
217 
     | 
    
         
             
                # Save response body into a file in (the defined) temporary folder, using the filename
         
     | 
| 
       170 
218 
     | 
    
         
             
                # from the "Content-Disposition" header if provided, otherwise a random filename.
         
     | 
| 
      
 219 
     | 
    
         
            +
                # The response body is written to the file in chunks in order to handle files which
         
     | 
| 
      
 220 
     | 
    
         
            +
                # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
         
     | 
| 
      
 221 
     | 
    
         
            +
                # process can use.
         
     | 
| 
       171 
222 
     | 
    
         
             
                #
         
     | 
| 
       172 
223 
     | 
    
         
             
                # @see Configuration#temp_folder_path
         
     | 
| 
       173 
     | 
    
         
            -
                 
     | 
| 
       174 
     | 
    
         
            -
                def download_file(response)
         
     | 
| 
       175 
     | 
    
         
            -
                  content_disposition = response.headers['Content-Disposition']
         
     | 
| 
       176 
     | 
    
         
            -
                  if content_disposition
         
     | 
| 
       177 
     | 
    
         
            -
                    filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
         
     | 
| 
       178 
     | 
    
         
            -
                    prefix = sanitize_filename(filename)
         
     | 
| 
       179 
     | 
    
         
            -
                  else
         
     | 
| 
       180 
     | 
    
         
            -
                    prefix = 'download-'
         
     | 
| 
       181 
     | 
    
         
            -
                  end
         
     | 
| 
       182 
     | 
    
         
            -
                  prefix = prefix + '-' unless prefix.end_with?('-')
         
     | 
| 
       183 
     | 
    
         
            -
             
     | 
| 
      
 224 
     | 
    
         
            +
                def download_file(request)
         
     | 
| 
       184 
225 
     | 
    
         
             
                  tempfile = nil
         
     | 
| 
       185 
     | 
    
         
            -
                  encoding =  
     | 
| 
       186 
     | 
    
         
            -
                   
     | 
| 
       187 
     | 
    
         
            -
                     
     | 
| 
       188 
     | 
    
         
            -
                     
     | 
| 
      
 226 
     | 
    
         
            +
                  encoding = nil
         
     | 
| 
      
 227 
     | 
    
         
            +
                  request.on_headers do |response|
         
     | 
| 
      
 228 
     | 
    
         
            +
                    content_disposition = response.headers['Content-Disposition']
         
     | 
| 
      
 229 
     | 
    
         
            +
                    if content_disposition && content_disposition =~ /filename=/i
         
     | 
| 
      
 230 
     | 
    
         
            +
                      filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
         
     | 
| 
      
 231 
     | 
    
         
            +
                      prefix = sanitize_filename(filename)
         
     | 
| 
      
 232 
     | 
    
         
            +
                    else
         
     | 
| 
      
 233 
     | 
    
         
            +
                      prefix = 'download-'
         
     | 
| 
      
 234 
     | 
    
         
            +
                    end
         
     | 
| 
      
 235 
     | 
    
         
            +
                    prefix = prefix + '-' unless prefix.end_with?('-')
         
     | 
| 
      
 236 
     | 
    
         
            +
                    encoding = response.body.encoding
         
     | 
| 
      
 237 
     | 
    
         
            +
                    tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
         
     | 
| 
      
 238 
     | 
    
         
            +
                    @tempfile = tempfile
         
     | 
| 
      
 239 
     | 
    
         
            +
                  end
         
     | 
| 
      
 240 
     | 
    
         
            +
                  request.on_body do |chunk|
         
     | 
| 
      
 241 
     | 
    
         
            +
                    chunk.force_encoding(encoding)
         
     | 
| 
      
 242 
     | 
    
         
            +
                    tempfile.write(chunk)
         
     | 
| 
      
 243 
     | 
    
         
            +
                  end
         
     | 
| 
      
 244 
     | 
    
         
            +
                  request.on_complete do |response|
         
     | 
| 
      
 245 
     | 
    
         
            +
                    tempfile.close if tempfile
         
     | 
| 
      
 246 
     | 
    
         
            +
                    @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
         
     | 
| 
      
 247 
     | 
    
         
            +
                                        "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
         
     | 
| 
      
 248 
     | 
    
         
            +
                                        "will be deleted automatically with GC. It's also recommended to delete the temp file "\
         
     | 
| 
      
 249 
     | 
    
         
            +
                                        "explicitly with `tempfile.delete`"
         
     | 
| 
       189 
250 
     | 
    
         
             
                  end
         
     | 
| 
       190 
     | 
    
         
            -
                  @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
         
     | 
| 
       191 
     | 
    
         
            -
                                      "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
         
     | 
| 
       192 
     | 
    
         
            -
                                      "will be deleted automatically with GC. It's also recommended to delete the temp file "\
         
     | 
| 
       193 
     | 
    
         
            -
                                      "explicitly with `tempfile.delete`"
         
     | 
| 
       194 
     | 
    
         
            -
                  tempfile
         
     | 
| 
       195 
251 
     | 
    
         
             
                end
         
     | 
| 
       196 
252 
     | 
    
         | 
| 
       197 
253 
     | 
    
         
             
                # Sanitize filename by removing path.
         
     | 
| 
         @@ -200,7 +256,7 @@ module Shotstack 
     | 
|
| 
       200 
256 
     | 
    
         
             
                # @param [String] filename the filename to be sanitized
         
     | 
| 
       201 
257 
     | 
    
         
             
                # @return [String] the sanitized filename
         
     | 
| 
       202 
258 
     | 
    
         
             
                def sanitize_filename(filename)
         
     | 
| 
       203 
     | 
    
         
            -
                  filename.gsub 
     | 
| 
      
 259 
     | 
    
         
            +
                  filename.gsub(/.*[\/\\]/, '')
         
     | 
| 
       204 
260 
     | 
    
         
             
                end
         
     | 
| 
       205 
261 
     | 
    
         | 
| 
       206 
262 
     | 
    
         
             
                def build_request_url(path)
         
     | 
| 
         @@ -209,6 +265,12 @@ module Shotstack 
     | 
|
| 
       209 
265 
     | 
    
         
             
                  URI.encode(@config.base_url + path)
         
     | 
| 
       210 
266 
     | 
    
         
             
                end
         
     | 
| 
       211 
267 
     | 
    
         | 
| 
      
 268 
     | 
    
         
            +
                # Builds the HTTP request body
         
     | 
| 
      
 269 
     | 
    
         
            +
                #
         
     | 
| 
      
 270 
     | 
    
         
            +
                # @param [Hash] header_params Header parameters
         
     | 
| 
      
 271 
     | 
    
         
            +
                # @param [Hash] form_params Query parameters
         
     | 
| 
      
 272 
     | 
    
         
            +
                # @param [Object] body HTTP body (JSON/XML)
         
     | 
| 
      
 273 
     | 
    
         
            +
                # @return [String] HTTP body data in the form of string
         
     | 
| 
       212 
274 
     | 
    
         
             
                def build_request_body(header_params, form_params, body)
         
     | 
| 
       213 
275 
     | 
    
         
             
                  # http form
         
     | 
| 
       214 
276 
     | 
    
         
             
                  if header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
         
     | 
| 
         @@ -216,7 +278,7 @@ module Shotstack 
     | 
|
| 
       216 
278 
     | 
    
         
             
                    data = {}
         
     | 
| 
       217 
279 
     | 
    
         
             
                    form_params.each do |key, value|
         
     | 
| 
       218 
280 
     | 
    
         
             
                      case value
         
     | 
| 
       219 
     | 
    
         
            -
                      when File, Array, nil
         
     | 
| 
      
 281 
     | 
    
         
            +
                      when ::File, ::Array, nil
         
     | 
| 
       220 
282 
     | 
    
         
             
                        # let typhoeus handle File, Array and nil parameters
         
     | 
| 
       221 
283 
     | 
    
         
             
                        data[key] = value
         
     | 
| 
       222 
284 
     | 
    
         
             
                      else
         
     | 
| 
         @@ -232,6 +294,10 @@ module Shotstack 
     | 
|
| 
       232 
294 
     | 
    
         
             
                end
         
     | 
| 
       233 
295 
     | 
    
         | 
| 
       234 
296 
     | 
    
         
             
                # Update hearder and query params based on authentication settings.
         
     | 
| 
      
 297 
     | 
    
         
            +
                #
         
     | 
| 
      
 298 
     | 
    
         
            +
                # @param [Hash] header_params Header parameters
         
     | 
| 
      
 299 
     | 
    
         
            +
                # @param [Hash] query_params Query parameters
         
     | 
| 
      
 300 
     | 
    
         
            +
                # @param [String] auth_names Authentication scheme name
         
     | 
| 
       235 
301 
     | 
    
         
             
                def update_params_for_auth!(header_params, query_params, auth_names)
         
     | 
| 
       236 
302 
     | 
    
         
             
                  Array(auth_names).each do |auth_name|
         
     | 
| 
       237 
303 
     | 
    
         
             
                    auth_setting = @config.auth_settings[auth_name]
         
     | 
| 
         @@ -244,6 +310,9 @@ module Shotstack 
     | 
|
| 
       244 
310 
     | 
    
         
             
                  end
         
     | 
| 
       245 
311 
     | 
    
         
             
                end
         
     | 
| 
       246 
312 
     | 
    
         | 
| 
      
 313 
     | 
    
         
            +
                # Sets user agent in HTTP header
         
     | 
| 
      
 314 
     | 
    
         
            +
                #
         
     | 
| 
      
 315 
     | 
    
         
            +
                # @param [String] user_agent User agent (e.g. openapi-generator/ruby/1.0.0)
         
     | 
| 
       247 
316 
     | 
    
         
             
                def user_agent=(user_agent)
         
     | 
| 
       248 
317 
     | 
    
         
             
                  @user_agent = user_agent
         
     | 
| 
       249 
318 
     | 
    
         
             
                  @default_headers['User-Agent'] = @user_agent
         
     | 
| 
         @@ -256,7 +325,7 @@ module Shotstack 
     | 
|
| 
       256 
325 
     | 
    
         
             
                  return nil if accepts.nil? || accepts.empty?
         
     | 
| 
       257 
326 
     | 
    
         
             
                  # use JSON when present, otherwise use all of the provided
         
     | 
| 
       258 
327 
     | 
    
         
             
                  json_accept = accepts.find { |s| json_mime?(s) }
         
     | 
| 
       259 
     | 
    
         
            -
                   
     | 
| 
      
 328 
     | 
    
         
            +
                  json_accept || accepts.join(',')
         
     | 
| 
       260 
329 
     | 
    
         
             
                end
         
     | 
| 
       261 
330 
     | 
    
         | 
| 
       262 
331 
     | 
    
         
             
                # Return Content-Type header based on an array of content types provided.
         
     | 
| 
         @@ -267,21 +336,21 @@ module Shotstack 
     | 
|
| 
       267 
336 
     | 
    
         
             
                  return 'application/json' if content_types.nil? || content_types.empty?
         
     | 
| 
       268 
337 
     | 
    
         
             
                  # use JSON when present, otherwise use the first one
         
     | 
| 
       269 
338 
     | 
    
         
             
                  json_content_type = content_types.find { |s| json_mime?(s) }
         
     | 
| 
       270 
     | 
    
         
            -
                   
     | 
| 
      
 339 
     | 
    
         
            +
                  json_content_type || content_types.first
         
     | 
| 
       271 
340 
     | 
    
         
             
                end
         
     | 
| 
       272 
341 
     | 
    
         | 
| 
       273 
342 
     | 
    
         
             
                # Convert object (array, hash, object, etc) to JSON string.
         
     | 
| 
       274 
343 
     | 
    
         
             
                # @param [Object] model object to be converted into JSON string
         
     | 
| 
       275 
344 
     | 
    
         
             
                # @return [String] JSON string representation of the object
         
     | 
| 
       276 
345 
     | 
    
         
             
                def object_to_http_body(model)
         
     | 
| 
       277 
     | 
    
         
            -
                  return if model.nil?
         
     | 
| 
       278 
     | 
    
         
            -
                   
     | 
| 
      
 346 
     | 
    
         
            +
                  return model if model.nil? || model.is_a?(String)
         
     | 
| 
      
 347 
     | 
    
         
            +
                  local_body = nil
         
     | 
| 
       279 
348 
     | 
    
         
             
                  if model.is_a?(Array)
         
     | 
| 
       280 
     | 
    
         
            -
                     
     | 
| 
      
 349 
     | 
    
         
            +
                    local_body = model.map { |m| object_to_hash(m) }
         
     | 
| 
       281 
350 
     | 
    
         
             
                  else
         
     | 
| 
       282 
     | 
    
         
            -
                     
     | 
| 
      
 351 
     | 
    
         
            +
                    local_body = object_to_hash(model)
         
     | 
| 
       283 
352 
     | 
    
         
             
                  end
         
     | 
| 
       284 
     | 
    
         
            -
                   
     | 
| 
      
 353 
     | 
    
         
            +
                  local_body.to_json
         
     | 
| 
       285 
354 
     | 
    
         
             
                end
         
     | 
| 
       286 
355 
     | 
    
         | 
| 
       287 
356 
     | 
    
         
             
                # Convert object(non-array) to hash.
         
     |