hyperdrive 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 898b32e10dc9b2836f112818125fcb5a07f28ce0
4
- data.tar.gz: 917e3c1f3f9ba879170bbbaefc216593de6e2288
3
+ metadata.gz: 0310c3ea9e2400fb9bb5527017453871e14b37e7
4
+ data.tar.gz: 2e6ae40c0d160e91f9c5b71587d9c69c6741b760
5
5
  SHA512:
6
- metadata.gz: 055bf9088099afc3dadb018b7042a44a2589a52d91117e7c7e70eeeaf1e4fc16642980d6a5500a84fd3cffac9511c164f6ed3c51687469cdc24dfbc57b5986ad
7
- data.tar.gz: 6dd19b1ddbd02b84a400ddd3aa22a952a7b06172e6164badd1de7a03b8b3037fb2f66ec90c9c206277c7dda561f89108739e3ab273f0f11bc9285f7c77b23a81
6
+ metadata.gz: 197285ed590fd3808b0fdec8f52418ef1bfaf6c55c7fd20dd8e5526450c37ffe4c99b127d8762212d46ca2a389472d7f821f2d0e1b1e082af9ffd73bc1b0458a
7
+ data.tar.gz: 9b37a124b0a2da5911ce56b13b64b16f6c76af173c348c78c1cf986227c5580e2e2d6c58d86babf5e2be42708a2f2bc80671400f068f9b52d1a0b19a81e57b12
data/.travis.yml CHANGED
@@ -1,13 +1,10 @@
1
1
  language: ruby
2
+ cache: bundler
2
3
  rvm:
3
- - 2.1.1
4
- - 1.9.3
5
- - jruby-head
6
- - rbx-2.1.1
7
- matrix:
8
- allow_failures:
9
- - rvm: jruby-head
10
- - rvm: rbx-2.1.1
4
+ - 2.1.1
5
+ - 1.9.3
6
+ - jruby-head
7
+ - rbx
11
8
  env:
12
9
  global:
13
10
  secure: Tl3oBsBZRI5bMrtNH5mtTDvSTlTxNbsKaAnQ7KQ2KMyiH/eHolOSIbUYB9NB3GRMC6XSyFShRCaYPA/ET36HI+Jw3PFT/XADdiOdFqlk6VyJEUPznNQ1nlp8AsyNn+IexZXIl8DdqmZxGHlY6YKDbQV/U1v+FeW8X5j3TLN1mcw=
data/Gemfile CHANGED
@@ -1,6 +1,10 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
+ group :development, :test do
5
+ gem 'oj' unless defined?(JRUBY_VERSION)
6
+ end
7
+
4
8
  group :development do
5
9
  gem 'gem-release', require: false
6
10
  gem 'pry', require: false
@@ -21,4 +25,5 @@ group :test do
21
25
  gem 'rack-test', require: false
22
26
  gem 'rubinius-coverage', require: false, platforms: :rbx
23
27
  gem 'codeclimate-test-reporter', require: false
28
+ gem 'mocha', require: false
24
29
  end
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Hyperdrive
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/hyperdrive.png)](http://badge.fury.io/rb/hyperdrive) [![Build Status](https://secure.travis-ci.org/styleseek/hyperdrive.png?branch=master)](https://travis-ci.org/styleseek/hyperdrive) [![Code Climate](https://codeclimate.com/github/styleseek/hyperdrive.png)](https://codeclimate.com/github/styleseek/hyperdrive) [![Test Coverage](https://codeclimate.com/github/styleseek/hyperdrive/coverage.png)](https://codeclimate.com/github/styleseek/hyperdrive) [![Dependency Status](https://gemnasium.com/styleseek/hyperdrive.png)](https://gemnasium.com/styleseek/hyperdrive)
4
+
5
+
3
6
  Ruby DSL for defining self-documenting, HATEOAS™ complaint, Hypermedia endpoints.
4
7
 
5
8
  ## Installation
@@ -117,13 +120,6 @@ You can also provide a `--output` option and specify a destination for your docu
117
120
 
118
121
  If the `--output` option is not provided the generated documentation will be written to `docs/doc.md` by default.
119
122
 
120
- ## Project Status
121
-
122
- - Version: [![Gem Version](https://badge.fury.io/rb/hyperdrive.png)](http://badge.fury.io/rb/hyperdrive)
123
- - Build: [![Build Status](https://secure.travis-ci.org/styleseek/hyperdrive.png?branch=master)](https://travis-ci.org/styleseek/hyperdrive)
124
- - Code Quality: [![Code Climate](https://codeclimate.com/github/styleseek/hyperdrive.png)](https://codeclimate.com/github/styleseek/hyperdrive)
125
- - Dependencies: [![Dependency Status](https://gemnasium.com/styleseek/hyperdrive.png)](https://gemnasium.com/styleseek/hyperdrive)
126
-
127
123
  ## Contributing
128
124
 
129
125
  1. Fork it ( http://github.com/styleseek/hyperdrive/fork )
data/hyperdrive.gemspec CHANGED
@@ -17,9 +17,9 @@ Gem::Specification.new do |gem|
17
17
  gem.executables = ['hyperdrive']
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
-
20
+
21
21
  gem.add_dependency 'linguistics'
22
- gem.add_dependency 'oj'
22
+ gem.add_dependency 'multi_json'
23
23
  gem.add_dependency 'rack'
24
24
  gem.add_dependency 'rack-cache'
25
25
  gem.add_dependency 'rack-ssl'
@@ -38,6 +38,10 @@ module Hyperdrive
38
38
  @config[:cors] = config[:cors].merge(options)
39
39
  end
40
40
 
41
+ def per_page(per_page)
42
+ @config[:per_page] = per_page.to_i
43
+ end
44
+
41
45
  def resource(name)
42
46
  @resources[name] = Resource.new(name, @config, &Proc.new).resource
43
47
  end
@@ -30,10 +30,22 @@ module Hyperdrive
30
30
  media_type =~ /xml$/
31
31
  end
32
32
 
33
+ def self.page
34
+ env['hyperdrive.page']
35
+ end
36
+
37
+ def self.per_page
38
+ env['hyperdrive.per_page']
39
+ end
40
+
33
41
  def self.render(body)
34
42
  case body
35
43
  when Array, Hash
36
- Oj.dump(body, mode: :compat) if json?
44
+ if json?
45
+ MultiJson.dump(body)
46
+ else
47
+ $stderr.puts "can't serialize response automatically"
48
+ end
37
49
  when String
38
50
  body
39
51
  else
@@ -13,7 +13,7 @@ module Hyperdrive
13
13
  end
14
14
 
15
15
  def message
16
- "#{@argument} is not supported by `#{@method_name}'."
16
+ "DSL Error: The argument you supplied (#{@argument}) is not supported by the `#{@method_name}' method."
17
17
  end
18
18
  end
19
19
  end
@@ -3,6 +3,10 @@
3
3
  module Hyperdrive
4
4
  module Errors
5
5
  class HTTPError < RuntimeError
6
+ def message
7
+ 'Unknown Error.'
8
+ end
9
+
6
10
  def http_status_code
7
11
  500
8
12
  end
@@ -6,7 +6,7 @@ module Hyperdrive
6
6
  end
7
7
 
8
8
  def message
9
- "A request was made using a request method (#{@request_method}) not supported by this resource."
9
+ "#{@request_method.upcase} requests are not supported by this resource."
10
10
  end
11
11
 
12
12
  def http_status_code
@@ -28,9 +28,9 @@ module Hyperdrive
28
28
  media_types += %w(application/hal+json application/json)
29
29
  content_type = env['hyperdrive.accept'].best_of(media_types)
30
30
  body = if content_type =~ /json$/
31
- Oj.dump(api, mode: :compat)
31
+ MultiJson.dump(api)
32
32
  else
33
- raise Hyperdrive::Errors::NotAcceptable.new(env['HTTP_ACCEPT'])
33
+ raise Errors::NotAcceptable.new(env['HTTP_ACCEPT'])
34
34
  end
35
35
 
36
36
  status = 200
@@ -4,31 +4,36 @@ module Hyperdrive
4
4
  module Middleware
5
5
  class Error
6
6
  include Hyperdrive::Values
7
-
7
+
8
8
  def initialize(app)
9
9
  @app = app
10
10
  end
11
11
 
12
12
  def call(env)
13
13
  @app.call(env)
14
- rescue Hyperdrive::Errors::HTTPError => e
15
- status = e.http_status_code
16
- headers = { 'Content-Type' => 'application/json',
17
- 'Allow' => supported_request_methods.join(', ') }
18
- body = Oj.dump(error_message(e), mode: :compat)
19
- [status, headers, [body]]
14
+ rescue => e
15
+ headers = { 'Content-Type' => 'application/json' }
16
+ if e.respond_to?(:http_status_code)
17
+ status = e.http_status_code
18
+ body = [json_error(e)]
19
+ else
20
+ env['rack.errors'] << e
21
+ status = 500
22
+ body = json_error(Hyperdrive::Errors::HTTPError.new)
23
+ end
24
+ [status, headers, body]
20
25
  end
21
26
 
22
27
  private
23
-
24
- def error_message(e)
25
- {
28
+
29
+ def json_error(e)
30
+ MultiJson.dump({
26
31
  _links: { root: { href: '/', title: 'API Root' } },
27
- error: {
32
+ error: {
28
33
  type: "#{e.class.to_s.split('::').last}",
29
34
  message: e.message
30
35
  }
31
- }
36
+ })
32
37
  end
33
38
  end
34
39
  end
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+
3
+ module Hyperdrive
4
+ module Middleware
5
+ class Pagination
6
+ def initialize(app)
7
+ @app = app
8
+ end
9
+
10
+ def call(env)
11
+ if %(GET HEAD).include? env['REQUEST_METHOD']
12
+ env['hyperdrive.page'] = env['hyperdrive.params'].delete(:page) { 1 }
13
+ env['hyperdrive.page'] = 1 if env['hyperdrive.page'].to_i < 1
14
+ env['hyperdrive.per_page'] = env['hyperdrive.params'].delete(:per_page) { hyperdrive.config.fetch(:per_page) { 20 } }
15
+ env['hyperdrive.per_page'] = 20 if env['hyperdrive.per_page'].to_i == 0
16
+ end
17
+ @app.call(env)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -4,6 +4,7 @@ require 'hyperdrive/middleware/accept'
4
4
  require 'hyperdrive/middleware/cors'
5
5
  require 'hyperdrive/middleware/content_negotiation'
6
6
  require 'hyperdrive/middleware/error'
7
+ require 'hyperdrive/middleware/pagination'
7
8
  require 'hyperdrive/middleware/resource'
8
9
  require 'hyperdrive/middleware/request_method'
9
10
  require 'hyperdrive/middleware/required_params'
@@ -24,11 +24,12 @@ module Hyperdrive
24
24
  run Hyperdrive::HATEOAS
25
25
  end
26
26
 
27
- hyperdrive.resources.each do |key, resource|
27
+ hyperdrive.resources.each do |key, resource|
28
28
  map resource.endpoint do
29
29
  use Hyperdrive::Middleware::Resource, resource
30
30
  use Hyperdrive::Middleware::RequestMethod
31
31
  use Hyperdrive::Middleware::SanitizeParams
32
+ use Hyperdrive::Middleware::Pagination
32
33
  use Hyperdrive::Middleware::RequiredParams
33
34
  use Hyperdrive::Middleware::CORS, hyperdrive.config[:cors]
34
35
  use Hyperdrive::Middleware::ContentNegotiation
@@ -52,7 +52,8 @@ module Hyperdrive
52
52
  name: 'Hyperdrive API',
53
53
  description: "v#{Hyperdrive::VERSION}",
54
54
  vendor: 'hyperdrive',
55
- media_types: %w(hal+json json)
55
+ media_types: %w(hal+json json),
56
+ per_page: 20
56
57
  }.freeze
57
58
  end
58
59
 
@@ -1,3 +1,3 @@
1
1
  module Hyperdrive
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
data/lib/hyperdrive.rb CHANGED
@@ -6,7 +6,7 @@
6
6
  require 'rack'
7
7
  require 'rack/accept'
8
8
  require 'linguistics'; Linguistics.use(:en)
9
- require 'oj'
9
+ require 'multi_json'
10
10
 
11
11
  ## immutable values
12
12
  require 'hyperdrive/values'
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Hyperdrive::Errors::BadRequest do
6
+ before do
7
+ @error = Hyperdrive::Errors::BadRequest.new
8
+ end
9
+
10
+ it "returns a 400 status code" do
11
+ @error.http_status_code.must_equal 400
12
+ end
13
+
14
+ it "has a message" do
15
+ @error.message.must_match(/bad syntax/)
16
+ end
17
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Hyperdrive::Errors::DSL::UnknownArgument do
6
+ it 'has a message' do
7
+ error = Hyperdrive::Errors::DSL::UnknownArgument.new('trace', 'request')
8
+ error.message.must_match(/DSL/)
9
+ end
10
+
11
+ it "formats Symbol arguments with a `:'" do
12
+ error = Hyperdrive::Errors::DSL::UnknownArgument.new(:trace, 'request')
13
+ error.message.must_match(/:trace/)
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Hyperdrive::Errors::HTTPError do
6
+ before do
7
+ @error = Hyperdrive::Errors::HTTPError.new
8
+ end
9
+
10
+ it "returns a 500 status code" do
11
+ @error.http_status_code.must_equal 500
12
+ end
13
+
14
+ it "has a message" do
15
+ @error.message.must_match(/Unknown/)
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Hyperdrive::Errors::InternalServerError do
6
+ before do
7
+ @error = Hyperdrive::Errors::InternalServerError.new
8
+ end
9
+
10
+ it "returns a 500 status code" do
11
+ @error.http_status_code.must_equal 500
12
+ end
13
+
14
+ it "has a message" do
15
+ @error.message.must_match(/unexpected/)
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Hyperdrive::Errors::MethodNotAllowed do
6
+ before do
7
+ @error = Hyperdrive::Errors::MethodNotAllowed.new('GET')
8
+ end
9
+
10
+ it "returns a 405 status code" do
11
+ @error.http_status_code.must_equal 405
12
+ end
13
+
14
+ it "has a message" do
15
+ @error.message.must_match(/GET/)
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Hyperdrive::Errors::MissingRequiredParam do
6
+ before do
7
+ @error = Hyperdrive::Errors::MissingRequiredParam.new('parent_id', 'GET')
8
+ end
9
+
10
+ it "returns a 400 status code" do
11
+ @error.http_status_code.must_equal 400
12
+ end
13
+
14
+ it "has a message" do
15
+ @error.message.must_match(/GET/)
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Hyperdrive::Errors::NotAcceptable do
6
+ before do
7
+ @error = Hyperdrive::Errors::NotAcceptable.new('application/xml')
8
+ end
9
+
10
+ it "returns a 406 status code" do
11
+ @error.http_status_code.must_equal 406
12
+ end
13
+
14
+ it "has a message" do
15
+ @error.message.must_match(/xml/)
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Hyperdrive::Errors::NotFound do
6
+ before do
7
+ @error = Hyperdrive::Errors::NotFound.new
8
+ end
9
+
10
+ it "returns a 404 status code" do
11
+ @error.http_status_code.must_equal 404
12
+ end
13
+
14
+ it "has a message" do
15
+ @error.message.must_match(/not be found/)
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Hyperdrive::Errors::NotImplemented do
6
+ before do
7
+ @error = Hyperdrive::Errors::NotImplemented.new('TRACE')
8
+ end
9
+
10
+ it "returns a 501 status code" do
11
+ @error.http_status_code.must_equal 501
12
+ end
13
+
14
+ it "has a message" do
15
+ @error.message.must_match(/TRACE/)
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Hyperdrive::Errors::Unauthorized do
6
+ before do
7
+ @error = Hyperdrive::Errors::Unauthorized.new
8
+ end
9
+
10
+ it "returns a 401 status code" do
11
+ @error.http_status_code.must_equal 401
12
+ end
13
+
14
+ it "has a message" do
15
+ @error.message.must_match(/authentication/)
16
+ end
17
+ end
@@ -36,7 +36,7 @@ describe Hyperdrive::HATEOAS do
36
36
  end
37
37
 
38
38
  it "responds with a description of all resources" do
39
- last_response.body.must_equal %Q({"_links":{"self":{"href":"/"}},"name":"Hyperdrive API","description":"v0.0.5","vendor":"hyperdrive","resources":[{"_links":{"self":{"href":"/things"}},"id":"hyperdrive:things","name":"Thing Resource","description":"Description of Thing Resource","methods":["OPTIONS","GET","HEAD","POST","PUT","PATCH","DELETE"],"params":[{"name":"id","description":"Identifier","type":"String","constraints":"Required for: PUT, PATCH, DELETE. "},{"name":"name","description":"50 Chars or less","type":"String","constraints":"Required for: POST, PUT, PATCH. "}],"filters":[{"name":"id","description":"Resource Identifier","type":"String","constraints":" "},{"name":"parent_id","description":"Parent ID of Thing","type":"String","constraints":"Required for: GET, HEAD. "}],"media_types":[["application/vnd.hyperdrive.things.v1+hal+json","application/vnd.hyperdrive.things+hal+json","application/vnd.hyperdrive+hal+json","application/vnd.hyperdrive.things.v1+json","application/vnd.hyperdrive.things+json","application/vnd.hyperdrive+json"]]}]})
39
+ last_response.body.must_equal %Q({"_links":{"self":{"href":"/"}},"name":"Hyperdrive API","description":"v#{Hyperdrive::VERSION}","vendor":"hyperdrive","resources":[{"_links":{"self":{"href":"/things"}},"id":"hyperdrive:things","name":"Thing Resource","description":"Description of Thing Resource","methods":["OPTIONS","GET","HEAD","POST","PUT","PATCH","DELETE"],"params":[{"name":"id","description":"Identifier","type":"String","constraints":"Required for: PUT, PATCH, DELETE. "},{"name":"name","description":"50 Chars or less","type":"String","constraints":"Required for: POST, PUT, PATCH. "}],"filters":[{"name":"id","description":"Resource Identifier","type":"String","constraints":" "},{"name":"parent_id","description":"Parent ID of Thing","type":"String","constraints":"Required for: GET, HEAD. "}],"media_types":[["application/vnd.hyperdrive.things.v1+hal+json","application/vnd.hyperdrive.things+hal+json","application/vnd.hyperdrive+hal+json","application/vnd.hyperdrive.things.v1+json","application/vnd.hyperdrive.things+json","application/vnd.hyperdrive+json"]]}]})
40
40
  end
41
41
  end
42
42
  end
@@ -3,23 +3,41 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Hyperdrive::Middleware::Error do
6
- def app
7
- Rack::Builder.new do
8
- use Hyperdrive::Middleware::Error
9
- run ->(env) { raise Hyperdrive::Errors::HTTPError }
10
- end
11
- end
12
-
13
6
  before do
14
- @response = %Q({"_links":{"root":{"href":"/","title":"API Root"}},"error":{"type":"HTTPError","message":"Hyperdrive::Errors::HTTPError"}})
15
7
  get '/'
16
8
  end
9
+
10
+ context "Known Error" do
11
+ def app
12
+ Rack::Builder.new do
13
+ use Hyperdrive::Middleware::Error
14
+ run ->(env) { raise Hyperdrive::Errors::MethodNotAllowed.new('GET') }
15
+ end
16
+ end
17
+
18
+ it "traps errors" do
19
+ last_response.status.must_equal 405
20
+ end
17
21
 
18
- it "traps errors" do
19
- last_response.status.must_equal 500
22
+ it "returns a formatted error message" do
23
+ last_response.body.must_match(/error/)
24
+ end
20
25
  end
21
26
 
22
- it "returns a formatted error message" do
23
- last_response.body.must_equal @response
27
+ context "Unknown Error" do
28
+ def app
29
+ Rack::Builder.new do
30
+ use Hyperdrive::Middleware::Error
31
+ run ->(env) { raise 'Woah there, fella!' }
32
+ end
33
+ end
34
+
35
+ it "traps errors" do
36
+ last_response.status.must_equal 500
37
+ end
38
+
39
+ it "returns a formatted error message" do
40
+ last_response.body.must_match(/Unknown Error/)
41
+ end
24
42
  end
25
43
  end
@@ -0,0 +1,45 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Hyperdrive::Middleware::Pagination do
6
+ def app
7
+ inner_app = ->(env) { [200, {}, [[env['hyperdrive.page'],env['hyperdrive.per_page'],env['hyperdrive.params'][:page],env['hyperdrive.params'][:per_page]].join(",")]] }
8
+ Hyperdrive::Middleware::Pagination.new(inner_app)
9
+ end
10
+
11
+ after do
12
+ hyperdrive.send(:reset!)
13
+ end
14
+
15
+ it "sets default values for page and per_page and removes them from hyperdrive.params" do
16
+ env = default_rack_env.merge('hyperdrive.params' => {})
17
+ get '/', {}, env
18
+ last_response.body.must_equal '1,20,,'
19
+ end
20
+
21
+ it "sets page to 1 if value is less than 1" do
22
+ env = default_rack_env.merge('hyperdrive.params' => { page: '' })
23
+ get '/', {}, env
24
+ last_response.body.must_equal '1,20,,'
25
+ end
26
+
27
+ it "returns per_page value if supplied" do
28
+ env = default_rack_env.merge('hyperdrive.params' => { per_page: 42 })
29
+ get '/', {}, env
30
+ last_response.body.must_equal '1,42,,'
31
+ end
32
+
33
+ it "uses configured per_page value if per_page is not supplied" do
34
+ hyperdrive.config[:per_page] = 13
35
+ env = default_rack_env.merge('hyperdrive.params' => {})
36
+ get '/', {}, env
37
+ last_response.body.must_equal '1,13,,'
38
+ end
39
+
40
+ it "sets per_page to 20 if value is 0" do
41
+ env = default_rack_env.merge('hyperdrive.params' => { per_page: '' })
42
+ get '/', {}, env
43
+ last_response.body.must_equal '1,20,,'
44
+ end
45
+ end
data/spec/spec_helper.rb CHANGED
@@ -18,6 +18,7 @@ require 'hyperdrive'
18
18
 
19
19
  # Fire up the BDD Stack
20
20
  require 'rack/test'
21
+ require 'mocha/mini_test'
21
22
  require 'minitest/autorun'
22
23
  require "minitest-spec-context"
23
24
  require 'minitest/reporters'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyperdrive
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - StyleSeek Engineering
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-04 00:00:00.000000000 Z
11
+ date: 2014-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: linguistics
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: oj
28
+ name: multi_json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -149,6 +149,7 @@ files:
149
149
  - lib/hyperdrive/middleware/content_negotiation.rb
150
150
  - lib/hyperdrive/middleware/cors.rb
151
151
  - lib/hyperdrive/middleware/error.rb
152
+ - lib/hyperdrive/middleware/pagination.rb
152
153
  - lib/hyperdrive/middleware/request_method.rb
153
154
  - lib/hyperdrive/middleware/required_params.rb
154
155
  - lib/hyperdrive/middleware/resource.rb
@@ -163,12 +164,23 @@ files:
163
164
  - spec/hyperdrive/dsl/resource_spec.rb
164
165
  - spec/hyperdrive/dsl_spec.rb
165
166
  - spec/hyperdrive/endpoint_spec.rb
167
+ - spec/hyperdrive/errors/bad_request_spec.rb
168
+ - spec/hyperdrive/errors/dsl/unknown_argument_spec.rb
169
+ - spec/hyperdrive/errors/http_error_spec.rb
170
+ - spec/hyperdrive/errors/internal_server_error_spec.rb
171
+ - spec/hyperdrive/errors/method_not_allowed_spec.rb
172
+ - spec/hyperdrive/errors/missing_required_param_spec.rb
173
+ - spec/hyperdrive/errors/not_acceptable_spec.rb
174
+ - spec/hyperdrive/errors/not_found_spec.rb
175
+ - spec/hyperdrive/errors/not_implemented_spec.rb
176
+ - spec/hyperdrive/errors/unauthorized_spec.rb
166
177
  - spec/hyperdrive/filter_spec.rb
167
178
  - spec/hyperdrive/hateoas_spec.rb
168
179
  - spec/hyperdrive/middleware/accept_spec.rb
169
180
  - spec/hyperdrive/middleware/content_negotiation_spec.rb
170
181
  - spec/hyperdrive/middleware/cors_spec.rb
171
182
  - spec/hyperdrive/middleware/error_spec.rb
183
+ - spec/hyperdrive/middleware/pagination_spec.rb
172
184
  - spec/hyperdrive/middleware/request_method_spec.rb
173
185
  - spec/hyperdrive/middleware/required_params_spec.rb
174
186
  - spec/hyperdrive/middleware/resource_spec.rb
@@ -208,12 +220,23 @@ test_files:
208
220
  - spec/hyperdrive/dsl/resource_spec.rb
209
221
  - spec/hyperdrive/dsl_spec.rb
210
222
  - spec/hyperdrive/endpoint_spec.rb
223
+ - spec/hyperdrive/errors/bad_request_spec.rb
224
+ - spec/hyperdrive/errors/dsl/unknown_argument_spec.rb
225
+ - spec/hyperdrive/errors/http_error_spec.rb
226
+ - spec/hyperdrive/errors/internal_server_error_spec.rb
227
+ - spec/hyperdrive/errors/method_not_allowed_spec.rb
228
+ - spec/hyperdrive/errors/missing_required_param_spec.rb
229
+ - spec/hyperdrive/errors/not_acceptable_spec.rb
230
+ - spec/hyperdrive/errors/not_found_spec.rb
231
+ - spec/hyperdrive/errors/not_implemented_spec.rb
232
+ - spec/hyperdrive/errors/unauthorized_spec.rb
211
233
  - spec/hyperdrive/filter_spec.rb
212
234
  - spec/hyperdrive/hateoas_spec.rb
213
235
  - spec/hyperdrive/middleware/accept_spec.rb
214
236
  - spec/hyperdrive/middleware/content_negotiation_spec.rb
215
237
  - spec/hyperdrive/middleware/cors_spec.rb
216
238
  - spec/hyperdrive/middleware/error_spec.rb
239
+ - spec/hyperdrive/middleware/pagination_spec.rb
217
240
  - spec/hyperdrive/middleware/request_method_spec.rb
218
241
  - spec/hyperdrive/middleware/required_params_spec.rb
219
242
  - spec/hyperdrive/middleware/resource_spec.rb