class Makeleaps::Request::Generic

Attributes

handler[R]
url_manager[R]

Public Class Methods

new(access_token) click to toggle source
Calls superclass method Makeleaps::Request::Base::new
# File lib/makeleaps/request/generic.rb, line 10
def initialize(access_token)
  super() do |conn|
    conn.authorization :Bearer, access_token
  end
  @handler = Makeleaps::Request::RequestHandler.new(connection)
  @url_manager = Makeleaps::Request::URLManager.new
end

Public Instance Methods

delete(resource_or_url, mid=nil, &block) click to toggle source
# File lib/makeleaps/request/generic.rb, line 81
def delete(resource_or_url, mid=nil, &block)
  handler.delete url_manager.build_url_for(resource_or_url, mid), &block
end
each_page(start_page, *args, params: nil, max_pages: nil, &block) click to toggle source

set max_pages to change the maximum number of retrievable pages WARNING: this might invoke too many API accesses.

# File lib/makeleaps/request/generic.rb, line 32
def each_page(start_page, *args, params: nil, max_pages: nil, &block)
  next_url = start_page
  max_pages = max_pages || 100 # TODO: let default value be customizeable using config

  max_pages.times do
    response = get(next_url, *args) { |req|
      req.params.merge!(params) unless params.nil?
    }
    block.call(response)
    next_url = response.next
    break unless next_url
    sleep 0.1 # TODO: throttling parameter can be adjusted individually
  end
end
each_resource(start_page, *args, params: nil, max_pages: nil, &block) click to toggle source

set max_pages to change the maximum number of retrievable pages WARNING: this might invoke too many API accesses.

# File lib/makeleaps/request/generic.rb, line 49
def each_resource(start_page, *args, params: nil, max_pages: nil, &block)
  each_page(start_page, *args, params: params, max_pages: max_pages) do |page|
    page.each_resource do |resource|
      block.call(resource)
    end
  end
end
find_partner_by(name: ) click to toggle source
# File lib/makeleaps/request/generic.rb, line 25
def find_partner_by(name: )
  partners = get(:partner)
  partners.find_resource { |partner| partner['name'] == name }
end
find_resource(start_page, *args, params: nil, max_pages: nil, &block) click to toggle source
# File lib/makeleaps/request/generic.rb, line 57
def find_resource(start_page, *args, params: nil, max_pages: nil, &block)
  each_page(start_page, params: params, max_pages: max_pages) do |page|
    resource = page.find_resource(*args, &block)
    return resource if resource
  end
  nil
end
get(resource_or_url, mid=nil, &block) click to toggle source
# File lib/makeleaps/request/generic.rb, line 65
def get(resource_or_url, mid=nil, &block)
  handler.get url_manager.build_url_for(resource_or_url, mid), &block
end
options(resource_or_url, mid=nil, &block) click to toggle source
# File lib/makeleaps/request/generic.rb, line 85
def options(resource_or_url, mid=nil, &block)
  handler.options url_manager.build_url_for(resource_or_url, mid), &block
end
patch(resource_or_url, mid=nil, &block) click to toggle source
# File lib/makeleaps/request/generic.rb, line 77
def patch(resource_or_url, mid=nil, &block)
  handler.patch url_manager.build_url_for(resource_or_url, mid), &block
end
post(resource_or_url, mid=nil, &block) click to toggle source
# File lib/makeleaps/request/generic.rb, line 69
def post(resource_or_url, mid=nil, &block)
  handler.post url_manager.build_url_for(resource_or_url, mid), &block
end
put(resource_or_url, mid=nil, &block) click to toggle source
# File lib/makeleaps/request/generic.rb, line 73
def put(resource_or_url, mid=nil, &block)
  handler.put url_manager.build_url_for(resource_or_url, mid), &block
end
set_partner!(name: ) click to toggle source
# File lib/makeleaps/request/generic.rb, line 18
def set_partner!(name: )
  url = find_partner_by(name: name)['url']
  partner_mid = url.split('/').last
  url_manager.set_partner!(partner_mid)
  self
end