Sha256: 5898842ec6879ccfa4d445986c241deb8cbb6caec8ea21a3e658b57c1e862630
Contents?: true
Size: 1.57 KB
Versions: 3
Compression:
Stored size: 1.57 KB
Contents
module Wordnik class Response require 'active_model' require 'json' require 'nokogiri' require 'htmlentities' 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 if self.code > 399 raise AuthorizationError, raw.inspect end begin JSON.parse raw.body rescue raw.body end 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/>') when :xml xsl = Nokogiri::XSLT(File.open(File.join(File.dirname(__FILE__), "../../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/>') end # It's an ActiveModel thing.. def persisted? false end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
wordnik-4.06.02 | lib/wordnik/response.rb |
wordnik-4.06.01 | lib/wordnik/response.rb |
wordnik-4.06.00 | lib/wordnik/response.rb |