package federation // // GangGo Federation Library // Copyright (C) 2017-2018 Lukas Matt // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // import ( "crypto/rsa" "git.feneas.org/ganggo/federation/helpers" "time" "fmt" ) type ActivityPubCreateComment struct { ActivityPubCreate } func (e *ActivityPubCreateComment) Type() MessageType { return MessageType{ Proto: ActivityPubProtocol, Entity: Comment, } } func (e *ActivityPubCreateComment) SetAuthor(author string) { username, err := helpers.ParseHandle(author) if err != nil { (*e).Actor = author } else { (*e).Actor = fmt.Sprintf(config.ApURLFormat, fmt.Sprintf("user/%s", username)) } if len(e.To) == 0 { (*e).To = []string{ACTIVITY_STREAMS_PUBLIC} (*e).Object.To = e.To (*e).Cc = []string{e.Actor + "/followers"} (*e).Object.Cc = (*e).Cc } (*e).Actor = e.Actor + "/actor" (*e).Object.Actor = e.Actor } func (e *ActivityPubCreateComment) Guid() string { return helpers.LinkToGuid(e.Object.Id) } func (e *ActivityPubCreateComment) SetGuid(guid string) { link, err := helpers.GuidToLink(guid) if err != nil { (*e).Object.Id = fmt.Sprintf(config.GuidURLFormat, guid) } else { (*e).Object.Id = link } (*e).Id = e.Object.Id + "#create" } func (e *ActivityPubCreateComment) Parent() string { parts, err := helpers.ParseStringHelper(e.Object.InReplyTo, config.GuidURLRegExp(), 1) if err != nil { Log.Info(err) return helpers.LinkToGuid(e.Object.InReplyTo) } return parts[1] } func (e *ActivityPubCreateComment) SetParent(guid string) { link, err := helpers.GuidToLink(guid) if err == nil { (*e).Object.InReplyTo = link } else { (*e).Object.InReplyTo = fmt.Sprintf(config.GuidURLFormat, guid) } (*e).Object.Url = e.Object.InReplyTo } func (e *ActivityPubCreateComment) Signature() string { return "" } func (e *ActivityPubCreateComment) SetSignature(priv *rsa.PrivateKey) error { return nil } func (e *ActivityPubCreateComment) SignatureOrder() string { return "" } func (e *ActivityPubCreateComment) CreatedAt() helpers.Time { return e.Object.Published } func (e *ActivityPubCreateComment) SetCreatedAt(createdAt time.Time) { e.Published.New(createdAt) e.Object.Published.New(createdAt) } func (e *ActivityPubCreateComment) Text() string { return e.Object.Content } func (e *ActivityPubCreateComment) SetText(text string) { (*e).Object.Content = text }