Sha256: ecea923dbc02962c75afa68872868df48989fe9af177dc9beef7a662b01a9d72

Contents?: true

Size: 1.17 KB

Versions: 4

Compression:

Stored size: 1.17 KB

Contents

class Http2::PostDataGenerator
  def initialize(pdata, args = {})
    @pdata = pdata
    @args = args
  end

  def generate
    praw = ""

    if @pdata.is_a?(Hash)
      praw << generate_for_hash(@pdata)
    elsif @pdata.is_a?(Array)
      praw << generate_for_array(@pdata)
    else
      return @pdata.to_s
    end

    praw
  end

private

  def generate_for_hash(hash)
    praw = ""

    hash.each do |key, val|
      praw << "&" if praw != ""
      key = "#{@args[:orig_key]}[#{key}]" if @args[:orig_key]
      praw << generate_key_value(key, val)
    end

    praw
  end

  def generate_for_array(array)
    praw = ""

    count = 0
    array.each do |val|
      praw << "&" if praw != ""

      if @args[:orig_key]
        key = "#{@args[:orig_key]}[#{count}]"
      else
        key = count
      end

      praw << generate_key_value(key, val)
      count += 1
    end

    praw
  end

  def generate_key_value(key, value)
    if value.is_a?(Hash) || value.is_a?(Array)
      ::Http2::PostDataGenerator.new(value, orig_key: key).generate
    else
      data = ::Http2::PostDataGenerator.new(value).generate
      "#{Http2::Utils.urlenc(key)}=#{Http2::Utils.urlenc(data)}"
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
http2-0.0.36 lib/http2/post_data_generator.rb
http2-0.0.35 lib/http2/post_data_generator.rb
http2-0.0.34 lib/http2/post_data_generator.rb
http2-0.0.33 lib/http2/post_data_generator.rb