class Blurb::RequestCollection

Public Class Methods

new(headers:, base_url:, bulk_api_limit: 100) click to toggle source
# File lib/blurb/request_collection.rb, line 7
def initialize(headers:, base_url:, bulk_api_limit: 100)
  @base_url = base_url
  @headers = headers
  @api_limit = bulk_api_limit
end

Public Instance Methods

create(**create_params) click to toggle source
# File lib/blurb/request_collection.rb, line 42
def create(**create_params)
  create_bulk([create_params]).first
end
create_bulk(create_array) click to toggle source
# File lib/blurb/request_collection.rb, line 46
def create_bulk(create_array)
  execute_bulk_request(
    request_type: :post,
    payload: create_array,
  )
end
delete(resource_id) click to toggle source
# File lib/blurb/request_collection.rb, line 64
def delete(resource_id)
  execute_request(
    api_path: "/#{resource_id}",
    request_type: :delete
  )
end
list(url_params=nil) click to toggle source
# File lib/blurb/request_collection.rb, line 13
def list(url_params=nil)
  execute_request(
    request_type: :get,
    url_params: url_params
  )
end
list_extended(url_params=nil) click to toggle source
# File lib/blurb/request_collection.rb, line 20
def list_extended(url_params=nil)
  execute_request(
    api_path: "/extended",
    request_type: :get,
    url_params: url_params
  )
end
retrieve(resource_id) click to toggle source
# File lib/blurb/request_collection.rb, line 28
def retrieve(resource_id)
  execute_request(
    api_path: "/#{resource_id}",
    request_type: :get
  )
end
retrieve_extended(resource_id) click to toggle source
# File lib/blurb/request_collection.rb, line 35
def retrieve_extended(resource_id)
  execute_request(
    api_path: "/extended/#{resource_id}",
    request_type: :get
  )
end
update(**update_params) click to toggle source
# File lib/blurb/request_collection.rb, line 53
def update(**update_params)
  update_bulk([update_params]).first
end
update_bulk(update_array) click to toggle source
# File lib/blurb/request_collection.rb, line 57
def update_bulk(update_array)
  execute_bulk_request(
    request_type: :put,
    payload: update_array,
  )
end

Private Instance Methods

execute_bulk_request(**execute_request_params) click to toggle source

Split up bulk requests to match the api limit

# File lib/blurb/request_collection.rb, line 89
def execute_bulk_request(**execute_request_params)
  results = []
  payloads = execute_request_params[:payload].each_slice(@api_limit).to_a
  payloads.each do |p|
    execute_request_params[:payload] = p
    results << execute_request(execute_request_params)
  end
  results.flatten
end
execute_request(api_path: "", request_type:, payload: nil, url_params: nil) click to toggle source
# File lib/blurb/request_collection.rb, line 73
def execute_request(api_path: "", request_type:, payload: nil, url_params: nil)
  url = "#{@base_url}#{api_path}"
  url.sub!('/sd/', '/') if request_type == :get && url.include?('sd/reports') && url_params.nil?

  request = Request.new(
    url: url,
    url_params: url_params,
    request_type: request_type,
    payload: payload,
    headers: @headers
  )

  request.make_request
end