Sha256: f83b02c2e8cb77117bfd7c62fa24a18f93aa25ec247030b8e43a7e2245850956
Contents?: true
Size: 1.32 KB
Versions: 5
Compression:
Stored size: 1.32 KB
Contents
require 'json' require 'graphql' require 'apollo/optics/proto/reports_pb' require 'optics-agent/reporting/helpers' require 'optics-agent/reporting/send-message' require 'optics-agent/instrumentation/query-schema' module OpticsAgent::Reporting # A report for a whole schema class Schema include Apollo::Optics::Proto include OpticsAgent::Instrumentation include OpticsAgent::Reporting attr_accessor :message def initialize(schema) @message = SchemaReport.new({ header: generate_report_header(), introspection_result: JSON.generate(introspect_schema(schema)), type: get_types(schema) }) end # construct an array of Type (protobuf) objects def get_types(schema) types = [] schema.types.keys.each do |type_name| next if type_name =~ /^__/ type = schema.types[type_name] next unless type.is_a? GraphQL::ObjectType fields = type.fields.values.map do |field| Field.new({ name: field.name, # XXX: does this actually work for all types? returnType: field.type.to_s }) end types << Type.new({ name: type_name, field: fields }) end types end def send send_message('/api/ss/schema', @message) end end end
Version data entries
5 entries across 5 versions & 1 rubygems