wp-hmac 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +91 -0
  6. data/Rakefile +2 -0
  7. data/lib/wp/hmac/client.rb +40 -0
  8. data/lib/wp/hmac/key_cabinet.rb +22 -0
  9. data/lib/wp/hmac/server.rb +39 -0
  10. data/lib/wp/hmac/version.rb +5 -0
  11. data/lib/wp/hmac.rb +42 -0
  12. data/spec/app/.gitignore +16 -0
  13. data/spec/app/Gemfile +40 -0
  14. data/spec/app/Gemfile.lock +125 -0
  15. data/spec/app/README.rdoc +28 -0
  16. data/spec/app/Rakefile +6 -0
  17. data/spec/app/app/assets/images/.keep +0 -0
  18. data/spec/app/app/assets/javascripts/application.js +16 -0
  19. data/spec/app/app/assets/stylesheets/application.css +15 -0
  20. data/spec/app/app/controllers/application_controller.rb +5 -0
  21. data/spec/app/app/controllers/concerns/.keep +0 -0
  22. data/spec/app/app/helpers/application_helper.rb +2 -0
  23. data/spec/app/app/mailers/.keep +0 -0
  24. data/spec/app/app/models/.keep +0 -0
  25. data/spec/app/app/models/concerns/.keep +0 -0
  26. data/spec/app/app/views/layouts/application.html.erb +14 -0
  27. data/spec/app/bin/bundle +3 -0
  28. data/spec/app/bin/rails +8 -0
  29. data/spec/app/bin/rake +8 -0
  30. data/spec/app/bin/spring +18 -0
  31. data/spec/app/config/application.rb +24 -0
  32. data/spec/app/config/boot.rb +4 -0
  33. data/spec/app/config/database.yml +25 -0
  34. data/spec/app/config/environment.rb +5 -0
  35. data/spec/app/config/environments/development.rb +37 -0
  36. data/spec/app/config/environments/production.rb +82 -0
  37. data/spec/app/config/environments/test.rb +39 -0
  38. data/spec/app/config/initializers/assets.rb +8 -0
  39. data/spec/app/config/initializers/backtrace_silencers.rb +7 -0
  40. data/spec/app/config/initializers/cookies_serializer.rb +3 -0
  41. data/spec/app/config/initializers/filter_parameter_logging.rb +4 -0
  42. data/spec/app/config/initializers/inflections.rb +16 -0
  43. data/spec/app/config/initializers/mime_types.rb +4 -0
  44. data/spec/app/config/initializers/session_store.rb +3 -0
  45. data/spec/app/config/initializers/wrap_parameters.rb +14 -0
  46. data/spec/app/config/locales/en.yml +23 -0
  47. data/spec/app/config/routes.rb +56 -0
  48. data/spec/app/config/secrets.yml +22 -0
  49. data/spec/app/config.ru +4 -0
  50. data/spec/app/db/seeds.rb +7 -0
  51. data/spec/app/lib/assets/.keep +0 -0
  52. data/spec/app/lib/tasks/.keep +0 -0
  53. data/spec/app/log/.keep +0 -0
  54. data/spec/app/public/404.html +67 -0
  55. data/spec/app/public/422.html +67 -0
  56. data/spec/app/public/500.html +66 -0
  57. data/spec/app/public/favicon.ico +0 -0
  58. data/spec/app/public/robots.txt +5 -0
  59. data/spec/app/test/controllers/.keep +0 -0
  60. data/spec/app/test/fixtures/.keep +0 -0
  61. data/spec/app/test/helpers/.keep +0 -0
  62. data/spec/app/test/integration/.keep +0 -0
  63. data/spec/app/test/mailers/.keep +0 -0
  64. data/spec/app/test/models/.keep +0 -0
  65. data/spec/app/test/test_helper.rb +10 -0
  66. data/spec/app/vendor/assets/javascripts/.keep +0 -0
  67. data/spec/app/vendor/assets/stylesheets/.keep +0 -0
  68. data/spec/hmac_spec.rb +82 -0
  69. data/wp-hmac.gemspec +29 -0
  70. metadata +268 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cf1d6de791dc384d8d18884a533f1880c958a6a1
4
+ data.tar.gz: b133c48a1c83199ac676619288ff35d4d603507a
5
+ SHA512:
6
+ metadata.gz: 7397578368f49eb3e0f8de78044b0c05f1b7398eb6d8b4314b2dfa29f714b7388747eb906a2eb4235c52cf30f5ed9fcef83b439fbce8a3b3f812b6f6885dc851
7
+ data.tar.gz: e16bf36a546695951d9dc532cbd09392321efbdfa403513f8980f0e8c0b04a62f7c748c8113170b0ca12319791ac82601eff16b97c2d1b82224740ac53093872
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in wp-hmac.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Andrew Nagi
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,91 @@
1
+ # Wp::Hmac
2
+
3
+ This gem wraps EY::ApiHMAC and attempts to make it easy to:
4
+ - Enable HMAC for specific routes in your Rack application.
5
+ - Add different secret keys for different customers, servers, routes or users.
6
+
7
+ It works with Rack applications like Ruby on Rails.
8
+
9
+ You should also consider using
10
+ [ey_api_hmac](https://github.com/engineyard/ey_api_hmac) directly, especially
11
+ if you only have one secret key or want HMAC enabled for every request.
12
+
13
+ ## Installation
14
+
15
+ Add this line to your application's Gemfile:
16
+
17
+ ```ruby
18
+ gem 'wp-hmac'
19
+ ```
20
+
21
+ And then execute:
22
+
23
+ $ bundle
24
+
25
+ Or install it yourself as:
26
+
27
+ $ gem install wp-hmac
28
+
29
+ ## Usage
30
+
31
+ ### Configuration
32
+
33
+ You need to:
34
+
35
+ 1. Add at least one key
36
+ 1. Add at least one regex to match routes that will require HMAC
37
+ 1. Provide a mechanism to ascertain the correct key to use (via `get_auth_id_for_request`)
38
+
39
+ ``` ruby
40
+ WP::HMAC.configure do
41
+ add_key(id: 'esso', auth_key: key['auth_key'])
42
+ add_key(id: 'texaco', auth_key: 'super_secr3t_key'])
43
+
44
+ add_hmac_enabled_route %r{^/texaco-api/}
45
+ add_hmac_enabled_route %r{^/esso-api/}
46
+
47
+ # This will be used by both the Server and Client
48
+ # in this `CurrentCustomer.name` returns either 'esso' or 'texaco'
49
+ #
50
+ # This method must be available at the Rack layer and wherever you
51
+ # use the client.
52
+ get_auth_id_for_request -> { CurrentCustomer.name }
53
+ end
54
+ ```
55
+
56
+ You then need to slot the middleware into your rack stack. For Rails:
57
+
58
+ ``` ruby
59
+ use WP::HMAC::Server
60
+ ```
61
+
62
+ ### Using the client
63
+
64
+ Use like this ...
65
+ ``` ruby
66
+ HMAC::Client.get('https://www.example.com/api/staff')
67
+ HMAC::Client.post('https://www.example.com/api/schedules, {'HEADER' => 'foo'}, StringIO.new('data'))
68
+ ```
69
+ ... or like this:
70
+ ``` ruby
71
+ client = HMAC::Client.new('https://www.example.com')
72
+ client.get('api/staff')
73
+ client.post('api/schedules', {}, StringIO.new('data'))
74
+ ```
75
+ See Rack::Client docs for more.
76
+
77
+ ## Testing
78
+
79
+ You can use the client and server to test at the Rack layer without transporting over HTTP. See the `spec/hmac_spec.rb` for the detail.
80
+
81
+ ## Contributing
82
+
83
+ 1. Fork it ( https://github.com/[my-github-username]/wp-hmac/fork )
84
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
85
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
86
+ 4. Push to the branch (`git push origin my-new-feature`)
87
+ 5. Create a new Pull Request
88
+
89
+ ### Thanks
90
+
91
+ Many thanks to [Engine Yard](https://github.com/engineyard) for [https://github.com/engineyard/ey_api_hmac](Engine Yard HMAC api implementation).
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,40 @@
1
+ module WP
2
+ module HMAC
3
+ class Client
4
+ def initialize(url = nil, app = Rack::Client::Handler::NetHTTP)
5
+ build_rack_client(url, app)
6
+ end
7
+
8
+ def build_rack_client(url, app)
9
+ id = key_cabinet.id
10
+ auth_key = key_cabinet.auth_key
11
+
12
+ @client = Rack::Client.new(url) do
13
+ use Rack::Config do |env|
14
+ env['HTTP_DATE'] = Time.zone.now.httpdate
15
+ end
16
+ use EY::ApiHMAC::ApiAuth::Client, id, auth_key
17
+ run app
18
+ end
19
+ @client
20
+ end
21
+
22
+ def method_missing(method_missing, *args, &block)
23
+ @client.send(method_missing, *args, &block)
24
+ end
25
+
26
+ def key_cabinet
27
+ @key_cabinet ||= HMAC::KeyCabinet.find_by_auth_id(HMAC.auth_id)
28
+ end
29
+
30
+ class << self
31
+ %i(delete get head options post put).each do |method|
32
+ define_method(method) do |*args|
33
+ client = Client.new
34
+ client.send(method, *args)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,22 @@
1
+ module WP
2
+ module HMAC
3
+ class KeyCabinet
4
+ class KeyNotFound < Exception; end
5
+
6
+ class << self
7
+ attr_accessor :keys
8
+
9
+ def add_key(id:, auth_key:)
10
+ @keys ||= {}
11
+ @keys[id] = { id: id, auth_key: auth_key }
12
+ end
13
+
14
+ def find_by_auth_id(id)
15
+ key = @keys[id]
16
+ raise KeyNotFound, 'Ensure all secret keys are loaded with `HMAC::KeyCabinet.add_key`' if key.nil?
17
+ OpenStruct.new(key)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,39 @@
1
+ module WP
2
+ module HMAC
3
+ class Server
4
+ @hmac_enabled_routes = []
5
+
6
+ class << self
7
+ attr_accessor :hmac_enabled_routes
8
+ end
9
+
10
+ def initialize(app)
11
+ @app = app
12
+ @hmac_auth = EY::ApiHMAC::ApiAuth::Server.new(app, HMAC::KeyCabinet)
13
+ end
14
+
15
+ def call(env)
16
+ if hmac_enabled_route?(env)
17
+ verify_key!
18
+ @hmac_auth.call(env)
19
+ else
20
+ @app.call(env)
21
+ end
22
+ end
23
+
24
+ def verify_key!
25
+ KeyCabinet.find_by_auth_id(id_for_request)
26
+ end
27
+
28
+ def id_for_request
29
+ HMAC.auth_id
30
+ end
31
+
32
+ private
33
+
34
+ def hmac_enabled_route?(env)
35
+ Server.hmac_enabled_routes.any? { |r| env['PATH_INFO'].match(r) }
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,5 @@
1
+ module Wp
2
+ module Hmac
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
data/lib/wp/hmac.rb ADDED
@@ -0,0 +1,42 @@
1
+ require "wp/hmac/version"
2
+ require 'rubygems'
3
+ require 'bundler/setup'
4
+ Bundler.require
5
+ require 'rack/client'
6
+ require 'ey_api_hmac'
7
+
8
+ require File.expand_path('../hmac/server', __FILE__)
9
+ require File.expand_path('../hmac/client', __FILE__)
10
+ require File.expand_path('../hmac/key_cabinet', __FILE__)
11
+
12
+ module WP
13
+ module HMAC
14
+ class MissingConfiguration < StandardError; end
15
+
16
+ def self.configure(&block)
17
+ instance_eval(&block)
18
+ end
19
+
20
+ def self.add_key(id:, auth_key:)
21
+ KeyCabinet.add_key( { id: id, auth_key: auth_key } )
22
+ end
23
+
24
+ def self.add_hmac_enabled_route(route_regex)
25
+ Server.hmac_enabled_routes << route_regex
26
+ end
27
+
28
+ def self.get_auth_id_for_request(callable)
29
+ @callable = callable
30
+ end
31
+
32
+ def self.auth_id
33
+ raise MissingConfiguration('Set get_auth_id_for_request in the initializer') unless @callable
34
+ @callable.call
35
+ end
36
+
37
+ def self.reset
38
+ KeyCabinet.keys = {}
39
+ Server.hmac_enabled_routes = []
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,16 @@
1
+ # See https://help.github.com/articles/ignoring-files for more about ignoring files.
2
+ #
3
+ # If you find yourself ignoring temporary files generated by your text editor
4
+ # or operating system, you probably want to add a global ignore instead:
5
+ # git config --global core.excludesfile '~/.gitignore_global'
6
+
7
+ # Ignore bundler config.
8
+ /.bundle
9
+
10
+ # Ignore the default SQLite database.
11
+ /db/*.sqlite3
12
+ /db/*.sqlite3-journal
13
+
14
+ # Ignore all logfiles and tempfiles.
15
+ /log/*.log
16
+ /tmp
data/spec/app/Gemfile ADDED
@@ -0,0 +1,40 @@
1
+ source 'https://rubygems.org'
2
+
3
+
4
+ # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
5
+ gem 'rails', '4.1.4'
6
+ # Use sqlite3 as the database for Active Record
7
+ gem 'sqlite3'
8
+ # Use SCSS for stylesheets
9
+ gem 'sass-rails', '~> 4.0.3'
10
+ # Use Uglifier as compressor for JavaScript assets
11
+ gem 'uglifier', '>= 1.3.0'
12
+ # Use CoffeeScript for .js.coffee assets and views
13
+ gem 'coffee-rails', '~> 4.0.0'
14
+ # See https://github.com/sstephenson/execjs#readme for more supported runtimes
15
+ # gem 'therubyracer', platforms: :ruby
16
+
17
+ # Use jquery as the JavaScript library
18
+ gem 'jquery-rails'
19
+ # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
20
+ gem 'turbolinks'
21
+ # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
22
+ gem 'jbuilder', '~> 2.0'
23
+ # bundle exec rake doc:rails generates the API under doc/api.
24
+ gem 'sdoc', '~> 0.4.0', group: :doc
25
+
26
+ # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
27
+ gem 'spring', group: :development
28
+
29
+ # Use ActiveModel has_secure_password
30
+ # gem 'bcrypt', '~> 3.1.7'
31
+
32
+ # Use unicorn as the app server
33
+ # gem 'unicorn'
34
+
35
+ # Use Capistrano for deployment
36
+ # gem 'capistrano-rails', group: :development
37
+
38
+ # Use debugger
39
+ # gem 'debugger', group: [:development, :test]
40
+
@@ -0,0 +1,125 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ actionmailer (4.1.4)
5
+ actionpack (= 4.1.4)
6
+ actionview (= 4.1.4)
7
+ mail (~> 2.5.4)
8
+ actionpack (4.1.4)
9
+ actionview (= 4.1.4)
10
+ activesupport (= 4.1.4)
11
+ rack (~> 1.5.2)
12
+ rack-test (~> 0.6.2)
13
+ actionview (4.1.4)
14
+ activesupport (= 4.1.4)
15
+ builder (~> 3.1)
16
+ erubis (~> 2.7.0)
17
+ activemodel (4.1.4)
18
+ activesupport (= 4.1.4)
19
+ builder (~> 3.1)
20
+ activerecord (4.1.4)
21
+ activemodel (= 4.1.4)
22
+ activesupport (= 4.1.4)
23
+ arel (~> 5.0.0)
24
+ activesupport (4.1.4)
25
+ i18n (~> 0.6, >= 0.6.9)
26
+ json (~> 1.7, >= 1.7.7)
27
+ minitest (~> 5.1)
28
+ thread_safe (~> 0.1)
29
+ tzinfo (~> 1.1)
30
+ arel (5.0.1.20140414130214)
31
+ builder (3.2.2)
32
+ coffee-rails (4.0.1)
33
+ coffee-script (>= 2.2.0)
34
+ railties (>= 4.0.0, < 5.0)
35
+ coffee-script (2.3.0)
36
+ coffee-script-source
37
+ execjs
38
+ coffee-script-source (1.8.0)
39
+ erubis (2.7.0)
40
+ execjs (2.2.1)
41
+ hike (1.2.3)
42
+ i18n (0.6.11)
43
+ jbuilder (2.1.3)
44
+ activesupport (>= 3.0.0, < 5)
45
+ multi_json (~> 1.2)
46
+ jquery-rails (3.1.2)
47
+ railties (>= 3.0, < 5.0)
48
+ thor (>= 0.14, < 2.0)
49
+ json (1.8.1)
50
+ mail (2.5.4)
51
+ mime-types (~> 1.16)
52
+ treetop (~> 1.4.8)
53
+ mime-types (1.25.1)
54
+ minitest (5.4.1)
55
+ multi_json (1.10.1)
56
+ polyglot (0.3.5)
57
+ rack (1.5.2)
58
+ rack-test (0.6.2)
59
+ rack (>= 1.0)
60
+ rails (4.1.4)
61
+ actionmailer (= 4.1.4)
62
+ actionpack (= 4.1.4)
63
+ actionview (= 4.1.4)
64
+ activemodel (= 4.1.4)
65
+ activerecord (= 4.1.4)
66
+ activesupport (= 4.1.4)
67
+ bundler (>= 1.3.0, < 2.0)
68
+ railties (= 4.1.4)
69
+ sprockets-rails (~> 2.0)
70
+ railties (4.1.4)
71
+ actionpack (= 4.1.4)
72
+ activesupport (= 4.1.4)
73
+ rake (>= 0.8.7)
74
+ thor (>= 0.18.1, < 2.0)
75
+ rake (10.3.2)
76
+ rdoc (4.1.1)
77
+ json (~> 1.4)
78
+ sass (3.2.19)
79
+ sass-rails (4.0.3)
80
+ railties (>= 4.0.0, < 5.0)
81
+ sass (~> 3.2.0)
82
+ sprockets (~> 2.8, <= 2.11.0)
83
+ sprockets-rails (~> 2.0)
84
+ sdoc (0.4.1)
85
+ json (~> 1.7, >= 1.7.7)
86
+ rdoc (~> 4.0)
87
+ spring (1.1.3)
88
+ sprockets (2.11.0)
89
+ hike (~> 1.2)
90
+ multi_json (~> 1.0)
91
+ rack (~> 1.0)
92
+ tilt (~> 1.1, != 1.3.0)
93
+ sprockets-rails (2.1.4)
94
+ actionpack (>= 3.0)
95
+ activesupport (>= 3.0)
96
+ sprockets (~> 2.8)
97
+ sqlite3 (1.3.9)
98
+ thor (0.19.1)
99
+ thread_safe (0.3.4)
100
+ tilt (1.4.1)
101
+ treetop (1.4.15)
102
+ polyglot
103
+ polyglot (>= 0.3.1)
104
+ turbolinks (2.3.0)
105
+ coffee-rails
106
+ tzinfo (1.2.2)
107
+ thread_safe (~> 0.1)
108
+ uglifier (2.5.3)
109
+ execjs (>= 0.3.0)
110
+ json (>= 1.8.0)
111
+
112
+ PLATFORMS
113
+ ruby
114
+
115
+ DEPENDENCIES
116
+ coffee-rails (~> 4.0.0)
117
+ jbuilder (~> 2.0)
118
+ jquery-rails
119
+ rails (= 4.1.4)
120
+ sass-rails (~> 4.0.3)
121
+ sdoc (~> 0.4.0)
122
+ spring
123
+ sqlite3
124
+ turbolinks
125
+ uglifier (>= 1.3.0)
@@ -0,0 +1,28 @@
1
+ == README
2
+
3
+ This README would normally document whatever steps are necessary to get the
4
+ application up and running.
5
+
6
+ Things you may want to cover:
7
+
8
+ * Ruby version
9
+
10
+ * System dependencies
11
+
12
+ * Configuration
13
+
14
+ * Database creation
15
+
16
+ * Database initialization
17
+
18
+ * How to run the test suite
19
+
20
+ * Services (job queues, cache servers, search engines, etc.)
21
+
22
+ * Deployment instructions
23
+
24
+ * ...
25
+
26
+
27
+ Please feel free to use a different markup language if you do not plan to run
28
+ <tt>rake doc:app</tt>.
data/spec/app/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require File.expand_path('../config/application', __FILE__)
5
+
6
+ Rails.application.load_tasks
File without changes
@@ -0,0 +1,16 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file.
9
+ //
10
+ // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require jquery
14
+ //= require jquery_ujs
15
+ //= require turbolinks
16
+ //= require_tree .
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any styles
10
+ * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
+ * file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
@@ -0,0 +1,5 @@
1
+ class ApplicationController < ActionController::Base
2
+ # Prevent CSRF attacks by raising an exception.
3
+ # For APIs, you may want to use :null_session instead.
4
+ protect_from_forgery with: :exception
5
+ end
File without changes
@@ -0,0 +1,2 @@
1
+ module ApplicationHelper
2
+ end
File without changes
File without changes
File without changes
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>App</title>
5
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
6
+ <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
+ load Gem.bin_path('bundler', 'bundle')
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ begin
3
+ load File.expand_path("../spring", __FILE__)
4
+ rescue LoadError
5
+ end
6
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
7
+ require_relative '../config/boot'
8
+ require 'rails/commands'
data/spec/app/bin/rake ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ begin
3
+ load File.expand_path("../spring", __FILE__)
4
+ rescue LoadError
5
+ end
6
+ require_relative '../config/boot'
7
+ require 'rake'
8
+ Rake.application.run
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # This file loads spring without using Bundler, in order to be fast
4
+ # It gets overwritten when you run the `spring binstub` command
5
+
6
+ unless defined?(Spring)
7
+ require "rubygems"
8
+ require "bundler"
9
+
10
+ if match = Bundler.default_lockfile.read.match(/^GEM$.*?^ spring \((.*?)\)$.*?^$/m)
11
+ ENV["GEM_PATH"] = ([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR)
12
+ ENV["GEM_HOME"] = ""
13
+ Gem.paths = ENV
14
+
15
+ gem "spring", match[1]
16
+ require "spring/binstub"
17
+ end
18
+ end
@@ -0,0 +1,24 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'rails/all'
4
+
5
+ # Require the gems listed in Gemfile, including any gems
6
+ # you've limited to :test, :development, or :production.
7
+ Bundler.require(*Rails.groups)
8
+
9
+ module App
10
+ class Application < Rails::Application
11
+ # Settings in config/environments/* take precedence over those specified here.
12
+ # Application configuration should go into files in config/initializers
13
+ # -- all .rb files in that directory are automatically loaded.
14
+
15
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
16
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
17
+ # config.time_zone = 'Central Time (US & Canada)'
18
+
19
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
20
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
21
+ # config.i18n.default_locale = :de
22
+ config.middleware.use WP::HMAC::Server
23
+ end
24
+ end
@@ -0,0 +1,4 @@
1
+ # Set up gems listed in the Gemfile.
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
+
4
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])