Sha256: 5a3c5d429b4f19d915f8fbb8a159aa0cd57e2dfc5e2e260c04734d82b061ef94
Contents?: true
Size: 1.4 KB
Versions: 5
Compression:
Stored size: 1.4 KB
Contents
module Wordnik class Response require 'active_model' require 'json' include ActiveModel::Validations include ActiveModel::Conversion extend ActiveModel::Naming attr_accessor :raw validates_presence_of :raw def initialize(raw) self.raw = raw end def code raw.code end # If body is JSON, parse it # TODO: If body is XML, parse it # Otherwise return raw string def body JSON.parse(raw.body) rescue raw.body end def headers h = {} raw.headers_hash.each {|k,v| h[k] = v } h end # Extract the response format from the header hash # e.g. {'Content-Type' => 'application/json'} def format headers['Content-Type'].split("/").last.to_sym end def json? format == :json end def xml? format == :xml end def pretty_body return unless body.present? case format when :json JSON.pretty_generate(body).gsub(/\n/, '<br/>').html_safe when :xml xsl = Nokogiri::XSLT(File.open(Rails.root.join("config", "pretty_print.xsl"))) xml = Nokogiri(body) coder = HTMLEntities.new coder.encode(xsl.apply_to(xml).to_s) end end def pretty_headers JSON.pretty_generate(headers).gsub(/\n/, '<br/>').html_safe end # It's an ActiveModel thing.. def persisted? false end end end
Version data entries
5 entries across 5 versions & 1 rubygems