Du numéro de post à l'ID de post

J’avais désespérément besoin de cette même fonctionnalité il y a deux ans. Je n’ai toujours pas trouvé comment le faire (mieux) correctement. Voici mon astuce :

def get_topic_post(topic_id, post_num)
    topic = @api.topic(topic_id, {print: true})
    post_obj = topic['post_stream']['posts'].find { |p| p['post_number'] == post_num }
    if post_obj
        post_obj['id']
    else
        throw "Could not find post #{topic_id}/#{post_num}."
    end
end

Cela contourne les problèmes mentionnés : {print: true} résout le problème de pagination. La méthode find est nécessaire car la modération peut créer un décalage entre les indices du tableau et les numéros de message.

Cela fonctionne pour les sujets de la taille sur laquelle je travaille. Cependant, une méthode plus directe via l’API serait plus satisfaisante.