lib/avromatic/schema_registry_patch.rb in avromatic-0.15.1 vs lib/avromatic/schema_registry_patch.rb in avromatic-0.17.0

- old
+ new

@@ -5,27 +5,29 @@ module CacheableSchemaRegistration # Override register to first check if a schema is registered by fingerprint def register(subject, schema) return super unless Avromatic.use_cacheable_schema_registration + begin + lookup_subject_schema(subject, schema) + rescue Excon::Errors::NotFound + data = post("/subjects/#{subject}/versions", body: { schema: schema.to_s }.to_json) + id = data.fetch('id') + @logger.info("Registered schema for subject `#{subject}`; id = #{id}") + id + end + end + + def lookup_subject_schema(subject, schema) schema_object = if schema.is_a?(String) Avro::Schema.parse(schema) else schema end - registered = false - data = begin - get("/subjects/#{subject}/fingerprints/#{schema_object.sha256_fingerprint.to_s(16)}") - rescue - registered = true - post("/subjects/#{subject}/versions", body: { schema: schema.to_s }.to_json) - end - + data = get("/subjects/#{subject}/fingerprints/#{schema_object.sha256_fingerprint.to_s(16)}") id = data.fetch('id') - - @logger.info("#{registered ? 'Registered' : 'Found'} schema for subject `#{subject}`; id = #{id}") - + @logger.info("Found schema for subject `#{subject}`; id = #{id}") id end end end