52 lines
1.1 KiB
Ruby
52 lines
1.1 KiB
Ruby
require 'json_schemer'
|
|
|
|
class APIEntreprise::RNAAdapter < APIEntreprise::Adapter
|
|
class InvalidSchemaError < ::StandardError
|
|
def initialize(errors)
|
|
super(errors.map(&:to_json).join("\n"))
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def get_resource
|
|
api(@procedure_id).rna(@siret)
|
|
end
|
|
|
|
def process_params
|
|
params = data_source[:association]
|
|
return {} if params.nil?
|
|
|
|
Sentry.with_scope do |scope|
|
|
scope.set_tags(siret: @siret)
|
|
scope.set_extras(source: params)
|
|
|
|
params = params.slice(*attr_to_fetch) if @depreciated
|
|
params[:rna] = data_source.dig(:association, :id)
|
|
|
|
if params[:rna].present? && valid_params?(params)
|
|
params = params.transform_keys { |k| :"association_#{k}" }.deep_stringify_keys
|
|
|
|
raise InvalidSchemaError.new(schemer.validate(params).to_a) unless schemer.valid?(params)
|
|
|
|
params
|
|
else
|
|
{}
|
|
end
|
|
end
|
|
end
|
|
|
|
def schemer
|
|
@schemer ||= JSONSchemer.schema(Rails.root.join('app/schemas/association.json'))
|
|
end
|
|
|
|
def attr_to_fetch
|
|
[
|
|
:titre,
|
|
:objet,
|
|
:date_creation,
|
|
:date_declaration,
|
|
:date_publication
|
|
]
|
|
end
|
|
end
|