Sha256: 8374bf43e9d66507e4b919b4e47fe7a23fabc0cc2a5f90a336557e6e3753be82
Contents?: true
Size: 1.32 KB
Versions: 1
Compression:
Stored size: 1.32 KB
Contents
module JSONAPIonify::Api class Response attr_reader :action, :accept, :response_block, :status def initialize(action, accept: nil, status: nil, &block) @action = action @response_block = block || proc {} @accept = accept || 'application/vnd.api+json' @status = status || 200 end def ==(other) self.class == other.class && %i{@accept}.all? do |ivar| instance_variable_get(ivar) == other.instance_variable_get(ivar) end end def accept?(request) request.accept.any? do |accept| @accept == accept || accept == '*/*' || self.accept == '*/*' end end def documentation_object OpenStruct.new( accept: accept, content_type: accept, status: status ) end def call(instance, context) response = self instance.instance_eval do body = instance_exec(context, &response.response_block) Rack::Response.new.tap do |rack_response| rack_response.status = response.status response_headers.each { |k, v| rack_response.headers[k] = v } rack_response.headers['content-type'] = response.accept unless response.accept == '*/*' rack_response.write(body) unless body.nil? end.finish end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jsonapionify-0.0.1.pre | lib/jsonapionify/api/response.rb |