Method: Cloudinary::Utils.api_string_to_sign

Defined in:
lib/cloudinary/utils.rb

.api_string_to_sign(params_to_sign, signature_version = 2) ⇒ String

Generates a string to be signed for API requests

Parameters:

  • params_to_sign (Hash)

    Parameters to include in the signature

  • signature_version (Integer) (defaults to: 2)

    Version of signature algorithm to use:

    • Version 1: Original behavior without parameter encoding

    • Version 2+ (default): Includes parameter encoding to prevent parameter smuggling

Returns:

  • (String)

    String to be signed



492
493
494
495
496
497
498
499
500
501
# File 'lib/cloudinary/utils.rb', line 492

def self.api_string_to_sign(params_to_sign, signature_version = 2)
  params_to_sign.map { |k, v| [k.to_s, v.is_a?(Array) ? v.join(",") : v] }
                .reject { |k, v| v.nil? || v == "" }
                .sort_by(&:first)
                .map { |k, v| 
                  param_string = "#{k}=#{v}"
                  signature_version >= 2 ? encode_param(param_string) : param_string
                }
                .join("&")
end