FEATURE: Add topic and category context to post webhook payload (#8110)

Adds additional fields topic_archetype and category_slug to the post
webhook so that handlers have some context about the post event without
having to call back to the API.

Discussed [here](https://meta.discourse.org/t/webhooks-how-best-to-differentiate-a-pm-from-a-public-post/76363/13).
This commit is contained in:
Ryan Boder 2019-10-01 21:41:33 -04:00 committed by Sam
parent 3ee6e859ec
commit b7ebe574df
2 changed files with 16 additions and 2 deletions

View File

@ -2,7 +2,9 @@
class WebHookPostSerializer < PostSerializer
attributes :topic_posts_count
attributes :topic_posts_count,
:topic_archetype,
:category_slug
def include_topic_title?
true
@ -32,6 +34,18 @@ class WebHookPostSerializer < PostSerializer
object.topic ? object.topic.posts_count : 0
end
def topic_archetype
object.topic ? object.topic.archetype : ''
end
def include_category_slug?
object.topic && object.topic.category
end
def category_slug
object.topic && object.topic.category ? object.topic.category.slug_for_url : ''
end
def include_readers_count?
false
end

View File

@ -12,7 +12,7 @@ RSpec.describe WebHookPostSerializer do
it 'should only include the required keys' do
count = serialized_for_user(admin).keys.count
difference = count - 36
difference = count - 38
expect(difference).to eq(0), lambda {
message = +""