Sha256: 5e0ff0cdb86ff198f0da750cfc9631394e8d72320f5bf5912ff2938edb6926e4

Contents?: true

Size: 1.18 KB

Versions: 3

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

module Infield
  module Heartbeat
    module Runner
      class << self
        attr_reader :thread

        def run(interval: 60)
          @thread = Thread.new do
            loop do
              if DeprecationWarning::Runner.thread&.alive?
                send_heartbeat
              else
                stop
                break
              end
              sleep(interval)
            end
          end
        end

        def stop
          @thread&.kill
        end

        private

        def send_heartbeat
          uri = URI.parse(Infield.infield_api_url)
          Net::HTTP.start(uri.host, uri.port, use_ssl: (uri.scheme == 'https')) do |http|
            http.post('/api/heartbeats',
                    {
                      repo_environment_id: Infield.repo_environment_id,
                      environment: Infield.environment,
                    }.to_json,
                    {
                      'Content-Type' => 'application/json',
                      'Authorization' => "bearer #{Infield.api_key}"
                    })
          end
        rescue *DeprecationWarning::Runner::HTTP_ERRORS => e
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
infield-0.5.0 lib/infield/heartbeat.rb
infield-0.4.0 lib/infield/heartbeat.rb
infield-0.3.0 lib/infield/heartbeat.rb