rails_cve 0.0.1

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.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.travis.yml +7 -0
  4. data/Gemfile +3 -0
  5. data/MIT-LICENSE +21 -0
  6. data/README.md +116 -0
  7. data/Rakefile +34 -0
  8. data/app/models/concerns/rails_cve/entry/presentation.rb +12 -0
  9. data/app/models/concerns/rails_cve/entry/references.rb +22 -0
  10. data/app/models/concerns/rails_cve/entry/search.rb +14 -0
  11. data/app/models/concerns/rails_cve/entry/updater.rb +43 -0
  12. data/app/models/rails_cve/entry.rb +10 -0
  13. data/bin/rails +12 -0
  14. data/db/migrate/20140402144115_create_rails_cve_entries.rb +31 -0
  15. data/lib/rails_cve/engine.rb +13 -0
  16. data/lib/rails_cve/utils.rb +100 -0
  17. data/lib/rails_cve/version.rb +3 -0
  18. data/lib/rails_cve.rb +5 -0
  19. data/lib/tasks/rails_cve_tasks.rake +12 -0
  20. data/rails_cve.gemspec +31 -0
  21. data/test/dummy/Rakefile +6 -0
  22. data/test/dummy/app/assets/javascripts/application.js +13 -0
  23. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  24. data/test/dummy/app/controllers/application_controller.rb +5 -0
  25. data/test/dummy/app/helpers/application_helper.rb +2 -0
  26. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  27. data/test/dummy/bin/bundle +3 -0
  28. data/test/dummy/bin/rails +4 -0
  29. data/test/dummy/bin/rake +4 -0
  30. data/test/dummy/config/application.rb +28 -0
  31. data/test/dummy/config/boot.rb +5 -0
  32. data/test/dummy/config/database.yml +16 -0
  33. data/test/dummy/config/environment.rb +5 -0
  34. data/test/dummy/config/environments/development.rb +11 -0
  35. data/test/dummy/config/environments/production.rb +80 -0
  36. data/test/dummy/config/environments/test.rb +14 -0
  37. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  38. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  39. data/test/dummy/config/initializers/inflections.rb +16 -0
  40. data/test/dummy/config/initializers/mime_types.rb +5 -0
  41. data/test/dummy/config/initializers/secret_token.rb +12 -0
  42. data/test/dummy/config/initializers/session_store.rb +3 -0
  43. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  44. data/test/dummy/config/locales/en.yml +23 -0
  45. data/test/dummy/config/routes.rb +5 -0
  46. data/test/dummy/config.ru +4 -0
  47. data/test/dummy/db/schema.rb +28 -0
  48. data/test/dummy/public/404.html +58 -0
  49. data/test/dummy/public/422.html +58 -0
  50. data/test/dummy/public/500.html +57 -0
  51. data/test/dummy/public/favicon.ico +0 -0
  52. data/test/fixtures/vcr/allitems-header-first10.yml +147 -0
  53. data/test/fixtures/vcr/download-error.yml +31 -0
  54. data/test/fixtures/vcr/download-success.yml +58 -0
  55. data/test/models/rails_cve/entry_test.rb +16 -0
  56. data/test/models/rails_cve/utils_test.rb +76 -0
  57. data/test/support/vcr.rb +6 -0
  58. data/test/test_helper.rb +10 -0
  59. metadata +249 -0
@@ -0,0 +1,5 @@
1
+ # Load the Rails application.
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the Rails application.
5
+ Dummy::Application.initialize!
@@ -0,0 +1,11 @@
1
+ Dummy::Application.configure do
2
+ config.cache_classes = false
3
+ config.eager_load = false
4
+
5
+ config.consider_all_requests_local = true
6
+ config.action_controller.perform_caching = false
7
+ config.active_support.deprecation = :log
8
+ config.active_record.migration_error = :page_load
9
+
10
+ config.assets.debug = true
11
+ end
@@ -0,0 +1,80 @@
1
+ Dummy::Application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb.
3
+
4
+ # Code is not reloaded between requests.
5
+ config.cache_classes = true
6
+
7
+ # Eager load code on boot. This eager loads most of Rails and
8
+ # your application in memory, allowing both thread web servers
9
+ # and those relying on copy on write to perform better.
10
+ # Rake tasks automatically ignore this option for performance.
11
+ config.eager_load = true
12
+
13
+ # Full error reports are disabled and caching is turned on.
14
+ config.consider_all_requests_local = false
15
+ config.action_controller.perform_caching = true
16
+
17
+ # Enable Rack::Cache to put a simple HTTP cache in front of your application
18
+ # Add `rack-cache` to your Gemfile before enabling this.
19
+ # For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid.
20
+ # config.action_dispatch.rack_cache = true
21
+
22
+ # Disable Rails's static asset server (Apache or nginx will already do this).
23
+ config.serve_static_assets = false
24
+
25
+ # Compress JavaScripts and CSS.
26
+ config.assets.js_compressor = :uglifier
27
+ # config.assets.css_compressor = :sass
28
+
29
+ # Do not fallback to assets pipeline if a precompiled asset is missed.
30
+ config.assets.compile = false
31
+
32
+ # Generate digests for assets URLs.
33
+ config.assets.digest = true
34
+
35
+ # Version of your assets, change this if you want to expire all your assets.
36
+ config.assets.version = '1.0'
37
+
38
+ # Specifies the header that your server uses for sending files.
39
+ # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
40
+ # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
41
+
42
+ # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
43
+ # config.force_ssl = true
44
+
45
+ # Set to :debug to see everything in the log.
46
+ config.log_level = :info
47
+
48
+ # Prepend all log lines with the following tags.
49
+ # config.log_tags = [ :subdomain, :uuid ]
50
+
51
+ # Use a different logger for distributed setups.
52
+ # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
53
+
54
+ # Use a different cache store in production.
55
+ # config.cache_store = :mem_cache_store
56
+
57
+ # Enable serving of images, stylesheets, and JavaScripts from an asset server.
58
+ # config.action_controller.asset_host = "http://assets.example.com"
59
+
60
+ # Precompile additional assets.
61
+ # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
62
+ # config.assets.precompile += %w( search.js )
63
+
64
+ # Ignore bad email addresses and do not raise email delivery errors.
65
+ # Set this to true and configure the email server for immediate delivery to raise delivery errors.
66
+ # config.action_mailer.raise_delivery_errors = false
67
+
68
+ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
69
+ # the I18n.default_locale when a translation can not be found).
70
+ config.i18n.fallbacks = true
71
+
72
+ # Send deprecation notices to registered listeners.
73
+ config.active_support.deprecation = :notify
74
+
75
+ # Disable automatic flushing of the log to improve performance.
76
+ # config.autoflush_log = false
77
+
78
+ # Use default logging formatter so that PID and timestamp are not suppressed.
79
+ config.log_formatter = ::Logger::Formatter.new
80
+ end
@@ -0,0 +1,14 @@
1
+ Dummy::Application.configure do
2
+ config.cache_classes = true
3
+ config.eager_load = false
4
+
5
+ config.serve_static_assets = true
6
+ config.static_cache_control = "public, max-age=3600"
7
+
8
+ config.consider_all_requests_local = true
9
+ config.action_controller.perform_caching = false
10
+ config.action_dispatch.show_exceptions = false
11
+ config.action_controller.allow_forgery_protection = false
12
+
13
+ config.active_support.deprecation = :stderr
14
+ end
@@ -0,0 +1,7 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
4
+ # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5
+
6
+ # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
7
+ # Rails.backtrace_cleaner.remove_silencers!
@@ -0,0 +1,4 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Configure sensitive parameters which will be filtered from the log file.
4
+ Rails.application.config.filter_parameters += [:password]
@@ -0,0 +1,16 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new inflection rules using the following format. Inflections
4
+ # are locale specific, and you may define rules for as many different
5
+ # locales as you wish. All of these examples are active by default:
6
+ # ActiveSupport::Inflector.inflections(:en) do |inflect|
7
+ # inflect.plural /^(ox)$/i, '\1en'
8
+ # inflect.singular /^(ox)en/i, '\1'
9
+ # inflect.irregular 'person', 'people'
10
+ # inflect.uncountable %w( fish sheep )
11
+ # end
12
+
13
+ # These inflection rules are supported but not enabled by default:
14
+ # ActiveSupport::Inflector.inflections(:en) do |inflect|
15
+ # inflect.acronym 'RESTful'
16
+ # end
@@ -0,0 +1,5 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new mime types for use in respond_to blocks:
4
+ # Mime::Type.register "text/richtext", :rtf
5
+ # Mime::Type.register_alias "text/html", :iphone
@@ -0,0 +1,12 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key is used for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+
6
+ # Make sure the secret is at least 30 characters and all random,
7
+ # no regular words or you'll be exposed to dictionary attacks.
8
+ # You can use `rake secret` to generate a secure secret key.
9
+
10
+ # Make sure your secret_key_base is kept private
11
+ # if you're sharing your code publicly.
12
+ Dummy::Application.config.secret_key_base = '97bdeaf99b033a7761a185bbf6c40366b7307bd8e29092936193a28c617e85c8814a9db06f9973a2bc942ce1be0a49e82f9e8deda8af04c791a547b77d9370f2'
@@ -0,0 +1,3 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
@@ -0,0 +1,14 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # This file contains settings for ActionController::ParamsWrapper which
4
+ # is enabled by default.
5
+
6
+ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
7
+ ActiveSupport.on_load(:action_controller) do
8
+ wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
9
+ end
10
+
11
+ # To enable root element in JSON for ActiveRecord objects.
12
+ # ActiveSupport.on_load(:active_record) do
13
+ # self.include_root_in_json = true
14
+ # end
@@ -0,0 +1,23 @@
1
+ # Files in the config/locales directory are used for internationalization
2
+ # and are automatically loaded by Rails. If you want to use locales other
3
+ # than English, add the necessary files in this directory.
4
+ #
5
+ # To use the locales, use `I18n.t`:
6
+ #
7
+ # I18n.t 'hello'
8
+ #
9
+ # In views, this is aliased to just `t`:
10
+ #
11
+ # <%= t('hello') %>
12
+ #
13
+ # To use a different locale, set it with `I18n.locale`:
14
+ #
15
+ # I18n.locale = :es
16
+ #
17
+ # This would use the information in config/locales/es.yml.
18
+ #
19
+ # To learn more, please read the Rails Internationalization guide
20
+ # available at http://guides.rubyonrails.org/i18n.html.
21
+
22
+ en:
23
+ hello: "Hello world"
@@ -0,0 +1,5 @@
1
+ Rails.application.routes.draw do
2
+
3
+ # nothing to route to (yet)
4
+ # mount RailsCVE::Engine => "/rails-cve"
5
+ end
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run Rails.application
@@ -0,0 +1,28 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended that you check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(version: 20140402144115) do
15
+
16
+ # These are extensions that must be enabled in order to support this database
17
+ enable_extension "plpgsql"
18
+ enable_extension "hstore"
19
+
20
+ create_table "rails_cve_entries", force: true do |t|
21
+ t.string "name", null: false
22
+ t.text "description"
23
+ t.string "references", limit: 1024, array: true
24
+ end
25
+
26
+ add_index "rails_cve_entries", ["name"], name: "index_rails_cve_entries_on_name", unique: true, using: :btree
27
+
28
+ end
@@ -0,0 +1,58 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/404.html -->
52
+ <div class="dialog">
53
+ <h1>The page you were looking for doesn't exist.</h1>
54
+ <p>You may have mistyped the address or the page may have moved.</p>
55
+ </div>
56
+ <p>If you are the application owner check the logs for more information.</p>
57
+ </body>
58
+ </html>
@@ -0,0 +1,58 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/422.html -->
52
+ <div class="dialog">
53
+ <h1>The change you wanted was rejected.</h1>
54
+ <p>Maybe you tried to change something you didn't have access to.</p>
55
+ </div>
56
+ <p>If you are the application owner check the logs for more information.</p>
57
+ </body>
58
+ </html>
@@ -0,0 +1,57 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/500.html -->
52
+ <div class="dialog">
53
+ <h1>We're sorry, but something went wrong.</h1>
54
+ </div>
55
+ <p>If you are the application owner check the logs for more information.</p>
56
+ </body>
57
+ </html>
File without changes
@@ -0,0 +1,147 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://cve.mitre.org/data/downloads/allitems.csv.gz
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Date:
16
+ - Sat, 05 Apr 2014 15:04:08 GMT
17
+ Server:
18
+ - Apache
19
+ Last-Modified:
20
+ - Fri, 04 Apr 2014 10:07:03 GMT
21
+ Etag:
22
+ - '"90a41-8f38d4-4f634ade45fc0"'
23
+ Accept-Ranges:
24
+ - bytes
25
+ Content-Length:
26
+ - '2485'
27
+ Content-Type:
28
+ - application/x-gzip
29
+ body:
30
+ encoding: ASCII-8BIT
31
+ string: !binary |-
32
+ IkNWRSBWZXJzaW9uIDIwMDYxMTAxIiwsLCwsCiJEYXRlOiAyMDE0MDMzMSIsLCwsLAoiTmFtZSIs
33
+ IlN0YXR1cyIsIkRlc2NyaXB0aW9uIiwiUmVmZXJlbmNlcyIsIlBoYXNlIiwiVm90ZXMiLCJDb21t
34
+ ZW50cyIKIkNhbmRpZGF0ZXMgbXVzdCBiZSByZXZpZXdlZCBhbmQgYWNjZXB0ZWQgYnkgdGhlIENW
35
+ RSBFZGl0b3JpYWwgQm9hcmQiLCwsLCwsCiJiZWZvcmUgdGhleSBjYW4gYmUgYWRkZWQgdG8gdGhl
36
+ IG9mZmljaWFsIENWRSBsaXN0LiAgVGhlcmVmb3JlLCB0aGVzZSIsLCwsLCwKImNhbmRpZGF0ZXMg
37
+ bWF5IGJlIG1vZGlmaWVkIG9yIGV2ZW4gcmVqZWN0ZWQgaW4gdGhlIGZ1dHVyZS4gIFRoZXkgYXJl
38
+ IiwsLCwsLAoicHJvdmlkZWQgZm9yIHVzZSBieSBpbmRpdmlkdWFscyB3aG8gaGF2ZSBhIG5lZWQg
39
+ Zm9yIGFuIGVhcmx5IiwsLCwsLAoibnVtYmVyaW5nIHNjaGVtZSBmb3IgaXRlbXMgdGhhdCBoYXZl
40
+ IG5vdCBiZWVuIGZ1bGx5IHJldmlld2VkIGJ5IiwsLCwsLAoidGhlIEVkaXRvcmlhbCBCb2FyZC4i
41
+ LCwsLCwsCiwsLCwsLApDVkUtMTk5OS0wMDAxLENhbmRpZGF0ZSwiaXBfaW5wdXQuYyBpbiBCU0Qt
42
+ ZGVyaXZlZCBUQ1AvSVAgaW1wbGVtZW50YXRpb25zIGFsbG93cyByZW1vdGUgYXR0YWNrZXJzIHRv
43
+ IGNhdXNlIGEgZGVuaWFsIG9mIHNlcnZpY2UgKGNyYXNoIG9yIGhhbmcpIHZpYSBjcmFmdGVkIHBh
44
+ Y2tldHMuIiwiQ0VSVDpDQS05OC0xMy10Y3AtZGVuaWFsLW9mLXNlcnZpY2UgICB8ICAgQlVHVFJB
45
+ UToxOTk4MTIyMyBSZTogQ0VSVCBBZHZpc29yeSBDQS05OC4xMyAtIFRDUC9JUCBEZW5pYWwgb2Yg
46
+ U2VydmljZSAgIHwgICBDT05GSVJNOmh0dHA6Ly93d3cub3BlbmJzZC5vcmcvZXJyYXRhMjMuaHRt
47
+ bCN0Y3BmaXggICB8ICAgT1NWREI6NTcwNyAgIHwgICBVUkw6aHR0cDovL3d3dy5vc3ZkYi5vcmcv
48
+ NTcwNyIsTW9kaWZpZWQgKDIwMDUxMjE3KSwiICAgTU9ESUZZKDEpIEZyZWNoICB8ICAgICBOT09Q
49
+ KDIpIE5vcnRoY3V0dCwgV2FsbCAgfCAgICAgUkVWSUVXSU5HKDEpIENocmlzdGV5IiwiIENocmlz
50
+ dGV5PiBBIEJ1Z3RyYXEgcG9zdGluZyBpbmRpY2F0ZXMgdGhhdCB0aGUgYnVnIGhhcyB0byBkbyB3
51
+ aXRoICB8ICAgICAiInNob3J0IHBhY2tldHMgd2l0aCBjZXJ0YWluIG9wdGlvbnMgc2V0LCIiIHNv
52
+ IHRoZSBkZXNjcmlwdGlvbiAgfCAgICAgc2hvdWxkIGJlIG1vZGlmaWVkIGFjY29yZGluZ2x5LiAg
53
+ fCAgICAgICB8ICAgICBCdXQgaXMgdGhpcyB0aGUgc2FtZSBhcyBDVkUtMTk5OS0wMDUyPyAgVGhh
54
+ dCBvbmUgaXMgcmVsYXRlZCAgfCAgICAgdG8gbmVzdGVhIChDVkUtMTk5OS0wMjU3KSBhbmQgcHJv
55
+ YmFibHkgdGhlIG9uZSBkZXNjcmliZWQgaW4gIHwgICAgIEJVR1RSQVE6MTk5ODEwMjMgbmVzdGVh
56
+ IHYyIGFnYWluc3QgZnJlZWJzZCAzLjAtUmVsZWFzZSAgfCAgICAgVGhlIHBhdGNoIGZvciBuZXN0
57
+ ZWEgaXMgaW4gaXBfaW5wdXQuYyBhcm91bmQgbGluZSA3NTAuICB8ICAgICBUaGUgcGF0Y2hlcyBm
58
+ b3IgQ1ZFLTE5OTktMDAwMSBhcmUgaW4gbGluZXMgMzg4JjQ0Ni4gIFNvLCAgIHwgICAgIENWRS0x
59
+ OTk5LTAwMDEgaXMgZGlmZmVyZW50IGZyb20gQ1ZFLTE5OTktMDI1NyBhbmQgQ1ZFLTE5OTktMDA1
60
+ Mi4gIHwgICAgIFRoZSBGcmVlQlNEIHBhdGNoIGZvciBDVkUtMTk5OS0wMDUyIGlzIGluIGxpbmUg
61
+ NzUwLiAgfCAgICAgU28sIENWRS0xOTk5LTAyNTcgYW5kIENWRS0xOTk5LTAwNTIgbWF5IGJlIHRo
62
+ ZSBzYW1lLCB0aG91Z2ggIHwgICAgIENWRS0xOTk5LTAwNTIgc2hvdWxkIGJlIFJFQ0FTVCBzaW5j
63
+ ZSB0aGlzIGJ1ZyBhZmZlY3RzIExpbnV4ICB8ICAgICBhbmQgb3RoZXIgT1NlcyBiZXNpZGVzIEZy
64
+ ZWVCU0QuICB8ICAgRnJlY2g+IFhGOnRlYXJkcm9wKDMzOCkgIHwgICAgIFRoaXMgYXNzaWdubWVu
65
+ dCB3YXMgYmFzZWQgc29sZWx5IG9uIHJlZmVyZW5jZXMgdG8gdGhlIENFUlQgYWR2aXNvcnkuICB8
66
+ ICAgQ2hyaXN0ZXk+IFRoZSBkZXNjcmlwdGlvbiBmb3IgQklEOjE5MCwgd2hpY2ggbGlua3MgdG8g
67
+ Q1ZFLTE5OTktMDA1MiAoYSAgfCAgICAgRnJlZUJTRCBhZHZpc29yeSksIG5vdGVzIHRoYXQgdGhl
68
+ IHBhdGNoZXMgcHJvdmlkZWQgYnkgRnJlZUJTRCBpbiAgfCAgICAgQ0VSVDpDQS0xOTk4LTEzIHN1
69
+ Z2dlc3QgYSBjb25uZWN0aW9uIGJldHdlZW4gQ1ZFLTE5OTktMDAwMSBhbmQgIHwgICAgIENWRS0x
70
+ OTk5LTAwNTIuICBDRVJUOkNBLTE5OTgtMTMgaXMgdG9vIHZhZ3VlIHRvIGJlIHN1cmUgd2l0aG91
71
+ dCAgfCAgICAgZnVydGhlciBhbmFseXNpcy4iCkNWRS0xOTk5LTAwMDIsRW50cnksIkJ1ZmZlciBv
72
+ dmVyZmxvdyBpbiBORlMgbW91bnRkIGdpdmVzIHJvb3QgYWNjZXNzIHRvIHJlbW90ZSBhdHRhY2tl
73
+ cnMsIG1vc3RseSBpbiBMaW51eCBzeXN0ZW1zLiIsIlNHSToxOTk4MTAwNi0wMS1JICAgfCAgIFVS
74
+ TDpmdHA6Ly9wYXRjaGVzLnNnaS5jb20vc3VwcG9ydC9mcmVlL3NlY3VyaXR5L2Fkdmlzb3JpZXMv
75
+ MTk5ODEwMDYtMDEtSSAgIHwgICBDRVJUOkNBLTk4LjEyLm1vdW50ZCAgIHwgICBDSUFDOkotMDA2
76
+ ICAgfCAgIFVSTDpodHRwOi8vd3d3LmNpYWMub3JnL2NpYWMvYnVsbGV0aW5zL2otMDA2LnNodG1s
77
+ ICAgfCAgIEJJRDoxMjEgICB8ICAgVVJMOmh0dHA6Ly93d3cuc2VjdXJpdHlmb2N1cy5jb20vYmlk
78
+ LzEyMSAgIHwgICBYRjpsaW51eC1tb3VudGQtYm8iLCwsCkNWRS0xOTk5LTAwMDMsRW50cnksIkV4
79
+ ZWN1dGUgY29tbWFuZHMgYXMgcm9vdCB2aWEgYnVmZmVyIG92ZXJmbG93IGluIFRvb2x0YWxrIGRh
80
+ dGFiYXNlIHNlcnZlciAocnBjLnR0ZGJzZXJ2ZXJkKS4iLCJOQUk6TkFJLTI5ICAgfCAgIENFUlQ6
81
+ Q0EtOTguMTEudG9vbHRhbGsgICB8ICAgU0dJOjE5OTgxMTAxLTAxLUEgICB8ICAgVVJMOmZ0cDov
82
+ L3BhdGNoZXMuc2dpLmNvbS9zdXBwb3J0L2ZyZWUvc2VjdXJpdHkvYWR2aXNvcmllcy8xOTk4MTEw
83
+ MS0wMS1BICAgfCAgIFNHSToxOTk4MTEwMS0wMS1QWCAgIHwgICBVUkw6ZnRwOi8vcGF0Y2hlcy5z
84
+ Z2kuY29tL3N1cHBvcnQvZnJlZS9zZWN1cml0eS9hZHZpc29yaWVzLzE5OTgxMTAxLTAxLVBYICAg
85
+ fCAgIFhGOmFpeC10dGRic2VydmVyICAgfCAgIFhGOnRvb2x0YWxrICAgfCAgIEJJRDoxMjIgICB8
86
+ ICAgVVJMOmh0dHA6Ly93d3cuc2VjdXJpdHlmb2N1cy5jb20vYmlkLzEyMiIsLCwKQ1ZFLTE5OTkt
87
+ MDAwNCxDYW5kaWRhdGUsIk1JTUUgYnVmZmVyIG92ZXJmbG93IGluIGVtYWlsIGNsaWVudHMsIGUu
88
+ Zy4gU29sYXJpcyBtYWlsdG9vbCBhbmQgT3V0bG9vay4iLCJDRVJUOkNBLTk4LjEwLm1pbWVfYnVm
89
+ ZmVyX292ZXJmbG93cyAgIHwgICBYRjpvdXRsb29rLWxvbmctbmFtZSAgIHwgICBTVU46MDAxNzUg
90
+ ICB8ICAgTVM6TVM5OC0wMDggICB8ICAgVVJMOmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS90ZWNo
91
+ bmV0L3NlY3VyaXR5L2J1bGxldGluL21zOTgtMDA4LmFzcCIsTW9kaWZpZWQgKDE5OTkwNjIxLTAx
92
+ KSwiICAgQUNDRVBUKDgpIEJha2VyLCBDb2xlLCBDb2xsaW5zLCBEaWssIExhbmRmaWVsZCwgTWFn
93
+ ZHljaCwgTm9ydGhjdXR0LCBXYWxsICB8ICAgICBNT0RJRlkoMSkgRnJlY2ggIHwgICAgIE5PT1Ao
94
+ MSkgQ2hyaXN0ZXkgIHwgICAgIFJFVklFV0lORygxKSBTaG9zdGFjayIsIiBGcmVjaD4gRXh0cmVt
95
+ ZWx5IG1pbm9yLCBidXQgSSBiZWxpZXZlIGUtbWFpbCBpcyB0aGUgY29ycmVjdCB0ZXJtLiAoSWYg
96
+ eW91IHJlamVjdCAgfCAgICAgdGhpcyBzdWdnZXN0aW9uLCBJIHdpbGwgbm90IGJlIGRldmFzdGF0
97
+ ZWQuKSA6LSkgIHwgICBDaHJpc3RleT4gVGhpcyBpc3N1ZSBzZWVtcyB0byBoYXZlIGJlZW4gcmVk
98
+ aXNjb3ZlcmVkIGluICB8ICAgICBCVUdUUkFROjIwMDAwNTE1IEV1ZG9yYSBQcm8gJiBPdXRsb29r
99
+ IE92ZXJmbG93IC0gdG9vIGxvbmcgZmlsZW5hbWVzIGFnYWluICB8ICAgICBodHRwOi8vbWFyYy50
100
+ aGVhaW1zZ3JvdXAuY29tLz9sPWJ1Z3RyYXEmbT05NTg0MjQ4MjQxMzA3NiZ3PTIgIHwgICAgICAg
101
+ fCAgICAgQWxzbyBzZWUgIHwgICAgIEJVR1RSQVE6MTk5OTAzMjAgRXVkb3JhIEF0dGFjaG1lbnQg
102
+ QnVmZmVyIE92ZXJmbG93ICB8ICAgICBodHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz9sPWJ1
103
+ Z3RyYXEmbT05MjE5NTM5NjkxMjExMCZ3PTIgIHwgICBDaHJpc3RleT4gICB8ICAgICBDVkUtMjAw
104
+ MC0wNDE1IG1heSBiZSBhIGxhdGVyIHJlZGlzY292ZXJ5IG9mIHRoaXMgcHJvYmxlbSAgfCAgICAg
105
+ Zm9yIE91dGxvb2suICB8ICAgRGlrPiBTdW4gYnVnIDQxNjM0NzEsICB8ICAgQ2hyaXN0ZXk+IEFE
106
+ RFJFRiBCSUQ6MTI1ICB8ICAgQ2hyaXN0ZXk+IEJVR1RSQVE6MTk5ODA3MzAgTG9uZyBGaWxlbmFt
107
+ ZXMgJiBMb3R1cyBQcm9kdWN0cyAgfCAgICAgVVJMOmh0dHA6Ly9tYXJjLnRoZWFpbXNncm91cC5j
108
+ b20vP2w9YnVndHJhcSZtPTkwMjIxMTA0NTI2MjAxJnc9MiIKQ1ZFLTE5OTktMDAwNSxFbnRyeSwi
109
+ QXJiaXRyYXJ5IGNvbW1hbmQgZXhlY3V0aW9uIHZpYSBJTUFQIGJ1ZmZlciBvdmVyZmxvdyBpbiBh
110
+ dXRoZW50aWNhdGUgY29tbWFuZC4iLCJDRVJUOkNBLTk4LjA5LmltYXBkICAgfCAgIFNVTjowMDE3
111
+ NyAgIHwgICBVUkw6aHR0cDovL3N1bnNvbHZlLnN1bi5jb20vcHViLWNnaS9yZXRyaWV2ZS5wbD9k
112
+ b2N0eXBlPWNvbGwmZG9jPXNlY2J1bGwvMTc3ICAgfCAgIEJJRDoxMzAgICB8ICAgVVJMOmh0dHA6
113
+ Ly93d3cuc2VjdXJpdHlmb2N1cy5jb20vYmlkLzEzMCAgIHwgICBYRjppbWFwLWF1dGhlbnRpY2F0
114
+ ZS1ibyIsLCwKQ1ZFLTE5OTktMDAwNixFbnRyeSwiQnVmZmVyIG92ZXJmbG93IGluIFBPUCBzZXJ2
115
+ ZXJzIGJhc2VkIG9uIEJTRC9RdWFsY29tbSdzIHFwb3BwZXIgYWxsb3dzIHJlbW90ZSBhdHRhY2tl
116
+ cnMgdG8gZ2FpbiByb290IGFjY2VzcyB1c2luZyBhIGxvbmcgUEFTUyBjb21tYW5kLiIsIkNFUlQ6
117
+ Q0EtOTguMDgucXBvcHBlcl92dWwgICB8ICAgU0dJOjE5OTgwODAxLTAxLUkgICB8ICAgVVJMOmZ0
118
+ cDovL3BhdGNoZXMuc2dpLmNvbS9zdXBwb3J0L2ZyZWUvc2VjdXJpdHkvYWR2aXNvcmllcy8xOTk4
119
+ MDgwMS0wMS1JICAgfCAgIEFVU0NFUlQ6QUEtOTguMDEgICB8ICAgWEY6cXBvcHBlci1wYXNzLW92
120
+ ZXJmbG93ICAgfCAgIEJJRDoxMzMgICB8ICAgVVJMOmh0dHA6Ly93d3cuc2VjdXJpdHlmb2N1cy5j
121
+ b20vYmlkLzEzMyIsLCwKQ1ZFLTE5OTktMDAwNyxFbnRyeSwiSW5mb3JtYXRpb24gZnJvbSBTU0wt
122
+ ZW5jcnlwdGVkIHNlc3Npb25zIHZpYSBQS0NTICMxLiIsIkNFUlQ6Q0EtOTguMDcuUEtDUyAgIHwg
123
+ ICBNUzpNUzk4LTAwMiAgIHwgICBVUkw6aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3RlY2huZXQv
124
+ c2VjdXJpdHkvYnVsbGV0aW4vbXM5OC0wMDIubXNweCAgIHwgICBYRjpudC1zc2wtZml4IiwsLApD
125
+ VkUtMTk5OS0wMDA4LEVudHJ5LCJCdWZmZXIgb3ZlcmZsb3cgaW4gTklTKywgaW4gU3VuJ3MgcnBj
126
+ Lm5pc2QgcHJvZ3JhbS4iLCJDRVJUOkNBLTk4LjA2Lm5pc2QgICB8ICAgU1VOOjAwMTcwICAgfCAg
127
+ IFVSTDpodHRwOi8vc3Vuc29sdmUuc3VuLmNvbS9wdWItY2dpL3JldHJpZXZlLnBsP2RvY3R5cGU9
128
+ Y29sbCZkb2M9c2VjYnVsbC8xNzAgICB8ICAgSVNTOkp1bmUxMCwxOTk4ICAgfCAgIFhGOm5pc2Qt
129
+ Ym8tY2hlY2siLCwsCkNWRS0xOTk5LTAwMDksRW50cnksIkludmVyc2UgcXVlcnkgYnVmZmVyIG92
130
+ ZXJmbG93IGluIEJJTkQgNC45IGFuZCBCSU5EIDggUmVsZWFzZXMuIiwiU0dJOjE5OTgwNjAzLTAx
131
+ LVBYICAgfCAgIFVSTDpmdHA6Ly9wYXRjaGVzLnNnaS5jb20vc3VwcG9ydC9mcmVlL3NlY3VyaXR5
132
+ L2Fkdmlzb3JpZXMvMTk5ODA2MDMtMDEtUFggICB8ICAgSFA6SFBTQlVYOTgwOC0wODMgICB8ICAg
133
+ VVJMOmh0dHA6Ly93d3cxLml0cmMuaHAuY29tL3NlcnZpY2UvY2tpL2RvY0Rpc3BsYXkuZG8/ZG9j
134
+ SWQ9SFBTQlVYOTgwOC0wODMgICB8ICAgU1VOOjAwMTgwICAgfCAgIFVSTDpodHRwOi8vc3Vuc29s
135
+ dmUuc3VuLmNvbS9wdWItY2dpL3JldHJpZXZlLnBsP2RvY3R5cGU9Y29sbCZkb2M9c2VjYnVsbC8x
136
+ ODAgICB8ICAgQ0VSVDpDQS05OC4wNS5iaW5kX3Byb2JsZW1zICAgfCAgIFhGOmJpbmQtYm8gICB8
137
+ ICAgQklEOjEzNCAgIHwgICBVUkw6aHR0cDovL3d3dy5zZWN1cml0eWZvY3VzLmNvbS9iaWQvMTM0
138
+ IiwsLApDVkUtMTk5OS0wMDEwLEVudHJ5LCJEZW5pYWwgb2YgU2VydmljZSB2dWxuZXJhYmlsaXR5
139
+ IGluIEJJTkQgOCBSZWxlYXNlcyB2aWEgbWFsaWNpb3VzbHkgZm9ybWF0dGVkIEROUyBtZXNzYWdl
140
+ cy4iLCJDRVJUOkNBLTk4LjA1LmJpbmRfcHJvYmxlbXMgICB8ICAgU0dJOjE5OTgwNjAzLTAxLVBY
141
+ ICAgfCAgIFVSTDpmdHA6Ly9wYXRjaGVzLnNnaS5jb20vc3VwcG9ydC9mcmVlL3NlY3VyaXR5L2Fk
142
+ dmlzb3JpZXMvMTk5ODA2MDMtMDEtUFggICB8ICAgSFA6SFBTQlVYOTgwOC0wODMgICB8ICAgVVJM
143
+ Omh0dHA6Ly93d3cxLml0cmMuaHAuY29tL3NlcnZpY2UvY2tpL2RvY0Rpc3BsYXkuZG8/ZG9jSWQ9
144
+ SFBTQlVYOTgwOC0wODMgICB8ICAgWEY6YmluZC1kb3MiLCwsCg==
145
+ http_version:
146
+ recorded_at: Sat, 05 Apr 2014 15:04:38 GMT
147
+ recorded_with: VCR 2.9.0
@@ -0,0 +1,31 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://havain.to/404-route
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 404
13
+ message: Not Found
14
+ headers:
15
+ Server:
16
+ - nginx/1.5.10
17
+ Date:
18
+ - Sat, 05 Apr 2014 16:22:02 GMT
19
+ Content-Type:
20
+ - text/html
21
+ Content-Length:
22
+ - '169'
23
+ Connection:
24
+ - keep-alive
25
+ body:
26
+ encoding: UTF-8
27
+ string: "<html>\r\n<head><title>404 Not Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>404
28
+ Not Found</h1></center>\r\n<hr><center>nginx/1.5.10</center>\r\n</body>\r\n</html>\r\n"
29
+ http_version:
30
+ recorded_at: Sat, 05 Apr 2014 15:22:03 GMT
31
+ recorded_with: VCR 2.9.0