kopia lustrzana https://github.com/reiver/greatape
refactor(workspace): 🎨 improve code structure
rodzic
17606adf7a
commit
9bd7c11305
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue