module CubaApi::Cors

Public Instance Methods

on_cors( *args ) { |*vars| ... } click to toggle source

# only put method allowed on_cors_method( [:post, :put], ‘my_path/new’ ) do

on ...
  ...
end

end

# File lib/cuba_api/cors.rb, line 152
def on_cors( *args )
  _on_cors( nil, *args ) do |*vars|
    yield( *vars )
  end
end
on_cors_method( methods, *args ) { |*vars| ... } click to toggle source
# File lib/cuba_api/cors.rb, line 158
def on_cors_method( methods, *args )
  methods = [ methods ] unless methods.is_a? Array
  _on_cors( methods, *args ) do |*vars|
    yield( *vars )
  end
end

Private Instance Methods

_cors_allowed?( cors, methods ) click to toggle source
# File lib/cuba_api/cors.rb, line 167
def _cors_allowed?( cors, methods )
  ( methods != nil && 
    methods.detect { |m| send m.to_sym } != nil ) ||
  ( env[ 'HTTP_ORIGIN' ] &&
    cors.origins( env[ 'HTTP_ORIGIN' ] ) != nil )
end
_on_cors( methods = nil, *args ) { |*vars| ... } click to toggle source
# File lib/cuba_api/cors.rb, line 174
def _on_cors( methods = nil, *args )
  cors = ( self.class[ :cors ] ||= CORS.new( self.class ) )

  if req.options? && cors.allowed?( methods )
    #  send the response on option headers
    on *args do
      cors.process( env, res, methods )
    end
  elsif _cors_allowed?( cors, methods ) != false # could be true or nil
    on *args do |*vars|
      cors.allow_origin( env, res )
      yield( *vars )
    end
  end
end