her-kaminari 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.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/Gemfile +4 -0
- data/Guardfile +7 -0
- data/LICENSE +22 -0
- data/LICENSE.txt +22 -0
- data/README.md +82 -0
- data/Rakefile +11 -0
- data/her-kaminari.gemspec +31 -0
- data/lib/her/kaminari.rb +13 -0
- data/lib/her/kaminari/collection.rb +54 -0
- data/lib/her/kaminari/header_parser.rb +32 -0
- data/lib/her/kaminari/version.rb +6 -0
- data/test/lib/her/kaminari/collection_test.rb +23 -0
- data/test/lib/her/kaminari/header_parser_test.rb +21 -0
- data/test/lib/her/kaminari_test.rb +11 -0
- data/test/support/.keep +0 -0
- data/test/support/her_api.rb +38 -0
- data/test/test_helper.rb +14 -0
- metadata +230 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 8ffa99110a7233d0838f61953d48c94981debe48
|
|
4
|
+
data.tar.gz: d3bde921ef86247057bd5d1de920e58988d208f0
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: c74a8d242f69d2ce6f2662d05acc7f3b0a9211270353197ee2221a29ff60c07547a1fcf80cfecc36a96cf8399b34c14711619238aad05b94c5060e752edd81d9
|
|
7
|
+
data.tar.gz: 54867a070c7a429fee9a1a74135b7d5473b4cf178f523d96c69279d28c814fcaf83c4e4026915a9991d90160e15c230f1b3fb5ac95debf4589547aca444476f6
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
data/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2014 Daniel Blanco Rojas
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (c) 2014 Daniel Blanco Rojas
|
|
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,82 @@
|
|
|
1
|
+
# Her::Kaminari
|
|
2
|
+
|
|
3
|
+
Makes [Her](https://github.com/remiprev/her "ORM that maps REST resources to Ruby objects") aware of APIs that return pagination headers like [grape-kaminari](https://github.com/monterail/grape-kaminari "kaminari paginator integration for grape API framework") gem.
|
|
4
|
+
|
|
5
|
+
Her models can now query these APIs like any other kaminari model:
|
|
6
|
+
|
|
7
|
+
```ruby
|
|
8
|
+
User.page(1).per(10)
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**IMPORTANT:** Pagination is done by the API not by this gem, this gem just parses
|
|
12
|
+
the response data and creates a Kaminari compatible collection that you can use in
|
|
13
|
+
your views.
|
|
14
|
+
|
|
15
|
+
## Gem Dependencies
|
|
16
|
+
|
|
17
|
+
* [Her](https://github.com/remiprev/her "ORM that maps REST resources to Ruby objects")
|
|
18
|
+
* [Kaminari](https://github.com/amatsuda/kaminari "Paginator for Rails")
|
|
19
|
+
|
|
20
|
+
## Installation
|
|
21
|
+
|
|
22
|
+
Add this line to your application's Gemfile:
|
|
23
|
+
|
|
24
|
+
```ruby
|
|
25
|
+
gem 'her-kaminari'
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
And then execute:
|
|
29
|
+
|
|
30
|
+
$ bundle
|
|
31
|
+
|
|
32
|
+
Or install it yourself as:
|
|
33
|
+
|
|
34
|
+
$ gem install her-kaminari
|
|
35
|
+
|
|
36
|
+
## Usage
|
|
37
|
+
|
|
38
|
+
First include Her::Kaminari::HeaderParser in your Her setup like this:
|
|
39
|
+
|
|
40
|
+
```ruby
|
|
41
|
+
Her::API.setup url: 'https://api.example.com' do |c|
|
|
42
|
+
#...
|
|
43
|
+
|
|
44
|
+
# Response
|
|
45
|
+
c.use Her::Kaminari::HeaderParser
|
|
46
|
+
|
|
47
|
+
# ...
|
|
48
|
+
end
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
HeaderParser expects that the API request returns the following headers:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
X-Total: Total number of records.
|
|
55
|
+
X-Page: Current page number.
|
|
56
|
+
X-Per-Page: Number of records per page.
|
|
57
|
+
X-Offset: (optional) the starting point for the return data.
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
Then include Her::Kaminari::Collection in your Her model like this:
|
|
62
|
+
|
|
63
|
+
```ruby
|
|
64
|
+
class User
|
|
65
|
+
include Her::Model
|
|
66
|
+
include Her::Kaminari::Collection
|
|
67
|
+
end
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Now you can use your Her model like any other Kaminari model.
|
|
71
|
+
|
|
72
|
+
## History
|
|
73
|
+
|
|
74
|
+
After reading [How to pass pagination headers with Kaminari, Her and Grape?](http://aenain.github.io/2014/05/27/how-to-pass-pagination-headers-with-kaminari-her-and-grape.html) post by [Artur Hebda](http://aenain.github.io) I decided that it was a good idea to create a gem with his code.
|
|
75
|
+
|
|
76
|
+
## Contributing
|
|
77
|
+
|
|
78
|
+
1. Fork it ( https://github.com/[my-github-username]/her-kaminari/fork )
|
|
79
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
80
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
81
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
|
82
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'her/kaminari/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "her-kaminari"
|
|
8
|
+
spec.version = Her::Kaminari::VERSION
|
|
9
|
+
spec.authors = ["Daniel Blanco Rojas, Artur Hebda"]
|
|
10
|
+
spec.email = ["daniel.blancorojas@gmail.com"]
|
|
11
|
+
spec.summary = %q{Kaminari pagination for Her models.}
|
|
12
|
+
spec.description = %q{Makes Her aware of APIs that return pagination headers.}
|
|
13
|
+
spec.homepage = "https://github.com/DanielBlanco/her-kaminari"
|
|
14
|
+
spec.license = "MIT"
|
|
15
|
+
|
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
|
+
spec.require_paths = ["lib"]
|
|
20
|
+
|
|
21
|
+
spec.add_runtime_dependency 'her', '~> 0.7', '>= 0.7.2'
|
|
22
|
+
spec.add_runtime_dependency 'kaminari', '~> 0.16.1', '>= 0.16.1'
|
|
23
|
+
|
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.7'
|
|
25
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
|
26
|
+
spec.add_development_dependency 'minitest', '~> 5.0'
|
|
27
|
+
spec.add_development_dependency 'pry', '~> 0.10.1', '>= 0.10.1'
|
|
28
|
+
spec.add_development_dependency 'guard', '~> 2.6.1', '>= 2.6.1'
|
|
29
|
+
spec.add_development_dependency 'guard-minitest', '~> 2.3.2', '>= 2.3.2'
|
|
30
|
+
spec.add_development_dependency 'grape', '~> 0.9.0', '>= 0.9.0' # <= Just to shut up kaminari warning
|
|
31
|
+
end
|
data/lib/her/kaminari.rb
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
# lib/her/kaminari/collection.rb
|
|
3
|
+
require 'kaminari'
|
|
4
|
+
require 'kaminari/models/array_extension'
|
|
5
|
+
|
|
6
|
+
module Her
|
|
7
|
+
module Kaminari
|
|
8
|
+
module Collection
|
|
9
|
+
def self.included(base)
|
|
10
|
+
base.class_eval do
|
|
11
|
+
# support for kaminari pagination methods
|
|
12
|
+
scope :page, ->(page) { where(page: page || 1) }
|
|
13
|
+
scope :per, ->(per_page) { where(per_page: per_page || 50) }
|
|
14
|
+
end
|
|
15
|
+
base.extend(ClassMethods)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
module ClassMethods
|
|
19
|
+
|
|
20
|
+
# Creates a new paginated collection from API data.
|
|
21
|
+
# This method makes the assumption the collection was already paginated
|
|
22
|
+
# by the API.
|
|
23
|
+
#
|
|
24
|
+
# @return [Kaminari::PaginatableArray] a paginated collection
|
|
25
|
+
def new_collection(parsed_data)
|
|
26
|
+
collection = super(parsed_data)
|
|
27
|
+
pagination = parsed_data[:pagination]
|
|
28
|
+
collection = ::Kaminari::PaginatableArray.new(
|
|
29
|
+
collection,
|
|
30
|
+
total_count: pagination[:total_count],
|
|
31
|
+
limit: pagination[:per_page]
|
|
32
|
+
).tap do |array|
|
|
33
|
+
array.extend ::Kaminari::PageScopeMethods
|
|
34
|
+
array.singleton_class.class_eval do
|
|
35
|
+
|
|
36
|
+
# @return [Integer] our API page number
|
|
37
|
+
define_method :current_page do
|
|
38
|
+
pagination[:page]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# @return [Integer] our API offset number
|
|
42
|
+
define_method :offset_value do
|
|
43
|
+
pagination[:offset]
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
collection
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
# lib/her/kaminari/header_parser.rb
|
|
3
|
+
module Her
|
|
4
|
+
module Kaminari
|
|
5
|
+
class HeaderParser < Faraday::Response::Middleware
|
|
6
|
+
|
|
7
|
+
# @param [Hash] env environment
|
|
8
|
+
def on_complete(env)
|
|
9
|
+
@env = env
|
|
10
|
+
|
|
11
|
+
pagination = {
|
|
12
|
+
total_count: header("x-total").to_i,
|
|
13
|
+
per_page: (header("x-per-page") || env.body[:data].count).to_i,
|
|
14
|
+
page: header("x-page").to_i,
|
|
15
|
+
offset: header('x-offset').to_i
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
env[:body].merge!(pagination: pagination)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
# Returns a response header value.
|
|
24
|
+
#
|
|
25
|
+
# @param [String] name of the header attribute
|
|
26
|
+
# @return [String] the response header value
|
|
27
|
+
def header(name)
|
|
28
|
+
@env.response_headers[name]
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
# test/lib/her/kaminari/collection_test.rb
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
|
|
5
|
+
describe Her::Kaminari::Collection do
|
|
6
|
+
before do
|
|
7
|
+
class Champion
|
|
8
|
+
include Her::Model
|
|
9
|
+
include Her::Kaminari::Collection
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it 'should query by kaminari methods' do
|
|
14
|
+
champions = Champion.page(2).per(2)
|
|
15
|
+
#binding.pry
|
|
16
|
+
champions.size.must_equal 2
|
|
17
|
+
champions.current_page.must_equal 2
|
|
18
|
+
champions.total_count.must_equal 9
|
|
19
|
+
champions.first.id.must_equal 3
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
# test/lib/her/kaminari_test.rb
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
|
|
5
|
+
describe Her::Kaminari::HeaderParser do
|
|
6
|
+
|
|
7
|
+
subject { Her::Kaminari::HeaderParser.new }
|
|
8
|
+
let(:body) { { 'data' => [1,2,3,4,5] } }
|
|
9
|
+
let(:headers) { {'x-total'=>5, 'x-page'=> 1, 'x-per-page' => 3 } }
|
|
10
|
+
|
|
11
|
+
it 'parses pagination headers' do
|
|
12
|
+
env = OpenStruct.new(body: body, response_headers: headers)
|
|
13
|
+
subject.on_complete(env)
|
|
14
|
+
env[:body].tap do |json|
|
|
15
|
+
expected = {total_count: 5, per_page: 3, page: 1, offset: 0 }
|
|
16
|
+
json[:pagination].must_equal expected
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
data/test/support/.keep
ADDED
|
File without changes
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
# support/her_api.rbj
|
|
3
|
+
|
|
4
|
+
# Her setup
|
|
5
|
+
Her::API.setup url: 'https://api.example.com' do |c|
|
|
6
|
+
# Request
|
|
7
|
+
c.use Faraday::Request::UrlEncoded
|
|
8
|
+
|
|
9
|
+
# Response
|
|
10
|
+
c.use Her::Kaminari::HeaderParser
|
|
11
|
+
c.use Her::Middleware::DefaultParseJSON
|
|
12
|
+
|
|
13
|
+
# Adapter
|
|
14
|
+
c.adapter :test do |stub|
|
|
15
|
+
stub.get("/champions") do |env|
|
|
16
|
+
champions = [
|
|
17
|
+
{ id: 1, name: 'Aatrox'},
|
|
18
|
+
{ id: 2, name: 'Ahri'},
|
|
19
|
+
{ id: 3, name: 'Akali'},
|
|
20
|
+
{ id: 4, name: 'Alistar' },
|
|
21
|
+
{ id: 5, name: 'Amumu' },
|
|
22
|
+
{ id: 6, name: 'Anivia' },
|
|
23
|
+
{ id: 7, name: 'Annie' },
|
|
24
|
+
{ id: 8, name: 'Ashe' },
|
|
25
|
+
{ id: 9, name: 'Azir' }
|
|
26
|
+
]
|
|
27
|
+
page = (env.params['page'] || 1).to_i
|
|
28
|
+
per_page = (env.params['per_page'] || 5).to_i
|
|
29
|
+
headers = {
|
|
30
|
+
'x-total' => champions.size,
|
|
31
|
+
'x-page' => page,
|
|
32
|
+
'x-per-page' => per_page
|
|
33
|
+
}
|
|
34
|
+
champions = ::Kaminari.paginate_array(champions).page(page).per(per_page)
|
|
35
|
+
[200, headers, champions.to_json]
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
data/test/test_helper.rb
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
# test/test_helper.rb
|
|
3
|
+
ENV['RACK_ENV'] = 'test'
|
|
4
|
+
|
|
5
|
+
require 'minitest/spec'
|
|
6
|
+
require 'minitest/autorun'
|
|
7
|
+
require 'minitest/pride'
|
|
8
|
+
require 'json'
|
|
9
|
+
require 'rack/test'
|
|
10
|
+
require 'pry'
|
|
11
|
+
require 'grape'
|
|
12
|
+
require 'her/kaminari'
|
|
13
|
+
require 'support/her_api'
|
|
14
|
+
|
metadata
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: her-kaminari
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Daniel Blanco Rojas, Artur Hebda
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2014-10-27 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: her
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0.7'
|
|
20
|
+
- - ">="
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: 0.7.2
|
|
23
|
+
type: :runtime
|
|
24
|
+
prerelease: false
|
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
+
requirements:
|
|
27
|
+
- - "~>"
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '0.7'
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: 0.7.2
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: kaminari
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: 0.16.1
|
|
40
|
+
- - ">="
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: 0.16.1
|
|
43
|
+
type: :runtime
|
|
44
|
+
prerelease: false
|
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
46
|
+
requirements:
|
|
47
|
+
- - "~>"
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: 0.16.1
|
|
50
|
+
- - ">="
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: 0.16.1
|
|
53
|
+
- !ruby/object:Gem::Dependency
|
|
54
|
+
name: bundler
|
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
|
56
|
+
requirements:
|
|
57
|
+
- - "~>"
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: '1.7'
|
|
60
|
+
type: :development
|
|
61
|
+
prerelease: false
|
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
63
|
+
requirements:
|
|
64
|
+
- - "~>"
|
|
65
|
+
- !ruby/object:Gem::Version
|
|
66
|
+
version: '1.7'
|
|
67
|
+
- !ruby/object:Gem::Dependency
|
|
68
|
+
name: rake
|
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
|
70
|
+
requirements:
|
|
71
|
+
- - "~>"
|
|
72
|
+
- !ruby/object:Gem::Version
|
|
73
|
+
version: '10.0'
|
|
74
|
+
type: :development
|
|
75
|
+
prerelease: false
|
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
77
|
+
requirements:
|
|
78
|
+
- - "~>"
|
|
79
|
+
- !ruby/object:Gem::Version
|
|
80
|
+
version: '10.0'
|
|
81
|
+
- !ruby/object:Gem::Dependency
|
|
82
|
+
name: minitest
|
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
|
84
|
+
requirements:
|
|
85
|
+
- - "~>"
|
|
86
|
+
- !ruby/object:Gem::Version
|
|
87
|
+
version: '5.0'
|
|
88
|
+
type: :development
|
|
89
|
+
prerelease: false
|
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
91
|
+
requirements:
|
|
92
|
+
- - "~>"
|
|
93
|
+
- !ruby/object:Gem::Version
|
|
94
|
+
version: '5.0'
|
|
95
|
+
- !ruby/object:Gem::Dependency
|
|
96
|
+
name: pry
|
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
|
98
|
+
requirements:
|
|
99
|
+
- - "~>"
|
|
100
|
+
- !ruby/object:Gem::Version
|
|
101
|
+
version: 0.10.1
|
|
102
|
+
- - ">="
|
|
103
|
+
- !ruby/object:Gem::Version
|
|
104
|
+
version: 0.10.1
|
|
105
|
+
type: :development
|
|
106
|
+
prerelease: false
|
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
108
|
+
requirements:
|
|
109
|
+
- - "~>"
|
|
110
|
+
- !ruby/object:Gem::Version
|
|
111
|
+
version: 0.10.1
|
|
112
|
+
- - ">="
|
|
113
|
+
- !ruby/object:Gem::Version
|
|
114
|
+
version: 0.10.1
|
|
115
|
+
- !ruby/object:Gem::Dependency
|
|
116
|
+
name: guard
|
|
117
|
+
requirement: !ruby/object:Gem::Requirement
|
|
118
|
+
requirements:
|
|
119
|
+
- - "~>"
|
|
120
|
+
- !ruby/object:Gem::Version
|
|
121
|
+
version: 2.6.1
|
|
122
|
+
- - ">="
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: 2.6.1
|
|
125
|
+
type: :development
|
|
126
|
+
prerelease: false
|
|
127
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - "~>"
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: 2.6.1
|
|
132
|
+
- - ">="
|
|
133
|
+
- !ruby/object:Gem::Version
|
|
134
|
+
version: 2.6.1
|
|
135
|
+
- !ruby/object:Gem::Dependency
|
|
136
|
+
name: guard-minitest
|
|
137
|
+
requirement: !ruby/object:Gem::Requirement
|
|
138
|
+
requirements:
|
|
139
|
+
- - "~>"
|
|
140
|
+
- !ruby/object:Gem::Version
|
|
141
|
+
version: 2.3.2
|
|
142
|
+
- - ">="
|
|
143
|
+
- !ruby/object:Gem::Version
|
|
144
|
+
version: 2.3.2
|
|
145
|
+
type: :development
|
|
146
|
+
prerelease: false
|
|
147
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
148
|
+
requirements:
|
|
149
|
+
- - "~>"
|
|
150
|
+
- !ruby/object:Gem::Version
|
|
151
|
+
version: 2.3.2
|
|
152
|
+
- - ">="
|
|
153
|
+
- !ruby/object:Gem::Version
|
|
154
|
+
version: 2.3.2
|
|
155
|
+
- !ruby/object:Gem::Dependency
|
|
156
|
+
name: grape
|
|
157
|
+
requirement: !ruby/object:Gem::Requirement
|
|
158
|
+
requirements:
|
|
159
|
+
- - "~>"
|
|
160
|
+
- !ruby/object:Gem::Version
|
|
161
|
+
version: 0.9.0
|
|
162
|
+
- - ">="
|
|
163
|
+
- !ruby/object:Gem::Version
|
|
164
|
+
version: 0.9.0
|
|
165
|
+
type: :development
|
|
166
|
+
prerelease: false
|
|
167
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
168
|
+
requirements:
|
|
169
|
+
- - "~>"
|
|
170
|
+
- !ruby/object:Gem::Version
|
|
171
|
+
version: 0.9.0
|
|
172
|
+
- - ">="
|
|
173
|
+
- !ruby/object:Gem::Version
|
|
174
|
+
version: 0.9.0
|
|
175
|
+
description: Makes Her aware of APIs that return pagination headers.
|
|
176
|
+
email:
|
|
177
|
+
- daniel.blancorojas@gmail.com
|
|
178
|
+
executables: []
|
|
179
|
+
extensions: []
|
|
180
|
+
extra_rdoc_files: []
|
|
181
|
+
files:
|
|
182
|
+
- ".gitignore"
|
|
183
|
+
- Gemfile
|
|
184
|
+
- Guardfile
|
|
185
|
+
- LICENSE
|
|
186
|
+
- LICENSE.txt
|
|
187
|
+
- README.md
|
|
188
|
+
- Rakefile
|
|
189
|
+
- her-kaminari.gemspec
|
|
190
|
+
- lib/her/kaminari.rb
|
|
191
|
+
- lib/her/kaminari/collection.rb
|
|
192
|
+
- lib/her/kaminari/header_parser.rb
|
|
193
|
+
- lib/her/kaminari/version.rb
|
|
194
|
+
- test/lib/her/kaminari/collection_test.rb
|
|
195
|
+
- test/lib/her/kaminari/header_parser_test.rb
|
|
196
|
+
- test/lib/her/kaminari_test.rb
|
|
197
|
+
- test/support/.keep
|
|
198
|
+
- test/support/her_api.rb
|
|
199
|
+
- test/test_helper.rb
|
|
200
|
+
homepage: https://github.com/DanielBlanco/her-kaminari
|
|
201
|
+
licenses:
|
|
202
|
+
- MIT
|
|
203
|
+
metadata: {}
|
|
204
|
+
post_install_message:
|
|
205
|
+
rdoc_options: []
|
|
206
|
+
require_paths:
|
|
207
|
+
- lib
|
|
208
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
209
|
+
requirements:
|
|
210
|
+
- - ">="
|
|
211
|
+
- !ruby/object:Gem::Version
|
|
212
|
+
version: '0'
|
|
213
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
214
|
+
requirements:
|
|
215
|
+
- - ">="
|
|
216
|
+
- !ruby/object:Gem::Version
|
|
217
|
+
version: '0'
|
|
218
|
+
requirements: []
|
|
219
|
+
rubyforge_project:
|
|
220
|
+
rubygems_version: 2.2.2
|
|
221
|
+
signing_key:
|
|
222
|
+
specification_version: 4
|
|
223
|
+
summary: Kaminari pagination for Her models.
|
|
224
|
+
test_files:
|
|
225
|
+
- test/lib/her/kaminari/collection_test.rb
|
|
226
|
+
- test/lib/her/kaminari/header_parser_test.rb
|
|
227
|
+
- test/lib/her/kaminari_test.rb
|
|
228
|
+
- test/support/.keep
|
|
229
|
+
- test/support/her_api.rb
|
|
230
|
+
- test/test_helper.rb
|