Ich bin mir nicht sicher, ob das erwähnenswert ist, aber ich bin heute beim Parsen von Antworten von den create_topic- und edit_post-Methoden des Gems hängen geblieben.
create_topic ruft die post-Methode auf. Diese Methode gibt entweder response.body zurück oder löst einen DiscourseApi::Error aus:
def post(path, params = {})
response = request(:post, path, params)
case response.status
when 200, 201, 204
response.body
else
raise DiscourseApi::Error, response.body
end
end
edit_post ruft die put-Methode auf. Diese Methode gibt ein Faraday::Env-Objekt zurück:
#<struct Faraday::Env method=:put, request_body="post%5Braw%5D=It%27s+a+minor+thing%2C+but+it+comes+up+a+lot.+I%27ll+do+some+tests....
Für Anwendungen, die den Gem verwenden, bedeutet dies, dass die von post- und put-Anfragen zurückgegebenen Antworten unterschiedlich behandelt werden müssen. Um eine put-Anfrage zu bearbeiten, muss die Anwendung, die die Anfrage stellt, etwas tun, das dem ähnelt, was der API-Gem für post-Anfragen tut:
def update_topic_from_note(markdown:, post_id:)
response = @client.edit_post(post_id, markdown)
case response.status
when 200, 201, 204
response.body
else
# ...
Es ist nicht das Ende der Welt, aber es war überraschend. Ich weiß, dass es schwierig ist, Änderungen am API-Code vorzunehmen.