Sha256: a44f2be33b1397c2c75b4b664f1aba1e46c54807e9da98473d1ddcf4c8abc9e9
Contents?: true
Size: 1.39 KB
Versions: 3
Compression:
Stored size: 1.39 KB
Contents
require 'json' module BooticClient module ResponseHandlers class Set def initialize(handlers = []) @handlers = handlers end def resolve(response, client) custom = @handlers.find do |handler| obj = handler.call(response, client) break obj if obj nil end # if no handler found, # return raw Faraday response custom || response end def append(handler) @handlers << handler end def prepend(handler) @handlers.unshift handler end def to_a @handlers end end JSON_MIME_EXP = /^application\/json/.freeze IMAGE_MIME_EXP = /^image\//.freeze CONTENT_TYPE = 'Content-Type'.freeze IO = Struct.new(:io, :file_name, :mime_type) do def read(length = nil, outbuff = nil) io.read(length, outbuff) end end Hal = Proc.new do |resp, client| if resp.headers[CONTENT_TYPE] =~ JSON_MIME_EXP body = resp.body data = body.strip.empty? ? {} : ::JSON.parse(body) Entity.new(data, client) end end File = Proc.new do |resp, client| if resp.headers[CONTENT_TYPE] =~ IMAGE_MIME_EXP fname = ::File.basename(resp.env[:url].to_s) IO.new( StringIO.new(resp.body), fname, resp.headers[CONTENT_TYPE] ) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
bootic_client-0.0.28 | lib/bootic_client/response_handlers.rb |
bootic_client-0.0.27 | lib/bootic_client/response_handlers.rb |
bootic_client-0.0.26 | lib/bootic_client/response_handlers.rb |