summaryrefslogtreecommitdiff
path: root/qa/qa/vendor/smocker/history_response.rb
blob: 53d5759ef8b50060dfc109d7e8a3cf3a21ef1d72 (plain)
1
2
3
4
5
6
7
8
9
10
11
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# frozen_string_literal: true

require_relative './event_payload'
require 'time'

module QA
  module Vendor
    module Smocker
      class HistoryResponse
        attr_reader :payload

        def initialize(payload)
          @payload = payload
        end

        # Smocker context including call counter
        def context
          payload[:context]
        end

        # Smocker request data
        def request
          payload[:request]
        end

        # @return [EventPayload] the request body as a webhook event
        def as_hook_event
          body = request&.dig(:body)
          EventPayload.new body if body
        end

        # @return [Time] Time request was recieved
        def received
          date = request&.dig(:date)
          Time.parse date if date
        end

        # Find time elapsed since <target>
        #
        # @param target [Time] target time
        # @return [Integer] seconds elapsed since <target>
        def elapsed(target)
          (received.to_f - target.to_f).round if received
        end

        def response
          payload[:response]
        end
      end
    end
  end
end