class Twigg::Pivotal::Resource

Constants

PIVOTAL_BASE

Private Class Methods

default_params() click to toggle source
# File lib/twigg-pivotal/pivotal/resource.rb, line 43
def default_params
  { envelope: true }
end
get(resource, paginate: true, **params) click to toggle source
# File lib/twigg-pivotal/pivotal/resource.rb, line 12
def get(resource, paginate: true, **params)
  results = []
  offset  = paginate ? 0 : nil
  params  = default_params.merge(params)
  done    = false

  begin
    returned = 0
    url      = "#{PIVOTAL_BASE}/#{resource}"
    query    = params_to_query(paginate ? params.merge(offset: offset) : params)
    url << "?#{URI.encode query}"

    response   = RestClient.get url, headers
    json       = JSON[response]

    if paginate
      pagination = json['pagination']
      returned   = pagination['returned']
      offset     += returned

      if results.size + returned == pagination['total']
        done = true
      end
    end

    results.concat(json['data'])
  end until returned == 0 || done

  results
end
headers() click to toggle source
# File lib/twigg-pivotal/pivotal/resource.rb, line 47
def headers
  { 'X-TrackerToken' => Config.pivotal.token }
end
params_to_query(params) click to toggle source
# File lib/twigg-pivotal/pivotal/resource.rb, line 51
def params_to_query(params)
  params.map { |key, value| "#{key}=#{value}" }.join('&')
end