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

Version Path
hubspot-api-client-9.0.0 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-8.0.1 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-8.0.0 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-7.3.0 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-7.2.0 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-7.1.1 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-7.1.0 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-7.0.0 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-6.0.0 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-5.0.0 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-4.0.0 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-3.3.0 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-3.2.0 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-3.1.1 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-3.1.0.pre.beta sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-3.0.0.pre.beta sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-2.3.2 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-2.3.1 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-2.2.0 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb
hubspot-api-client-2.1.0 sample-apps/companies-app/app/lib/services/hubspot/companies/export.rb