module Flapjack::Gateways::JSONAPI::Methods::Metrics
Public Class Methods
registered(app)
click to toggle source
module Helpers
end
# File lib/flapjack/gateways/jsonapi/methods/metrics.rb, line 16 def self.registered(app) app.helpers Flapjack::Gateways::JSONAPI::Helpers::Headers app.helpers Flapjack::Gateways::JSONAPI::Helpers::Miscellaneous app.helpers Flapjack::Gateways::JSONAPI::Helpers::Resources # app.helpers Flapjack::Gateways::JSONAPI::Methods::Metrics::Helpers app.class_eval do swagger_path "/metrics" do operation :get do key :description, "Get metrics" key :operationId, "get_metrics" key :produces, [Flapjack::Gateways::JSONAPI.media_type_produced] parameter do key :name, :fields key :in, :query key :description, 'Comma-separated list of fields to return' key :required, false key :type, :string end response 200 do key :description, "GET metrics response" schema do key :'$ref', :data_Metrics end end end end end app.get %r{^/metrics$} do fields = params[:fields] fields = [fields] unless fields.nil? || fields.is_a?(Array) whitelist = Flapjack::Data::Metrics.jsonapi_methods[:get].attributes jsonapi_fields = if fields.nil? whitelist else Set.new(fields).keep_if {|f| whitelist.include?(f.to_sym) }.to_a end metrics = Flapjack::Data::Metrics.new result = Hash[ *(jsonapi_fields.collect{|f| [f, metrics.send(f.to_sym)]}.flatten) ] Flapjack.dump_json(:data => { :id => SecureRandom.uuid, :type => 'metrics', :attributes => result }) end end