Class: Interfacets::Test::Js::Receivers::Api

Inherits:
Object
  • Object
show all
Defined in:
lib/interfacets/test/js/receivers/api.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, router:) ⇒ Api

Returns a new instance of Api.



11
12
13
14
15
# File 'lib/interfacets/test/js/receivers/api.rb', line 11

def initialize(name:, router:)
  @name = name
  @router = router
  @response_queue = []
end

Instance Attribute Details

#name ⇒ Object (readonly)

Returns the value of attribute name.



10
11
12
# File 'lib/interfacets/test/js/receivers/api.rb', line 10

def name
  @name
end

#response_queue ⇒ Object (readonly)

Returns the value of attribute response_queue.



10
11
12
# File 'lib/interfacets/test/js/receivers/api.rb', line 10

def response_queue
  @response_queue
end

#router ⇒ Object (readonly)

Returns the value of attribute router.



10
11
12
# File 'lib/interfacets/test/js/receivers/api.rb', line 10

def router
  @router
end

Instance Method Details

#flush_responses ⇒ Object



41
42
43
# File 'lib/interfacets/test/js/receivers/api.rb', line 41

def flush_responses
  response_queue.tap { @response_queue = [] }
end

#handler ⇒ Object



17
18
# File 'lib/interfacets/test/js/receivers/api.rb', line 17

def handler
end

#receive(payload:, dispatch:) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/interfacets/test/js/receivers/api.rb', line 20

def receive(payload:, dispatch:)
  @dispatch = dispatch

  return if payload.nil?
  return if payload.empty?
  return if payload.dig("streams", "default").nil?
  return if payload.dig("streams", "default").empty?

  method = payload.dig("streams", "default", "method")
  url = payload.dig("streams", "default", "url")


  if method == "get"
    response_queue << router.call(url).render
  else
    payload
      .dig("streams", "default", "body", "event", "payload")
      .then { response_queue << router.call(url).handle(_1) }
  end
end