refactor(workspace): 🎨 improve code structure

master
Xeronith 2022-09-16 23:15:35 +04:30
rodzic 17606adf7a
commit 9bd7c11305
5 zmienionych plików z 50 dodań i 18 usunięć

Wyświetl plik

@ -22,18 +22,18 @@ var Followers = route.New(HttpGet, "/u/:username/followers", func(x IContext) er
}
if username.IsFederated() {
webfinger := activitypub.Webfinger{}
if err := x.GetActivityStream(username.Webfinger(), nil, &webfinger); err != nil {
webfinger, err := x.GetWebFinger(username)
if err != nil {
return x.InternalServerError(err)
}
actor := activitypub.Actor{}
if err := x.GetActivityStream(webfinger.Self(), nil, &actor); err != nil {
actor, err := x.GetActor(webfinger)
if err != nil {
return x.InternalServerError(err)
}
followers := activitypub.OrderedCollection{}
if err := x.GetActivityStream(actor.Followers, nil, &followers); err != nil {
followers, err := x.GetOrderedCollection(actor.Followers)
if err != nil {
return x.InternalServerError(err)
}

Wyświetl plik

@ -17,18 +17,18 @@ var Following = route.New(HttpGet, "/u/:username/following", func(x IContext) er
}
if username.IsFederated() {
webfinger := activitypub.Webfinger{}
if err := x.GetActivityStream(username.Webfinger(), nil, &webfinger); err != nil {
webfinger, err := x.GetWebFinger(username)
if err != nil {
return x.InternalServerError(err)
}
actor := activitypub.Actor{}
if err := x.GetActivityStream(webfinger.Self(), nil, &actor); err != nil {
actor, err := x.GetActor(webfinger)
if err != nil {
return x.InternalServerError(err)
}
following := activitypub.OrderedCollection{}
if err := x.GetActivityStream(actor.Following, nil, &following); err != nil {
following, err := x.GetOrderedCollection(actor.Following)
if err != nil {
return x.InternalServerError(err)
}

Wyświetl plik

@ -1,7 +1,6 @@
package routes
import (
"activitypub"
"app/models/domain"
"app/models/repos"
"config"
@ -19,13 +18,13 @@ var User = route.New(contracts.HttpGet, "/u/:username", func(x contracts.IContex
}
if username.IsFederated() {
webfinger := activitypub.Webfinger{}
if err := x.GetActivityStream(username.Webfinger(), nil, &webfinger); err != nil {
webfinger, err := x.GetWebFinger(username)
if err != nil {
return x.InternalServerError(err)
}
actor := activitypub.Actor{}
if err := x.GetActivityStream(webfinger.Self(), nil, &actor); err != nil {
actor, err := x.GetActor(webfinger)
if err != nil {
return x.InternalServerError(err)
}

Wyświetl plik

@ -1,6 +1,10 @@
package contracts
import "mime/multipart"
import (
"activitypub"
"app/models/domain"
"mime/multipart"
)
type (
IContext interface {
@ -28,6 +32,10 @@ type (
GetActivityStreamSigned(url, keyId, privateKey string, data []byte, output interface{}) error
PostActivityStreamSigned(url, keyId, privateKey string, data []byte, output interface{}) error
GetWebFinger(username domain.Username) (activitypub.Webfinger, error)
GetActor(activitypub.Webfinger) (activitypub.Actor, error)
GetOrderedCollection(url string) (activitypub.OrderedCollection, error)
BadRequest(interface{}, ...any) IServerError
NotFound(interface{}, ...any) IServerError
InternalServerError(interface{}, ...any) IServerError

Wyświetl plik

@ -1,6 +1,8 @@
package server
import (
"activitypub"
"app/models/domain"
"bytes"
"config"
. "contracts"
@ -235,3 +237,26 @@ func (context *httpServerContext) GetActivityStreamSigned(url, keyId, privateKey
func (context *httpServerContext) PostActivityStreamSigned(url, keyId, privateKey string, data []byte, output interface{}) error {
return context.requestActivityStream(http.MethodPost, url, keyId, privateKey, data, output)
}
func (context *httpServerContext) GetWebFinger(username domain.Username) (activitypub.Webfinger, error) {
result, err := context.GetObject(username.Webfinger(), &activitypub.Webfinger{})
return result.(activitypub.Webfinger), err
}
func (context *httpServerContext) GetActor(webfinger activitypub.Webfinger) (activitypub.Actor, error) {
result, err := context.GetObject(webfinger.Self(), &activitypub.Actor{})
return result.(activitypub.Actor), err
}
func (context *httpServerContext) GetOrderedCollection(url string) (activitypub.OrderedCollection, error) {
result, err := context.GetObject(url, &activitypub.OrderedCollection{})
return result.(activitypub.OrderedCollection), err
}
func (context *httpServerContext) GetObject(url string, result interface{}) (interface{}, error) {
if err := context.GetActivityStream(url, nil, &result); err != nil {
return result, err
}
return result, nil
}