J’ai en fait réussi à le résoudre
Il semble qu’ils aient mis à jour le code pour générer une erreur si aucun utilisateur n’est trouvé, j’ai donc dû utiliser rescue au lieu de comparer si nil ?
begin
resp = client.get("/users/by-external/#{user.id}")
rescue DiscourseApi::NotFoundError => error
puts error.response.body['errors'].first
sync_user(user)
else
resp.response.env.body['user']
end
De plus, la réponse a changé de
resp['body']['user']
à
resp.response.env.body['user']
Mon dernier problème restant est que lorsque j’appelle client.sync_sso, j’obtiens maintenant une erreur interne du serveur 500
Les journaux indiquent
ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "user_emails_pkey"
Cependant, si j’utilise les mêmes détails dans le terminal Rails et que j’exécute client.sync_sso, cela fonctionne parfaitement.
Juste pour information, je n’ai pas modifié le point de terminaison pour que les parties ci-dessus recommencent à fonctionner, il semble donc que /users/by-external/ soit toujours valide.