Skip to content

Commit

Permalink
Merge pull request #16 from rossta/bug_fix_pagination
Browse files Browse the repository at this point in the history
Bug fix pagination
  • Loading branch information
rossta committed Jan 29, 2016
2 parents 4f700dc + f24c05a commit f4f5a9a
Show file tree
Hide file tree
Showing 21 changed files with 53 additions and 20 deletions.
2 changes: 1 addition & 1 deletion Gemfile
Expand Up @@ -13,7 +13,7 @@ gem "pry-byebug", platforms: [:ruby_21, :ruby_22]
gem "rake"
gem "rb-fsevent"
gem "rspec", "~> 3.3"
gem "rubocop", "~> 0.34"
gem "rubocop", "0.34"
gem "sinatra"
gem "vcr"
gem "webmock"
Expand Down
16 changes: 16 additions & 0 deletions bin/rspec
@@ -0,0 +1,16 @@
#!/usr/bin/env ruby
#
# This file was generated by Bundler.
#
# The application 'rspec' is installed as part of a gem, and
# this file is here to facilitate running it.
#

require "pathname"
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
Pathname.new(__FILE__).realpath)

require "rubygems"
require "bundler/setup"

load Gem.bin_path("rspec-core", "rspec")
11 changes: 6 additions & 5 deletions lib/tacokit/collection.rb
Expand Up @@ -15,8 +15,9 @@ def initialize(client, method, path, options)
@path = path
@options = options

@page = options.fetch(:page, 0)
@limit = options.fetch(:limit, 50)
@before = options.fetch(:before, nil)
@limit = options.fetch(:limit, 50)
@max = options.fetch(:max, MAX)

@collection = []

Expand All @@ -39,14 +40,14 @@ def each(start = 0)
private

def last?
@last_response_empty || (@page * @limit) >= MAX
@last_response_empty || @collection.length >= @max
end

def fetch_next_page
response = @client.send(@method, @path, @options.merge(page: @page))
response = @client.send(@method, @path, @options.merge(before: @before, limit: @limit))
@last_response_empty = response.empty?
@page += 1
@collection += response
@before = response.last["id"] unless @last_response_empty
end
end
end
2 changes: 1 addition & 1 deletion lib/tacokit/transform.rb
Expand Up @@ -17,7 +17,7 @@ def deserialize(body)
private

def normalize_request_params(params)
(params || {}).each_with_object({}) do |(key, value), norm|
(params || {}).reject { |_k, v| v.nil? }.each_with_object({}) do |(key, value), norm|
norm[key] = normalize_param_value(value)
end
end
Expand Down

Large diffs are not rendered by default.

@@ -0,0 +1 @@
{"http_interactions":[{"request":{"method":"get","uri":"https://api.trello.com/1/boards/swezQ9XS/cards?key=<TRELLO_APP_KEY>&limit=1&max=3&token=<TRELLO_APP_TOKEN>","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["Tacokit 0.3.1"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Server":["cloudflare-nginx"],"Date":["Fri, 29 Jan 2016 11:08:18 GMT"],"Content-Type":["application/json; charset=utf-8"],"Transfer-Encoding":["chunked"],"Connection":["keep-alive"],"Set-Cookie":["__cfduid=d591ade964578fa013d7a4e023a7a3b261454065698; expires=Sat, 28-Jan-17 11:08:18 GMT; path=/; domain=.trello.com; HttpOnly","dsc=0dd7dc85c8663753c5fefef22dd7e03a8c29720dbe30665dc474d6af237edbbb; Path=/; Expires=Mon, 01 Feb 2016 11:08:18 GMT; Secure"],"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.574.0"],"X-Trello-Environment":["Production"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"X-Server-Time":["1454065698158"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Etag":["W/\"344-f52ec542\""],"Vary":["Accept-Encoding"],"Cf-Ray":["26c47a7510ae078b-EWR"]},"body":{"encoding":"ASCII-8BIT","base64_string":"W3siaWQiOiI1NDhkZDk3NmJlZDVmOWExN2FmNDdlOTUiLCJjaGVja0l0ZW1T\ndGF0ZXMiOltdLCJjbG9zZWQiOmZhbHNlLCJkYXRlTGFzdEFjdGl2aXR5Ijoi\nMjAxNS0wMS0xMVQxMzowNzowOC45NDVaIiwiZGVzYyI6IiIsImRlc2NEYXRh\nIjpudWxsLCJpZEJvYXJkIjoiNTQ4YTY3NTU4MWQxZDY2OWM5ZTgxODRlIiwi\naWRMaXN0IjoiNTQ4ZGQ5NTRkYzNkZmQ3ZDFhYWZhZWExIiwiaWRNZW1iZXJz\nVm90ZWQiOltdLCJpZFNob3J0Ijo2LCJpZEF0dGFjaG1lbnRDb3ZlciI6IiIs\nIm1hbnVhbENvdmVyQXR0YWNobWVudCI6ZmFsc2UsImlkTGFiZWxzIjpbXSwi\nbmFtZSI6IkNhcmQgNiIsInBvcyI6MTk2NjA3LCJzaG9ydExpbmsiOiJkbHpE\nWFAxZCIsImJhZGdlcyI6eyJ2b3RlcyI6MCwidmlld2luZ01lbWJlclZvdGVk\nIjpmYWxzZSwic3Vic2NyaWJlZCI6ZmFsc2UsImZvZ2J1Z3oiOiIiLCJjaGVj\na0l0ZW1zIjowLCJjaGVja0l0ZW1zQ2hlY2tlZCI6MCwiY29tbWVudHMiOjAs\nImF0dGFjaG1lbnRzIjowLCJkZXNjcmlwdGlvbiI6ZmFsc2UsImR1ZSI6bnVs\nbH0sImR1ZSI6bnVsbCwiZW1haWwiOiJ0YWNva2l0KzU0OGE2Njk2YjNiOTkx\nOGJlYjE0NGIwNys1NDhkZDk3NmJlZDVmOWExN2FmNDdlOTUrYWUyODdkZmQ4\nMDZmZWEzNDBmZjBmMGVkY2MwNGE0MjEwYWQwMGI1ZkBib2FyZHMudHJlbGxv\nLmNvbSIsImlkQ2hlY2tsaXN0cyI6W10sImlkTWVtYmVycyI6W10sImxhYmVs\ncyI6W10sInNob3J0VXJsIjoiaHR0cHM6Ly90cmVsbG8uY29tL2MvZGx6RFhQ\nMWQiLCJzdWJzY3JpYmVkIjpmYWxzZSwidXJsIjoiaHR0cHM6Ly90cmVsbG8u\nY29tL2MvZGx6RFhQMWQvNi1jYXJkLTYifV0=\n"},"http_version":null},"recorded_at":"Fri, 29 Jan 2016 11:08:18 GMT"},{"request":{"method":"get","uri":"https://api.trello.com/1/boards/swezQ9XS/cards?before=548dd976bed5f9a17af47e95&key=<TRELLO_APP_KEY>&limit=1&max=3&token=<TRELLO_APP_TOKEN>","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["Tacokit 0.3.1"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Server":["cloudflare-nginx"],"Date":["Fri, 29 Jan 2016 11:08:18 GMT"],"Content-Type":["application/json; charset=utf-8"],"Transfer-Encoding":["chunked"],"Connection":["keep-alive"],"Set-Cookie":["__cfduid=d6c33879f1fcac9e3530306b75a764e6d1454065698; expires=Sat, 28-Jan-17 11:08:18 GMT; path=/; domain=.trello.com; HttpOnly","dsc=5636cce7b90a06cbb19ca8b4b7962a96e5b970571a2e2d5e096ef9c044dad963; Path=/; Expires=Mon, 01 Feb 2016 11:08:18 GMT; Secure"],"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.574.0"],"X-Trello-Environment":["Production"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"X-Server-Time":["1454065698301"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Etag":["W/\"346-12a5639a\""],"Vary":["Accept-Encoding"],"Cf-Ray":["26c47a761ca6076d-EWR"]},"body":{"encoding":"ASCII-8BIT","base64_string":"W3siaWQiOiI1NDhkZDk3MDRiNDE5N2FiYTYxNGQ1OGIiLCJjaGVja0l0ZW1T\ndGF0ZXMiOltdLCJjbG9zZWQiOmZhbHNlLCJkYXRlTGFzdEFjdGl2aXR5Ijoi\nMjAxNC0xMi0xNFQxODo1OToyNS4zNTZaIiwiZGVzYyI6IiIsImRlc2NEYXRh\nIjpudWxsLCJpZEJvYXJkIjoiNTQ4YTY3NTU4MWQxZDY2OWM5ZTgxODRlIiwi\naWRMaXN0IjoiNTQ4ZGQ5NTRkYzNkZmQ3ZDFhYWZhZWExIiwiaWRNZW1iZXJz\nVm90ZWQiOltdLCJpZFNob3J0Ijo1LCJpZEF0dGFjaG1lbnRDb3ZlciI6bnVs\nbCwibWFudWFsQ292ZXJBdHRhY2htZW50IjpmYWxzZSwiaWRMYWJlbHMiOltd\nLCJuYW1lIjoiQ2FyZCA1IiwicG9zIjoxMzEwNzEsInNob3J0TGluayI6ImpE\nSWRNcVJ0IiwiYmFkZ2VzIjp7InZvdGVzIjowLCJ2aWV3aW5nTWVtYmVyVm90\nZWQiOmZhbHNlLCJzdWJzY3JpYmVkIjpmYWxzZSwiZm9nYnVneiI6IiIsImNo\nZWNrSXRlbXMiOjAsImNoZWNrSXRlbXNDaGVja2VkIjowLCJjb21tZW50cyI6\nMCwiYXR0YWNobWVudHMiOjAsImRlc2NyaXB0aW9uIjpmYWxzZSwiZHVlIjpu\ndWxsfSwiZHVlIjpudWxsLCJlbWFpbCI6InRhY29raXQrNTQ4YTY2OTZiM2I5\nOTE4YmViMTQ0YjA3KzU0OGRkOTcwNGI0MTk3YWJhNjE0ZDU4YisyOGNkMmEx\nMzVlZmFkOWNiMGYzYzQ3YTMwODExMmQ1Mjk0MGU2MDRmQGJvYXJkcy50cmVs\nbG8uY29tIiwiaWRDaGVja2xpc3RzIjpbXSwiaWRNZW1iZXJzIjpbXSwibGFi\nZWxzIjpbXSwic2hvcnRVcmwiOiJodHRwczovL3RyZWxsby5jb20vYy9qRElk\nTXFSdCIsInN1YnNjcmliZWQiOmZhbHNlLCJ1cmwiOiJodHRwczovL3RyZWxs\nby5jb20vYy9qRElkTXFSdC81LWNhcmQtNSJ9XQ==\n"},"http_version":null},"recorded_at":"Fri, 29 Jan 2016 11:08:18 GMT"},{"request":{"method":"get","uri":"https://api.trello.com/1/boards/swezQ9XS/cards?before=548dd9704b4197aba614d58b&key=<TRELLO_APP_KEY>&limit=1&max=3&token=<TRELLO_APP_TOKEN>","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["Tacokit 0.3.1"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Server":["cloudflare-nginx"],"Date":["Fri, 29 Jan 2016 11:08:18 GMT"],"Content-Type":["application/json; charset=utf-8"],"Transfer-Encoding":["chunked"],"Connection":["keep-alive"],"Set-Cookie":["__cfduid=d6c33879f1fcac9e3530306b75a764e6d1454065698; expires=Sat, 28-Jan-17 11:08:18 GMT; path=/; domain=.trello.com; HttpOnly","dsc=9834c076bbd298546626aa3c26d90f972c3abb67608f22b86dfc1a3cc20e2111; Path=/; Expires=Mon, 01 Feb 2016 11:08:18 GMT; Secure"],"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.574.0"],"X-Trello-Environment":["Production"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"X-Server-Time":["1454065698465"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Etag":["W/\"345-eae0c3a5\""],"Vary":["Accept-Encoding"],"Cf-Ray":["26c47a772cae076d-EWR"]},"body":{"encoding":"ASCII-8BIT","base64_string":"W3siaWQiOiI1NDhkZDk2YzYxM2I4MGE5ZDA5Mzc2NTUiLCJjaGVja0l0ZW1T\ndGF0ZXMiOltdLCJjbG9zZWQiOmZhbHNlLCJkYXRlTGFzdEFjdGl2aXR5Ijoi\nMjAxNS0wMS0xMlQwMDo1OToxMy4zMzBaIiwiZGVzYyI6IiIsImRlc2NEYXRh\nIjpudWxsLCJpZEJvYXJkIjoiNTQ4YTY3NTU4MWQxZDY2OWM5ZTgxODRlIiwi\naWRMaXN0IjoiNTQ4ZGQ5NTRkYzNkZmQ3ZDFhYWZhZWExIiwiaWRNZW1iZXJz\nVm90ZWQiOltdLCJpZFNob3J0Ijo0LCJpZEF0dGFjaG1lbnRDb3ZlciI6bnVs\nbCwibWFudWFsQ292ZXJBdHRhY2htZW50IjpmYWxzZSwiaWRMYWJlbHMiOltd\nLCJuYW1lIjoiQ2FyZCA0IiwicG9zIjo2NTUzNSwic2hvcnRMaW5rIjoiUzBR\nVnZLa3giLCJiYWRnZXMiOnsidm90ZXMiOjAsInZpZXdpbmdNZW1iZXJWb3Rl\nZCI6ZmFsc2UsInN1YnNjcmliZWQiOmZhbHNlLCJmb2didWd6IjoiIiwiY2hl\nY2tJdGVtcyI6MCwiY2hlY2tJdGVtc0NoZWNrZWQiOjAsImNvbW1lbnRzIjow\nLCJhdHRhY2htZW50cyI6MCwiZGVzY3JpcHRpb24iOmZhbHNlLCJkdWUiOm51\nbGx9LCJkdWUiOm51bGwsImVtYWlsIjoidGFjb2tpdCs1NDhhNjY5NmIzYjk5\nMThiZWIxNDRiMDcrNTQ4ZGQ5NmM2MTNiODBhOWQwOTM3NjU1KzFjZmI1MWY2\nMGYwYjkxZjhmNTE5ZjQ3Yzg1MDU1MDJlZDM4NTc3ZjFAYm9hcmRzLnRyZWxs\nby5jb20iLCJpZENoZWNrbGlzdHMiOltdLCJpZE1lbWJlcnMiOltdLCJsYWJl\nbHMiOltdLCJzaG9ydFVybCI6Imh0dHBzOi8vdHJlbGxvLmNvbS9jL1MwUVZ2\nS2t4Iiwic3Vic2NyaWJlZCI6ZmFsc2UsInVybCI6Imh0dHBzOi8vdHJlbGxv\nLmNvbS9jL1MwUVZ2S2t4LzQtY2FyZC00In1d\n"},"http_version":null},"recorded_at":"Fri, 29 Jan 2016 11:08:18 GMT"}],"recorded_with":"VCR 3.0.0"}

Large diffs are not rendered by default.

0 comments on commit f4f5a9a

Please sign in to comment.