Sha256: c1820cba52365602041ea31b613f5f3b19893ba36bc04d33724a077eee1d5241

Contents?: true

Size: 1.42 KB

Versions: 26

Compression:

Stored size: 1.42 KB

Contents

module QuizApiClient
  module HttpRequest
    class Metrics
      extend Forwardable

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

      def initialize(config, method, url, code)
        @config = config
        @method = method
        @url = url
        @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,
          url: url
        }
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
quiz_api_client-4.14.0 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.13.4 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.13.3 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.13.2 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.13.1 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.13.0 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.12.0 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.11.1 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.11.0 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.10.0 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.9.1 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.9.0 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.8.1 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.8.0 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.7.0 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.6.0 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.5.5 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.5.4 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.5.3 lib/quiz_api_client/http_request/metrics.rb
quiz_api_client-4.5.2 lib/quiz_api_client/http_request/metrics.rb