Sha256: 7e3fbb462f3019062e4debda9f0c210f2c88183cd05592a63cb9c41ac4a2a0ab

Contents?: true

Size: 1.61 KB

Versions: 12

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true

module Appsignal
  module CheckIn
    class Cron
      class << self
        # @api private
        def transmitter
          @transmitter ||= Appsignal::Transmitter.new(
            "#{Appsignal.config[:logging_endpoint]}/check_ins/json"
          )
        end
      end

      # @api private
      attr_reader :identifier, :digest

      def initialize(identifier:)
        @identifier = identifier
        @digest = SecureRandom.hex(8)
      end

      def start
        transmit_event("start")
      end

      def finish
        transmit_event("finish")
      end

      private

      def event(kind)
        {
          :identifier => @identifier,
          :digest => @digest,
          :kind => kind,
          :timestamp => Time.now.utc.to_i,
          :check_in_type => "cron"
        }
      end

      def transmit_event(kind)
        unless Appsignal.active?
          Appsignal.internal_logger.debug(
            "AppSignal not active, not transmitting cron check-in event"
          )
          return
        end

        response = self.class.transmitter.transmit(event(kind))

        if response.code.to_i >= 200 && response.code.to_i < 300
          Appsignal.internal_logger.debug(
            "Transmitted cron check-in `#{identifier}` (#{digest}) #{kind} event"
          )
        else
          Appsignal.internal_logger.error(
            "Failed to transmit cron check-in #{kind} event: status code was #{response.code}"
          )
        end
      rescue => e
        Appsignal.internal_logger.error("Failed to transmit cron check-in #{kind} event: #{e}")
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
appsignal-4.0.3-java lib/appsignal/check_in/cron.rb
appsignal-4.0.3 lib/appsignal/check_in/cron.rb
appsignal-4.0.2-java lib/appsignal/check_in/cron.rb
appsignal-4.0.2 lib/appsignal/check_in/cron.rb
appsignal-4.0.1-java lib/appsignal/check_in/cron.rb
appsignal-4.0.1 lib/appsignal/check_in/cron.rb
appsignal-4.0.0-java lib/appsignal/check_in/cron.rb
appsignal-4.0.0 lib/appsignal/check_in/cron.rb
appsignal-4.0.0.beta.2-java lib/appsignal/check_in/cron.rb
appsignal-4.0.0.beta.2 lib/appsignal/check_in/cron.rb
appsignal-4.0.0.beta.1-java lib/appsignal/check_in/cron.rb
appsignal-4.0.0.beta.1 lib/appsignal/check_in/cron.rb