rack-replace-http-accept 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ pkg/*
2
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source :rubygems
2
+
3
+ gemspec
data/README.rdoc ADDED
@@ -0,0 +1,6 @@
1
+ = Rack Replace HTTP Accept
2
+
3
+ Example usage:
4
+
5
+ use Rack::ReplaceHttpAccept, /application\/vnd\.mycompany\.myapp-v[0-9]+\+json/ => 'application/json',
6
+ /application\/vnd\.mycompany\.myapp-v[0-9]+\+xml/ => 'application/xml'
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+
4
+ require 'rspec/core/rake_task'
5
+ require 'rspec/core/version'
6
+
7
+ Dir[File.join(File.dirname(__FILE__), 'tasks/*.rake')].each { |rake| load rake }
@@ -0,0 +1 @@
1
+ require 'rack/replace_http_accept'
@@ -0,0 +1,21 @@
1
+ require 'rack'
2
+
3
+ module Rack
4
+ class ReplaceHttpAccept
5
+ def initialize(app, replacements = {})
6
+ @app = app
7
+ @replacements = replacements
8
+ end
9
+
10
+ def call(env)
11
+ @replacements.each do |regex, replacement|
12
+ if Regexp.new(regex).match(env.fetch('HTTP_ACCEPT', ''))
13
+ env['HTTP_ACCEPT'] = replacement
14
+ break
15
+ end
16
+ end
17
+
18
+ @app.call(env)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'rack-replace-http-accept'
3
+ s.version = '0.0.2'
4
+ s.platform = Gem::Platform::RUBY
5
+ s.authors = ['Tom Maguire']
6
+ s.email = ['tom.d.maguire@gmail.com']
7
+ s.summary = 'Rack adapter used to modify HTTP Accept header'
8
+ s.description = ""
9
+ s.homepage = 'http://github.com/tomglue/rack-replace-http-accept'
10
+
11
+ s.files = `git ls-files`.split("\n") - ['Gemfile.lock']
12
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
13
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
14
+ s.require_paths = ["lib"]
15
+
16
+ s.add_runtime_dependency 'rack'
17
+
18
+ s.add_development_dependency 'rake'
19
+ s.add_development_dependency 'rspec'
20
+ s.add_development_dependency 'rack-test'
21
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rack::ReplaceHttpAccept do
4
+ include Rack::Test::Methods
5
+
6
+ def app
7
+ @app
8
+ end
9
+
10
+ def app!(&block)
11
+ @app = Rack::Builder.new do
12
+ instance_eval(&block)
13
+ run lambda { |env| [200, {}, []] }
14
+ end.to_app
15
+ end
16
+
17
+ it 'should replace the http methods as given' do
18
+ app! {use Rack::ReplaceHttpAccept, /application\/vnd\.mycompany\.myapp-v[0-9]+\+json/ => 'application/json', /application\/vnd\.mycompany\.myapp-v[0-9]+\+xml/ => 'application/xml'}
19
+
20
+ get '/', {}, 'HTTP_ACCEPT' => 'application/vnd.mycompany.myapp-v1+json'
21
+ last_response.should be_ok
22
+ last_request.env['HTTP_ACCEPT'].should == 'application/json'
23
+
24
+ get '/', {}, 'HTTP_ACCEPT' => 'application/vnd.mycompany.myapp-v1+xml'
25
+ last_response.should be_ok
26
+ last_request.env['HTTP_ACCEPT'].should == 'application/xml'
27
+ end
28
+ end
@@ -0,0 +1,14 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'bundler/setup'
3
+
4
+ Bundler.require :default, :test
5
+
6
+ SPEC_ROOT = File.expand_path(File.dirname(__FILE__))
7
+ LIB_ROOT = File.expand_path(File.join(SPEC_ROOT, '..', 'lib'))
8
+
9
+ $: << SPEC_ROOT
10
+
11
+ require File.join(LIB_ROOT, 'rack-replace-http-accept')
12
+ require 'rack/test'
13
+
14
+ Dir[File.join(SPEC_ROOT, "support/*.rb")].each {|f| require f}
data/tasks/spec.rake ADDED
@@ -0,0 +1,2 @@
1
+ desc "Run specs"
2
+ RSpec::Core::RakeTask.new 'spec'
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rack-replace-http-accept
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Tom Maguire
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-03-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rack
16
+ requirement: &2152582320 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2152582320
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &2152581760 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *2152581760
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &2152580100 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *2152580100
47
+ - !ruby/object:Gem::Dependency
48
+ name: rack-test
49
+ requirement: &2152579660 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *2152579660
58
+ description: ''
59
+ email:
60
+ - tom.d.maguire@gmail.com
61
+ executables: []
62
+ extensions: []
63
+ extra_rdoc_files: []
64
+ files:
65
+ - .gitignore
66
+ - Gemfile
67
+ - README.rdoc
68
+ - Rakefile
69
+ - lib/rack-replace-http-accept.rb
70
+ - lib/rack/replace_http_accept.rb
71
+ - rack-replace-http-accept.gemspec
72
+ - spec/replace_http_accept_spec.rb
73
+ - spec/spec_helper.rb
74
+ - tasks/spec.rake
75
+ homepage: http://github.com/tomglue/rack-replace-http-accept
76
+ licenses: []
77
+ post_install_message:
78
+ rdoc_options: []
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ requirements: []
94
+ rubyforge_project:
95
+ rubygems_version: 1.8.6
96
+ signing_key:
97
+ specification_version: 3
98
+ summary: Rack adapter used to modify HTTP Accept header
99
+ test_files:
100
+ - spec/replace_http_accept_spec.rb
101
+ - spec/spec_helper.rb