49 lines
1.2 KiB
Ruby
49 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,
|
||
|
:geocoder_geocodio
|
||
|
].freeze
|
||
|
|
||
|
GEOCODER_KEYS = {
|
||
|
"heremaps" => :geocoder_here,
|
||
|
"google" => :geocoder_google,
|
||
|
"mapzen" => :geocoder_mapzen,
|
||
|
"mapbox" => :geocoder_mapbox,
|
||
|
"tomtom" => :geocoder_tomtom,
|
||
|
"geocodio" => :geocoder_geocodio
|
||
|
}.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
|