Sha256: 13a2c10762cd1e0b4b3573d95fc71f8ac46a7a9213ec36bb42d3066f2c9ea873

Contents?: true

Size: 556 Bytes

Versions: 10

Compression:

Stored size: 556 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)
      /(<!DOCTYPE html>)|(<html>)/ =~ body
    end

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

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

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
rock_rms-9.14.0 lib/rock_rms/parse_oj.rb
rock_rms-9.13.0 lib/rock_rms/parse_oj.rb
rock_rms-9.12.0 lib/rock_rms/parse_oj.rb
rock_rms-9.11.0 lib/rock_rms/parse_oj.rb
rock_rms-9.10.0 lib/rock_rms/parse_oj.rb
rock_rms-9.9.0 lib/rock_rms/parse_oj.rb
rock_rms-9.8.0 lib/rock_rms/parse_oj.rb
rock_rms-9.7.0 lib/rock_rms/parse_oj.rb
rock_rms-9.6.0 lib/rock_rms/parse_oj.rb
rock_rms-9.5.0 lib/rock_rms/parse_oj.rb