Class: Fleck::Core::Consumer::Request

Inherits:
Object
  • Object
show all
Includes:
Loggable
Defined in:
lib/fleck/core/consumer/request.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Loggable

#log_error, #logger

Constructor Details

#initialize(metadata, payload, delivery_info) ⇒ Request

Returns a new instance of Request.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/fleck/core/consumer/request.rb', line 12

def initialize(, payload, delivery_info)
  @created_at      = Time.now
  @id              = .correlation_id
  logger.progname += " #{@id}"

  @response      = Fleck::Core::Consumer::Response.new(.correlation_id)
  @metadata      = 
  @app_id        = [:app_id]
  @reply_to      = @metadata.reply_to
  @payload       = payload
  @exchange      = delivery_info.exchange
  @queue         = delivery_info.routing_key
  @delivery_tag  = delivery_info.delivery_tag
  @data          = {}
  @headers       = (@metadata.headers || {}).to_hash_with_indifferent_access
  @action        = @metadata.type
  @version       = nil
  @ip            = nil
  @params        = {}
  @failed        = false
  @rejected      = false
  @requeue       = false

  parse_request!
end

Instance Attribute Details

#actionObject (readonly)

Returns the value of attribute action.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def action
  @action
end

#app_idObject (readonly)

Returns the value of attribute app_id.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def app_id
  @app_id
end

#created_atObject (readonly)

Returns the value of attribute created_at.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def created_at
  @created_at
end

#dataObject (readonly)

Returns the value of attribute data.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def data
  @data
end

#delivery_tagObject (readonly)

Returns the value of attribute delivery_tag.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def delivery_tag
  @delivery_tag
end

#errorsObject (readonly)

Returns the value of attribute errors.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def errors
  @errors
end

#headersObject (readonly)

Returns the value of attribute headers.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def headers
  @headers
end

#idObject (readonly)

Returns the value of attribute id.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def id
  @id
end

#ipObject (readonly)

Returns the value of attribute ip.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def ip
  @ip
end

#metadataObject (readonly)

Returns the value of attribute metadata.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def 
  @metadata
end

#paramsObject (readonly)

Returns the value of attribute params.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def params
  @params
end

#payloadObject (readonly)

Returns the value of attribute payload.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def payload
  @payload
end

#processed_atObject (readonly)

Returns the value of attribute processed_at.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def processed_at
  @processed_at
end

#reply_toObject (readonly)

Returns the value of attribute reply_to.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def reply_to
  @reply_to
end

#responseObject (readonly)

Returns the value of attribute response.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def response
  @response
end

#statusObject (readonly)

Returns the value of attribute status.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def status
  @status
end

#versionObject (readonly)

Returns the value of attribute version.



9
10
11
# File 'lib/fleck/core/consumer/request.rb', line 9

def version
  @version
end

Instance Method Details

#execution_timeObject



42
43
44
# File 'lib/fleck/core/consumer/request.rb', line 42

def execution_time
  ((@processed_at.to_f - @created_at.to_f) * 1000).round(2)
end

#failed?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/fleck/core/consumer/request.rb', line 46

def failed?
  @failed
end

#log_headers_and_params!Object



64
65
66
67
68
69
70
71
72
# File 'lib/fleck/core/consumer/request.rb', line 64

def log_headers_and_params!
  queue_name = "(#{@exchange == '' ? @queue : "#{@queue}@#{@exchange}"})".color(:red)
  endpoint = "/#{action} :#{@version || 'v1'}".color(:red)
  message = "\n" \
            "#{ip} - #{queue_name} #{endpoint} [#{@id}]\n" \
            "  ~ headers ~ #{headers.inspect.color(:green)}\n" \
            "  @params #{params.inspect.color(:green)}"
  logger.debug message
end

#processed!Object



38
39
40
# File 'lib/fleck/core/consumer/request.rb', line 38

def processed!
  @processed_at = Time.now
end

#reject!(requeue: false) ⇒ Object



50
51
52
53
54
# File 'lib/fleck/core/consumer/request.rb', line 50

def reject!(requeue: false)
  @rejected = true
  @requeue  = requeue
  processed!
end

#rejected?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/fleck/core/consumer/request.rb', line 56

def rejected?
  @rejected
end

#requeue?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/fleck/core/consumer/request.rb', line 60

def requeue?
  @requeue
end