Class: Opener::Client::Pipeline

Inherits:
Object
  • Object
show all
Includes:
ProcessorDefiner, Processors
Defined in:
lib/opener/client/pipeline.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ProcessorDefiner

included

Class Method Details

.outlet(outlet) ⇒ Object



17
18
19
# File 'lib/opener/client/pipeline.rb', line 17

def self.outlet(outlet)
  @@outlet = outlet
end

.processor_style(style) ⇒ Object



9
10
11
# File 'lib/opener/client/pipeline.rb', line 9

def self.processor_style(style)
  @@style = style
end

.webservice_host(host = nil) ⇒ Object



13
14
15
# File 'lib/opener/client/pipeline.rb', line 13

def self.webservice_host(host=nil)
  @@host = host
end

Instance Method Details

#pipeObject



21
22
23
# File 'lib/opener/client/pipeline.rb', line 21

def pipe
  @pipe ||= self.class.processors.map{|p| p.new(@@host)}
end

#process(input) ⇒ Object



40
41
42
# File 'lib/opener/client/pipeline.rb', line 40

def process(input)
  json_to_hash send(:"process_#{@@style}", input)
end

#process_async(input) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/opener/client/pipeline.rb', line 31

def process_async(input)
  endpoints = pipe.map(&:endpoint)

  callbacks = endpoints[1..-1]
  callbacks << @@outlet

  pipe[0].process(input, callbacks)
end

#process_sync(input) ⇒ Object



25
26
27
28
29
# File 'lib/opener/client/pipeline.rb', line 25

def process_sync(input)
  pipe.inject(input) do |memo, pipe|
    memo = pipe.process(memo)
  end
end