Sha256: 4fe99a04209175315d755057a371a765882a786fe37f50b67e097b0997d1debd

Contents?: true

Size: 1.38 KB

Versions: 8

Compression:

Stored size: 1.38 KB

Contents

module QuizApiClient
  module HttpRequest
    class Metrics
      extend Forwardable

      attr_reader :config, :method, :code
      def_delegators :config, :metrics_handler, :metrics_namespace

      def initialize(config, method, code)
        @config = config
        @method = method
        @code = code
      end

      def increment
        return unless configured?

        case metrics_handler
        when :inststatsd
          InstStatsd::Statsd.increment count_metric_name, tags: tags
        end
      end

      def duration(start_time, end_time)
        return unless configured?

        duration_ms = ((end_time - start_time) * 1_000).round

        case metrics_handler
        when :inststatsd
          InstStatsd::Statsd.timing duration_metric_name, duration_ms, tags: tags
        end
      end

      private

      def configured?
        metrics_handler_present? && metrics_namespace_present?
      end

      def count_metric_name
        "#{metrics_namespace}.quiz_api_client.request.count"
      end

      def duration_metric_name
        "#{metrics_namespace}.quiz_api_client.request.duration_ms"
      end

      def metrics_handler_present?
        !metrics_handler.nil?
      end

      def metrics_namespace_present?
        !metrics_namespace.nil?
      end

      def tags
        {
          method: method,
          status: code
        }
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
quiz_api_client-4.19.0 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.18.0 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.17.1 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.17.0 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.16.1 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.16.0 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.15.0 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.14.1 lib/quiz_api_client/http_request/metrics.rb