demarches-normaliennes/app/services/rnf_service.rb

30 lines
696 B
Ruby
Raw Normal View History

2023-10-27 14:20:40 +02:00
class RNFService
include Dry::Monads[:result]
def call(rnf_id:)
result = API::Client.new.(url: "#{url}/#{rnf_id}", schema:)
case result
in Success(body:)
Success(body)
in Failure(code:, reason:) if code.in?(401..403)
Failure(API::Client::Error[:unauthorized, code, false, reason])
2024-03-29 12:20:04 +01:00
# 400 errors are due to invalid rfn code
# it cannot be fixed so we do not retry
in Failure(code: 400, reason:)
Failure(API::Client::Error[:bad_request, code, false, reason])
2023-10-27 14:20:40 +02:00
else
result
end
end
private
def schema
JSONSchemer.schema(Rails.root.join('app/schemas/rnf.json'))
end
def url
"#{API_RNF_URL}/api/foundations"
end
end