Sha256: f2da101634141d3ab7167708fdc95305581caf2f2ca8ab829b78090e22869237

Contents?: true

Size: 555 Bytes

Versions: 6

Compression:

Stored size: 555 Bytes

Contents

require 'oj'

module FaradayMiddleware
  class ParseOj < Faraday::Middleware
    def on_complete(env)
      if empty_body?(env[:body].strip)
        env[:body] = nil
      elsif html_body?(env[:body])
        env[:body] = env[:body]
      else
        env[:body] = Oj.load(env[:body], mode: :compat)
      end
    end

    private

    def html_body?(body)
      body.start_with?('<!DOCTYPE html>')
    end

    def empty_body?(body)
      body.empty? && body == ''
    end
  end
end

Faraday::Response.register_middleware(oj: FaradayMiddleware::ParseOj)

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rock_rms-9.4.0 lib/rock_rms/parse_oj.rb
rock_rms-9.3.0 lib/rock_rms/parse_oj.rb
rock_rms-9.2.0 lib/rock_rms/parse_oj.rb
rock_rms-9.1.0 lib/rock_rms/parse_oj.rb
rock_rms-9.0.0 lib/rock_rms/parse_oj.rb
rock_rms-8.23.0 lib/rock_rms/parse_oj.rb