Sha256: c637fb6a369e7ef32bad04ba74bed3571b72132345e629c2fe9649f459f1d273
Contents?: true
Size: 1.25 KB
Versions: 21
Compression:
Stored size: 1.25 KB
Contents
module Services module Hubspot module Companies class Export PROPERTIES_TO_EXPORT = %w[name domain].freeze def initialize(max_pages: 10) @max_pages = max_pages end def call convert_to_csv(companies) end private def companies return @companies if @companies.present? after = nil @companies = @max_pages.times.each_with_object([]) do |_, companies| params = { auth_names: 'oauth2', limit: 10, after: after } companies_page = basic_api.get_page(params) companies.concat(companies_page.results) break companies unless companies_page.paging.present? after = companies_page.paging._next.after end end def basic_api @basic_api ||= ::Hubspot::Crm::Companies::BasicApi.new end def convert_to_csv(companies, properties: PROPERTIES_TO_EXPORT) CSV.generate(headers: true) do |csv| csv << [:id, *properties] companies.each do |company| csv << [company.id, *properties.map { |property| company.properties[property] }] end csv end end end end end end
Version data entries
21 entries across 21 versions & 1 rubygems