Sha256: fa83d9237c53ac022aaffc745a38ce158bce629be2a25aa19b1a1e3915effed8
Contents?: true
Size: 1.39 KB
Versions: 7
Compression:
Stored size: 1.39 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 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
Version data entries
7 entries across 7 versions & 1 rubygems