Sha256: 2b486f70292517d35a389595605c78394ec5e9f32b63136c0a7886ceb6f366b8

Contents?: true

Size: 944 Bytes

Versions: 3

Compression:

Stored size: 944 Bytes

Contents

require 'avro_turf/test/fake_confluent_schema_registry_server'
require 'avro-resolution_canonical_form'

# Add support for endpoint to lookup subject schema id by fingerprint.
FakeConfluentSchemaRegistryServer.class_eval do
  SCHEMA_NOT_FOUND = FakeConfluentSchemaRegistryServer::SCHEMA_NOT_FOUND
  SCHEMAS = FakeConfluentSchemaRegistryServer::SCHEMAS
  SUBJECTS = FakeConfluentSchemaRegistryServer::SUBJECTS

  get '/subjects/:subject/fingerprints/:fingerprint' do
    subject = params[:subject]
    halt(404, SCHEMA_NOT_FOUND) unless SUBJECTS.key?(subject)

    fingerprint = params[:fingerprint]
    fingerprint = fingerprint.to_i.to_s(16) if /^\d+$/ =~ fingerprint

    schema_id = SCHEMAS.find_index do |schema|
      Avro::Schema.parse(schema).sha256_resolution_fingerprint.to_s(16) == fingerprint
    end

    halt(404, SCHEMA_NOT_FOUND) unless schema_id && SUBJECTS[subject].include?(schema_id)

    { id: schema_id }.to_json
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
avromatic-0.21.0.rc0 lib/avromatic/test/fake_confluent_schema_registry_server.rb
avromatic-0.20.0 lib/avromatic/test/fake_confluent_schema_registry_server.rb
avromatic-0.19.0 lib/avromatic/test/fake_confluent_schema_registry_server.rb