rack-cors-halt 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NGQ5NGVmYWY3MmIzYmJhMjNiMGQyNGZjZDg5ODcyMzdkZTVkNjdjNQ==
4
+ MzU0NmVmNjQzMGNjNzcwMmM4NzgxZjMxYTc3OThmZjNmZGRkM2U3Zg==
5
5
  data.tar.gz: !binary |-
6
- NTQ0YmI3MTU5NDExOTFhZjc4MmNmZjI4YmUxNzAxZTA2ZjA1Zjg2NA==
6
+ OTMzMTg0YjU2MTFmZTM3MTU2N2Q0NDZlMDI1YWE1NGQ1MmY5Yjk3Ng==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MGI4N2I1NmJlZDM2MzFmY2NhZTA0Y2FkMjkxMzVhOWRmNzllOGIxYjk5ZTNk
10
- MzY3NjBkN2IzZDExZjVlYTljYjQyZjZlNDk2NDNkMDllYjE2NjIzYjBmZDM2
11
- ZDUxYWRlOTBmNGQ2MDZlOTRiZjUzNzU3YWJjYjk4NTM2YjM2YWQ=
9
+ OWYwMmNiNDU5M2RmNmRhYTYwNjBlN2JlY2ViYWMzMTM0ZDcwOGQ4ODc3OGFm
10
+ MDQ0Y2U4YmQ4YTg5NmI0Mzk0YWJmNjE3NTIzMTliODhjMmU1NGI0ZmY0NmMw
11
+ MDQwNWI0MGI3MzlkMDM4MzE1NmRhNzAxMDViNDNjNDVhNmRkNDc=
12
12
  data.tar.gz: !binary |-
13
- YzIwNmEyNjQ0NTZjNWUxM2VhNDA0NmZmOWY3NWJlZWY4YWZiZWEzOTZhNGI0
14
- YTJiM2ZjYTY5ZWUxMzc2ZjA4OTg0NzhkNDdhMjczNzQ4ZWU3MTExYTRhNjJh
15
- MWQ3ZGQ4MzZlNWU4NGQ2ZDJiM2Y5YzI1Njk5NzQ0MTRkYmYzN2E=
13
+ M2Y1Y2ZiM2ZlMTQ2OTg2YWUxOTc0OTA5MGIzMWU0YWNkMmEyM2FlYzcwOWRk
14
+ MzY4ZWFiODQzNTkyNmU5NDEzYjk3ZWY2OGUxZGFiYWVlNDY2YTAzMDZjYjFk
15
+ NjVjYWI2MDM4MmEyN2JlYjZhZTA5ZWE4ZDJmMTQzNGYzNzI1Y2M=
data/README.md CHANGED
@@ -1,4 +1,55 @@
1
1
  rack-cors-halt
2
2
  ==============
3
3
 
4
- Halt a CORS request before hitting the controller.
4
+ This gem provides support to prevent a request from hitting the controller when the CORS validation fails.
5
+
6
+
7
+ Important notice
8
+ ==============
9
+
10
+ This gem will only work for gem [Rack::Cors](https://github.com/cyu/rack-cors) at version '0.3.0'.
11
+ At this time, November 18th 2014, the '0.3.0' version is in the 'master' branch, so you need to include the gem like this
12
+ ```ruby
13
+ gem 'rack-cors', :require => 'rack/cors', github: "cyu/rack-cors", branch: 'master'
14
+ ```
15
+ ## Installation
16
+ In your `Gemfile` add the line
17
+
18
+ ```ruby
19
+ gem 'rack-cors-halt'
20
+ ```
21
+ and then run
22
+ ```
23
+ bundle
24
+ ```
25
+ or install it yourself with
26
+ ```
27
+ gem install rack-cors-halt
28
+ ```
29
+
30
+ ## Configuration
31
+
32
+ ### Rack
33
+
34
+ In the `config.ru`file you need to configure the `Rack::Cors::Halt` middleware by passing it in the `use` command:
35
+
36
+ ```ruby
37
+ use Rack::Cors::Halt
38
+ ```
39
+
40
+ ### Rails
41
+
42
+ In your `config/application.rb` you'll need something like this:
43
+
44
+ ```ruby
45
+ module YourApp
46
+ class Application < Rails::Application
47
+
48
+ # ...
49
+
50
+ config.middleware.insert_before 1, "Rack::Cors::Halt"
51
+
52
+ end
53
+ end
54
+ ```
55
+ why `.insert_before 1`? Typically the first middleware will be the `Rack::Cors` one, so the best approach is to place the `Rack::Cors::Halt` beneath that one so no more middlewares are runned.
@@ -9,7 +9,7 @@ module Rack
9
9
  end
10
10
 
11
11
  def call(env)
12
- if(env['X_RACK_CORS'].hit)
12
+ if(env['X_RACK_CORS'].hit || !http_origin_header_present?(env))
13
13
  @app.call(env)
14
14
  else
15
15
  not_valid_reason = {
@@ -20,6 +20,12 @@ module Rack
20
20
  [200, {"Content-Type" => "application/json"}, [not_valid_reason.to_json]]
21
21
  end
22
22
  end
23
+
24
+ private
25
+
26
+ def http_origin_header_present?(env)
27
+ env['HTTP_ORIGIN'].to_s != ''
28
+ end
23
29
  end
24
30
  end
25
31
  end
@@ -2,7 +2,7 @@ module Rack
2
2
  class Cors
3
3
  class Halt
4
4
 
5
- VERSION = "0.0.1"
5
+ VERSION = "0.0.2"
6
6
 
7
7
  end
8
8
  end
@@ -3,17 +3,18 @@ lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'rack/cors/halt/version'
5
5
 
6
- Gem::Specification.new do |s|
7
- s.name = 'rack-cors-halt'
8
- s.version = Rack::Cors::Halt::VERSION
9
- s.date = '2014-11-18'
10
- s.summary = 'Rack-Cors-Halt'
11
- s.description = "Halt a CORS request before hitting the controller."
12
- s.authors = ["Ricardo Brazão"]
13
- s.files = `git ls-files`.split($/).reject { |f| f == '.gitignore' }
14
- s.license = 'MIT'
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'rack-cors-halt'
8
+ spec.version = Rack::Cors::Halt::VERSION
9
+ spec.date = '2014-11-18'
10
+ spec.summary = %q{Rack-Cors-Halt}
11
+ spec.description = %q{Halt a CORS request before hitting the controller.}
12
+ spec.authors = ["Ricardo Brazão"]
13
+ spec.email = ["ricardo.p.pbrazao@gmail.com"]
14
+ spec.homepage = "https://github.com/RicardoBrazao/rack-cors-halt"
15
+ spec.files = `git ls-files`.split($/).reject { |f| f == '.gitignore' }
16
+ spec.license = 'MIT'
15
17
 
16
18
 
17
- s.test_files = s.files.grep(%r{^(test|spec|features)/})
18
-
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-cors-halt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricardo Brazão
@@ -11,7 +11,8 @@ cert_chain: []
11
11
  date: 2014-11-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Halt a CORS request before hitting the controller.
14
- email:
14
+ email:
15
+ - ricardo.p.pbrazao@gmail.com
15
16
  executables: []
16
17
  extensions: []
17
18
  extra_rdoc_files: []
@@ -24,7 +25,7 @@ files:
24
25
  - rack-cors-halt.gemspec
25
26
  - spec/halt/halt_spec.rb
26
27
  - spec/halt/test.ru
27
- homepage:
28
+ homepage: https://github.com/RicardoBrazao/rack-cors-halt
28
29
  licenses:
29
30
  - MIT
30
31
  metadata: {}