lib/embulk/input/marketo/lead.rb in embulk-input-marketo-0.1.1 vs lib/embulk/input/marketo/lead.rb in embulk-input-marketo-0.2.0

- old
+ new

@@ -2,25 +2,20 @@ module Embulk module Input module Marketo class Lead < Base + include Timeslice + PREVIEW_COUNT = 15 Plugin.register_input("marketo/lead", self) def self.target :lead end - def self.guess(config) - client = soap_client(config) - metadata = client.metadata - - return {"columns" => generate_columns(metadata)} - end - def self.generate_columns(metadata) columns = [ {name: "id", type: "long"}, {name: "email", type: "string"}, ] @@ -28,11 +23,11 @@ metadata.each do |field| type = case field[:data_type] when "integer" "long" - when "dateTime", "date" + when "datetime", "date" "timestamp" when "string", "text", "phone", "currency" "string" when "boolean" "boolean" @@ -48,24 +43,37 @@ columns end def run count = 0 - @soap.each(@last_updated_at) do |lead| + from_datetime = task[:from_datetime] + to_datetime = task[:to_datetime] + options = {} + options[:batch_size] = PREVIEW_COUNT if preview? + + soap.each(from_datetime, to_datetime, options) do |lead| values = @columns.map do |column| name = column["name"].to_s - (lead[name] || {})[:value] + value = (lead[name] || {})[:value] + next unless value + + case column["type"] + when "timestamp" + Time.parse(value) + else + value + end end page_builder.add(values) count += 1 break if preview? && count >= PREVIEW_COUNT end page_builder.finish - commit_report = {} + commit_report = {from_datetime: to_datetime} return commit_report end end end end