From f67e72602bf7e4b531117f206e4b36d6e0b5efe9 Mon Sep 17 00:00:00 2001 From: Konstantin Haase Date: Mon, 23 Jul 2012 15:16:26 +0200 Subject: [PATCH] add CORS support --- lib/travis/api/app.rb | 3 +++ lib/travis/api/cors.rb | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 lib/travis/api/cors.rb diff --git a/lib/travis/api/app.rb b/lib/travis/api/app.rb index ce14ac68..ff8095ab 100644 --- a/lib/travis/api/app.rb +++ b/lib/travis/api/app.rb @@ -1,5 +1,6 @@ require 'sinatra' require 'sinatra/reloader' +require 'travis/api/cors' require 'json' require 'travis' @@ -9,8 +10,10 @@ module Travis module Api class App < Sinatra::Application autoload :Service, 'travis/api/app/service' + disable :protection use ActiveRecord::ConnectionAdapters::ConnectionManagement + use Travis::API::CORS error ActiveRecord::RecordNotFound do not_found diff --git a/lib/travis/api/cors.rb b/lib/travis/api/cors.rb new file mode 100644 index 00000000..f27f7e8a --- /dev/null +++ b/lib/travis/api/cors.rb @@ -0,0 +1,20 @@ +require 'sinatra/base' + +module Travis + module API + class CORS < Sinatra::Base + disable :protection + + before do + headers['Access-Control-Allow-Origin'] = "*" + headers['Access-Control-Allow-Credentials'] = "true" + headers['Access-Control-Expose-Headers'] = "Content-Type" + end + + options // do + headers['Access-Control-Allow-Methods'] = "GET, POST, PATCH, PUT, DELETE" + headers['Access-Control-Allow-Headers'] = "Content-Type, Authorization" + end + end + end +end