cartodb/services/dataservices-metrics/lib/geocoder_usage_metrics.rb
2020-06-15 10:58:47 +08:00

47 lines
1.2 KiB
Ruby

require 'active_support/time'
require_relative 'service_usage_metrics'
module CartoDB
# The purpose of this class is to encapsulate storage of usage metrics.
# This shall be used for billing, quota checking and metrics.
class GeocoderUsageMetrics < ServiceUsageMetrics
VALID_METRICS = [
:total_requests,
:failed_responses,
:success_responses,
:empty_responses,
].freeze
VALID_SERVICES = [
:geocoder_internal,
:geocoder_here,
:geocoder_google,
:geocoder_cache,
:geocoder_mapzen,
:geocoder_mapbox,
:geocoder_tomtom
].freeze
GEOCODER_KEYS = {
"heremaps" => :geocoder_here,
"google" => :geocoder_google,
"mapzen" => :geocoder_mapzen,
"mapbox" => :geocoder_mapbox,
"tomtom" => :geocoder_tomtom
}.freeze
def initialize(username, orgname = nil, redis=$geocoder_metrics)
super(username, orgname, redis)
end
protected
def check_valid_data(service, metric)
raise ArgumentError.new('Invalid service') unless VALID_SERVICES.include?(service)
raise ArgumentError.new('Invalid metric') unless VALID_METRICS.include?(metric)
end
end
end