class Zaikio::Client::Helpers::Pagination::FaradayMiddleware

Faraday Middleware for extracting any pagination headers into the a top-level :metadata hash, or the env hash for non-JSON responses.

@example Usage

conn = Faraday.new do |f|
  f.use Zaikio::Client::Helpers::Pagination::FaradayMiddleware
end

response = conn.get("/")
response.env[METADATA_KEY]
#=> {total_count: 4, total_pages: 1, current_page: 1}

Public Instance Methods

on_complete(env) click to toggle source
# File lib/zaikio/client/helpers/pagination.rb, line 26
def on_complete(env)
  @env = env

  metadata = HEADERS.transform_values do |key|
    header(key)
  end

  if env.body.is_a?(Hash)
    @env.body[:metadata] ||= {}
    @env.body[:metadata][METADATA_KEY] = metadata
  else
    @env[METADATA_KEY] = metadata
  end
end

Private Instance Methods

header(key) click to toggle source
# File lib/zaikio/client/helpers/pagination.rb, line 43
def header(key)
  value = @env.response_headers[key]
  value.try(:to_i)
end