Activity Pub Implementation #58
|
@ -156,6 +156,29 @@ func (svc *ActivityPubService) HashtagId(hashtag string) string {
|
||||||
return cfg.FullUrl + "/tags/" + strings.ReplaceAll(hashtag, "#", "")
|
return cfg.FullUrl + "/tags/" + strings.ReplaceAll(hashtag, "#", "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (svc *ActivityPubService) ActorName() string {
|
||||||
|
cfg, _ := svc.siteConfigServcie.GetSiteConfig()
|
||||||
|
return cfg.Title
|
||||||
|
}
|
||||||
|
|
||||||
|
func (svc *ActivityPubService) ActorIcon() vocab.Image {
|
||||||
|
cfg, _ := svc.siteConfigServcie.GetSiteConfig()
|
||||||
|
u := cfg.AvatarUrl
|
||||||
|
pUrl, _ := url.Parse(u)
|
||||||
|
parts := strings.Split(pUrl.Path, ".")
|
||||||
|
fullUrl, _ := url.JoinPath(cfg.FullUrl, u)
|
||||||
|
return vocab.Image{
|
||||||
|
Type: vocab.ImageType,
|
||||||
|
MediaType: vocab.MimeType("image/" + parts[len(parts)-1]),
|
||||||
|
URL: vocab.IRI(fullUrl),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (svc *ActivityPubService) ActorSummary() string {
|
||||||
|
cfg, _ := svc.siteConfigServcie.GetSiteConfig()
|
||||||
|
return cfg.SubTitle
|
||||||
|
}
|
||||||
|
|
||||||
func (s *ActivityPubService) AddFollower(follower string) error {
|
func (s *ActivityPubService) AddFollower(follower string) error {
|
||||||
return s.followersRepo.Add(follower)
|
return s.followersRepo.Add(follower)
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,15 +74,16 @@ func (s *ActivityPubServer) HandleWebfinger(ctx *fiber.Ctx) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *ActivityPubServer) Router(router fiber.Router) {
|
func (s *ActivityPubServer) Router(router fiber.Router) {
|
||||||
// router.Get("/actor", s.HandleActor)
|
|
||||||
router.Get("/outbox", s.HandleOutbox)
|
router.Get("/outbox", s.HandleOutbox)
|
||||||
router.Post("/inbox", s.HandleInbox)
|
router.Post("/inbox", s.HandleInbox)
|
||||||
router.Get("/followers", s.HandleFollowers)
|
router.Get("/followers", s.HandleFollowers)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *ActivityPubServer) HandleActor(ctx *fiber.Ctx) error {
|
func (s *ActivityPubServer) HandleActor(ctx *fiber.Ctx) error {
|
||||||
accepts := strings.Contains(string(ctx.Request().Header.Peek("Accept")), "application/activity+json")
|
accepts := (strings.Contains(string(ctx.Request().Header.Peek("Accept")), "application/activity+json") ||
|
||||||
req_content := strings.Contains(string(ctx.Request().Header.Peek("Content-Type")), "application/activity+json")
|
strings.Contains(string(ctx.Request().Header.Peek("Accept")), "application/ld+json"))
|
||||||
|
req_content := (strings.Contains(string(ctx.Request().Header.Peek("Content-Type")), "application/activity+json") ||
|
||||||
|
strings.Contains(string(ctx.Request().Header.Peek("Content-Type")), "application/ld+json"))
|
||||||
if !accepts && !req_content {
|
if !accepts && !req_content {
|
||||||
return ctx.Next()
|
return ctx.Next()
|
||||||
}
|
}
|
||||||
|
@ -98,6 +99,11 @@ func (s *ActivityPubServer) HandleActor(ctx *fiber.Ctx) error {
|
||||||
Owner: vocab.IRI(s.apService.ActorUrl()),
|
Owner: vocab.IRI(s.apService.ActorUrl()),
|
||||||
PublicKeyPem: apConfig.PublicKeyPem,
|
PublicKeyPem: apConfig.PublicKeyPem,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
actor.Name = vocab.NaturalLanguageValues{{Value: vocab.Content(s.apService.ActorName())}}
|
||||||
|
actor.Icon = s.apService.ActorIcon()
|
||||||
|
actor.Summary = vocab.NaturalLanguageValues{{Value: vocab.Content(s.apService.ActorSummary())}}
|
||||||
|
|
||||||
data, err := jsonld.WithContext(
|
data, err := jsonld.WithContext(
|
||||||
jsonld.IRI(vocab.ActivityBaseURI),
|
jsonld.IRI(vocab.ActivityBaseURI),
|
||||||
jsonld.IRI(vocab.SecurityContextURI),
|
jsonld.IRI(vocab.SecurityContextURI),
|
||||||
|
|
Loading…
Reference in New Issue