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