Class: Embulk::Filter::AzureComputerVisionApi

Inherits:
FilterPlugin
  • Object
show all
Defined in:
lib/embulk/filter/azure_computer_vision_api.rb,
lib/embulk/filter/azure_computer_vision_api/computer_vision_client.rb

Defined Under Namespace

Classes: ComputerVisionClient

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.transaction(config, in_schema) {|task, out_columns| ... } ⇒ Object

Yields:

  • (task, out_columns)


8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/embulk/filter/azure_computer_vision_api.rb', line 8

def self.transaction(config, in_schema, &control)
  task = {
    "api_type" => config.param("api_type", :string),
    "out_key_name" => config.param("out_key_name", :string),
    "image_path_key_name" => config.param("image_path_key_name", :string),
    "params" => config.param("params", :hash, default: {}),
    "delay" => config.param("delay", :integer, default: 0),
    "retry_wait" => config.param("retry_wait", :integer, default: 10),
    "read_timeout" => config.param("read_timeout", :integer, default: 60),
    "subscription_key" => config.param("subscription_key", :string),
  }

  add_columns = [
    Column.new(nil, task["out_key_name"], :json)
  ]

  out_columns = in_schema + add_columns

  yield(task, out_columns)
end

Instance Method Details

#add(page) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/embulk/filter/azure_computer_vision_api.rb', line 44

def add(page)
  page.each do |record|
    hash = Hash[in_schema.names.zip(record)]
    response = @client.request(hash[@image_path_key_name])
    page_builder.add(hash.values + [response])
    sleep @delay
  end
end

#closeObject



41
42
# File 'lib/embulk/filter/azure_computer_vision_api.rb', line 41

def close
end

#finishObject



53
54
55
# File 'lib/embulk/filter/azure_computer_vision_api.rb', line 53

def finish
  page_builder.finish
end

#initObject



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/embulk/filter/azure_computer_vision_api.rb', line 29

def init
  @image_path_key_name = task['image_path_key_name']
  @delay = task['delay']
  @client = ComputerVisionClient.new(
    params: task['params'],
    subscription_key: task['subscription_key'],
    retry_wait: task['retry_wait'],
    read_timeout: task['read_timeout'],
    api_type: task['api_type']
  )
end