48 lines
1020 B
Go
48 lines
1020 B
Go
package events
|
|
|
|
import (
|
|
"net/url"
|
|
"strings"
|
|
)
|
|
|
|
// Image is a public photo already attached to a site post.
|
|
type Image struct {
|
|
URL string
|
|
Description string
|
|
}
|
|
|
|
// PostEvent is a Discord-free snapshot of a site post after a successful write.
|
|
type PostEvent struct {
|
|
PostID string
|
|
RootID string
|
|
ParentID string
|
|
Title string
|
|
Body string
|
|
City string
|
|
AuthorID string
|
|
AuthorName string
|
|
AuthorRole string
|
|
Images []Image
|
|
Permalink string
|
|
}
|
|
|
|
// PostCreated is emitted after a successful site create.
|
|
type PostCreated struct {
|
|
PostEvent
|
|
}
|
|
|
|
// PostUpdated is emitted after a successful site edit.
|
|
type PostUpdated struct {
|
|
PostEvent
|
|
}
|
|
|
|
// Permalink builds /questions/{root}#post-{id}, prefixed by baseURL when set.
|
|
func Permalink(baseURL, rootID, postID string) string {
|
|
path := "/questions/" + url.PathEscape(rootID) + "#post-" + url.PathEscape(postID)
|
|
base := strings.TrimRight(strings.TrimSpace(baseURL), "/")
|
|
if base == "" {
|
|
return path
|
|
}
|
|
return base + path
|
|
}
|