Sha256: 368a842504f8466e6e45318fac7dc0cd16d17e7232baf4398d4d568c41256d44
Contents?: true
Size: 1.49 KB
Versions: 3
Compression:
Stored size: 1.49 KB
Contents
# frozen_string_literal: true require "json" require "pakyow/support/extension" require "pakyow/support/indifferentize" require "pakyow/connection/query_parser" require "pakyow/connection/multipart_parser" module Pakyow module Environment module Behavior module InputParsing extend Support::Extension using Support::Indifferentize apply_extension do class_state :input_parsers, default: {} on "configure" do Pakyow.parse_input "application/x-www-form-urlencoded" do |input, connection| connection.params.parse(input.read) end Pakyow.parse_input "multipart/form-data" do |input, connection| Connection::MultipartParser.new( connection.params, boundary: connection.type_params[:boundary] ).parse(input) end Pakyow.parse_input "application/json", rewindable: true do |input, connection| values = JSON.parse(input.read) if values.is_a?(Hash) values.deep_indifferentize.each do |key, value| connection.params.add(key, value) end end values end end end class_methods do def parse_input(type, rewindable: true, &block) @input_parsers[type] = { block: block, rewindable: rewindable } end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems