Sha256: c64cface7c3c4e3c3c92b47483955ae090d574ef2a733137fbeb8e7755917c8d
Contents?: true
Size: 1 KB
Versions: 11
Compression:
Stored size: 1 KB
Contents
# frozen_string_literal: true module Shark module Middleware class ComposeRequest < Faraday::Middleware HTTP_METHODS_WITH_BODY = %i[post patch put].freeze CONTENT_TYPE = 'Content-Type' JSON_MIME_TYPE = 'application/json' JSON_MIME_TYPE_REGEX = %r{^application/(vnd\..+\+)?json$}.freeze def call(env) compose_request_body(env) if request_with_body?(env) @app.call(env) end def request_with_body?(env) HTTP_METHODS_WITH_BODY.include?(env[:method]) end def compose_request_body(env) type = request_type(env) params = env[:body] || {} params = if JSON_MIME_TYPE_REGEX =~ type ::JSON.dump(params) else params.to_param end env[:body] = params end def request_type(env) type = env[:request_headers][CONTENT_TYPE].to_s type = type.split(';', 2).first if type.index(';') type end end end end
Version data entries
11 entries across 11 versions & 1 rubygems