Sha256: 65316cff38143c043737d65d63f5fff951a533de709616816469da505d2bc014

Contents?: true

Size: 842 Bytes

Versions: 5

Compression:

Stored size: 842 Bytes

Contents

class Evil::Client::Middleware
  class StringifyMultipart < Base
    require_relative "stringify_multipart/part"

    private

    def build(env)
      return env unless env[:format] == "multipart"

      env.dup.tap do |hash|
        bound = SecureRandom.hex(10)
        hash[:headers] ||= {}
        hash[:headers]["content-type"] = \
          "multipart/form-data; boundary=#{bound}"
        hash[:body_string] = body_string(hash[:files], bound)
      end
    end

    def body_string(list, bound)
      return if list.empty?
      [nil, nil, parts(list, bound), "--#{bound}--", nil].join("\r\n")
    end

    def parts(list, bound)
      list.map.with_index { |item, index| part(bound, index + 1, item) }
    end

    def part(bound, index, data)
      "--#{bound}\r\n#{Part.new(name: "AttachedFile#{index}", **data)}"
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
evil-client-0.3.1 lib/evil/client/middleware/stringify_multipart.rb
evil-client-0.3.0 lib/evil/client/middleware/stringify_multipart.rb
evil-client-0.2.3 lib/evil/client/middleware/stringify_multipart.rb
evil-client-0.2.2 lib/evil/client/middleware/stringify_multipart.rb
evil-client-0.2.1 lib/evil/client/middleware/stringify_multipart.rb