1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- module Agents
- class ReadFileAgent < Agent
- include FormConfigurable
- include FileHandling
- cannot_be_scheduled!
- consumes_file_pointer!
- def default_options
- {
- 'data_key' => 'data'
- }
- end
- description do
- <<~MD
- The ReadFileAgent takes events from `FileHandling` agents, reads the file, and emits the contents as a string.
- `data_key` specifies the key of the emitted event which contains the file contents.
- #{receiving_file_handling_agent_description}
- MD
- end
- event_description <<~MD
- Events look like:
- {
- "data" => '...'
- }
- MD
- form_configurable :data_key, type: :string
- def validate_options
- if options['data_key'].blank?
- errors.add(:base, "The 'data_key' options is required.")
- end
- end
- def working?
- received_event_without_error?
- end
- def receive(incoming_events)
- incoming_events.each do |event|
- next unless io = get_io(event)
- create_event payload: { interpolated['data_key'] => io.read }
- end
- end
- end
- end
|