Class HTTP::FormData::Urlencoded
In: lib/http/form_data/urlencoded.rb
Parent: Object

`application/x-www-form-urlencoded` form data.

Methods

content_type   encoder   encoder=   new  

Included Modules

Readable

External Aliases

size -> content_length
  Returns form data content size to be used for HTTP request `Content-Length` header.

@return [Integer]

Public Class methods

Returns form data encoder implementation. Default: `URI.encode_www_form`.

@see .encoder= @return [call]

Set custom form data encoder implementation.

@example

    module CustomFormDataEncoder
      UNESCAPED_CHARS = /[^a-z0-9\-\.\_\~]/i

      def self.escape(s)
        ::URI::DEFAULT_PARSER.escape(s.to_s, UNESCAPED_CHARS)
      end

      def self.call(data)
        parts = []

        data.each do |k, v|
          k = escape(k)

          if v.nil?
            parts << k
          elsif v.respond_to?(:to_ary)
            v.to_ary.each { |vv| parts << "#{k}=#{escape vv}" }
          else
            parts << "#{k}=#{escape v}"
          end
        end

        parts.join("&")
      end
    end

    HTTP::FormData::Urlencoded.encoder = CustomFormDataEncoder

@raise [ArgumentError] if implementation deos not responds to `call`. @param implementation [call] @return [void]

@param [to_h, Hash] data form data key-value Hash

Public Instance methods

Returns MIME type to be used for HTTP request `Content-Type` header.

@return [String]

[Validate]