Skip to content

Commit

Permalink
docs: federated example (#412)
Browse files Browse the repository at this point in the history
  • Loading branch information
brucexc authored Oct 18, 2024
1 parent 50fc5a8 commit 3cce474
Show file tree
Hide file tree
Showing 6 changed files with 113 additions and 45 deletions.
106 changes: 62 additions & 44 deletions docs/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -1448,85 +1448,85 @@
"type": "object",
"anyOf": [
{
"$ref": "#/components/schemas/SocialPost"
"$ref": "#/components/schemas/TransactionApproval"
},
{
"$ref": "#/components/schemas/SocialShare"
"$ref": "#/components/schemas/TransactionBridge"
},
{
"$ref": "#/components/schemas/SocialMint"
"$ref": "#/components/schemas/TransactionTransfer"
},
{
"$ref": "#/components/schemas/SocialProfile"
"$ref": "#/components/schemas/TransactionBurn"
},
{
"$ref": "#/components/schemas/SocialProxy"
"$ref": "#/components/schemas/TransactionMint"
},
{
"$ref": "#/components/schemas/SocialComment"
"$ref": "#/components/schemas/CollectibleApproval"
},
{
"$ref": "#/components/schemas/SocialRevise"
"$ref": "#/components/schemas/CollectibleTrade"
},
{
"$ref": "#/components/schemas/SocialReward"
"$ref": "#/components/schemas/CollectibleTransfer"
},
{
"$ref": "#/components/schemas/SocialDelete"
"$ref": "#/components/schemas/CollectibleBurn"
},
{
"$ref": "#/components/schemas/MetaverseTrade"
"$ref": "#/components/schemas/CollectibleMint"
},
{
"$ref": "#/components/schemas/MetaverseBurn"
"$ref": "#/components/schemas/ExchangeStaking"
},
{
"$ref": "#/components/schemas/MetaverseMint"
"$ref": "#/components/schemas/ExchangeSwap"
},
{
"$ref": "#/components/schemas/MetaverseTransfer"
"$ref": "#/components/schemas/ExchangeLiquidity"
},
{
"$ref": "#/components/schemas/RssFeed"
"$ref": "#/components/schemas/SocialRevise"
},
{
"$ref": "#/components/schemas/TransactionMint"
"$ref": "#/components/schemas/SocialReward"
},
{
"$ref": "#/components/schemas/TransactionApproval"
"$ref": "#/components/schemas/SocialPost"
},
{
"$ref": "#/components/schemas/TransactionBridge"
"$ref": "#/components/schemas/SocialComment"
},
{
"$ref": "#/components/schemas/TransactionTransfer"
"$ref": "#/components/schemas/SocialShare"
},
{
"$ref": "#/components/schemas/TransactionBurn"
"$ref": "#/components/schemas/SocialDelete"
},
{
"$ref": "#/components/schemas/CollectibleBurn"
"$ref": "#/components/schemas/SocialMint"
},
{
"$ref": "#/components/schemas/CollectibleMint"
"$ref": "#/components/schemas/SocialProfile"
},
{
"$ref": "#/components/schemas/CollectibleApproval"
"$ref": "#/components/schemas/SocialProxy"
},
{
"$ref": "#/components/schemas/CollectibleTrade"
"$ref": "#/components/schemas/MetaverseTransfer"
},
{
"$ref": "#/components/schemas/CollectibleTransfer"
"$ref": "#/components/schemas/MetaverseTrade"
},
{
"$ref": "#/components/schemas/ExchangeLiquidity"
"$ref": "#/components/schemas/MetaverseBurn"
},
{
"$ref": "#/components/schemas/ExchangeStaking"
"$ref": "#/components/schemas/MetaverseMint"
},
{
"$ref": "#/components/schemas/ExchangeSwap"
"$ref": "#/components/schemas/RssFeed"
}
]
},
Expand Down Expand Up @@ -1637,18 +1637,36 @@
"tag": "social",
"type": "comment",
"platform": "Mastodon",
"from": "@[email protected]",
"to": "@[email protected]",
"from": "@[email protected]",
"to": "@[email protected]",
"metadata": {
"handle": "@[email protected]",
"body": "<p><span class=\"h-card\" translate=\"no\"><a href=\"https://bolha.us/@jedi\" class=\"u-url mention\">@<span>jedi</span></a></span> <span class=\"h-card\" translate=\"no\"><a href=\"https://kooapp.org/users/admin\" class=\"u-url mention\">@<span>admin</span></a></span> Com receio, fui lá e favoritei</p>",
"profile_id": "https://bolha.us/users/thime",
"publication_id": "https://bolha.us/users/thime/statuses/113221776800523794",
"timestamp": 1727627209,
"handle": "@[email protected]",
"body": "@ georgetakei ( https://universeodon.com/@georgetakei ) now hold on just a minute...\n\n# woof ( https://universeodon.com/tags/woof )",
"publication_id": "113324128515491294",
"tags": [
"@georgetakei",
"#woof"
],
"author_url": "https://universeodon.com/users/woofers",
"timestamp": 1729188972,
"target": {
"publication_id": "https://bolha.us/users/jedi/statuses/113221045780040329"
}
}
"handle": "@[email protected]",
"body": "Just a little treat.",
"media": [
{
"address": "https://media.universeodon.com/media_attachments/files/113/319/346/314/075/495/original/26e989bcf15840a6.png",
"mime_type": "image/png"
}
],
"publication_id": "113319346448373294",
"author_url": "https://universeodon.com/users/georgetakei",
"timestamp": 1729116004
},
"target_url": "https://universeodon.com/users/georgetakei/statuses/113319346448373294"
},
"related_urls": [
"https://universeodon.com/users/woofers/statuses/113324128515491294"
]
}
},
"ActivitiesResponse": {
Expand Down Expand Up @@ -1778,12 +1796,12 @@
"id": {
"description": "The unique identifier for the federated activity.",
"type": "string",
"example": "https://bolha.us/users/thime/statuses/113221776800523794/activity "
"example": "https://universeodon.com/users/woofers/statuses/113324128515491294/activity"
},
"owner": {
"description": "The owner of the federated activity.",
"type": "string",
"example": "[email protected]"
"example": "@[email protected]"
},
"network": {
"description": "The network of the federated activity.",
Expand All @@ -1793,12 +1811,12 @@
"from": {
"description": "The account from which the federated activity originated.",
"type": "string",
"example": "@[email protected]"
"example": "@[email protected]"
},
"to": {
"description": "The account to which the activity is directed.",
"type": "string",
"example": "@[email protected]"
"example": "@[email protected]"
},
"index": {
"description": "The index of the activity in the list.",
Expand All @@ -1823,7 +1841,7 @@
"type": {
"description": "The type of federated activity.",
"type": "string",
"example": "post",
"example": "comment",
"enum": [
"comment",
"post",
Expand All @@ -1836,7 +1854,7 @@
"timestamp": {
"description": "The timestamp of when the activity occurred.",
"type": "integer",
"example": 1718689727
"example": 1729188972
},
"total_actions": {
"description": "The total number of actions within the activity.",
Expand Down Expand Up @@ -5556,7 +5574,7 @@
},
"federated_activity_id_path": {
"description": "Retrieve details for the specified federated activity ID",
"example": "https://bolha.us/users/thime/statuses/113221776800523794/activity",
"example": "https://universeodon.com/users/woofers/statuses/113324128515491294/activity",
"in": "path",
"name": "id",
"required": true,
Expand Down
20 changes: 20 additions & 0 deletions internal/service/hub/handler/dsl/decentralized.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ func (d *DSL) GetDecentralizedActivity(c echo.Context) (err error) {

activity, err := d.distributor.DistributeData(c.Request().Context(), model.DistributorRequestActivity, model.ComponentDecentralized, request, c.QueryParams(), nil, nil)
if err != nil {
if errors.Is(err, errorx.ErrNoNodesAvailable) {
return errorx.BadRequestError(c, err)
}

zap.L().Error("distribute activity request error", zap.Error(err))

return errorx.InternalError(c)
Expand Down Expand Up @@ -87,6 +91,10 @@ func (d *DSL) GetDecentralizedAccountActivities(c echo.Context) (err error) {

activities, err := d.distributor.DistributeData(c.Request().Context(), model.DistributorRequestAccountActivities, model.ComponentDecentralized, request, c.QueryParams(), workers, networks)
if err != nil {
if errors.Is(err, errorx.ErrNoNodesAvailable) {
return errorx.BadRequestError(c, err)
}

zap.L().Error("distribute activities data error", zap.Error(err))

return errorx.InternalError(c)
Expand Down Expand Up @@ -130,6 +138,10 @@ func (d *DSL) BatchGetDecentralizedAccountsActivities(c echo.Context) (err error

activities, err := d.distributor.DistributeData(c.Request().Context(), model.DistributorRequestBatchAccountActivities, model.ComponentDecentralized, request, nil, workers, networks)
if err != nil {
if errors.Is(err, errorx.ErrNoNodesAvailable) {
return errorx.BadRequestError(c, err)
}

zap.L().Error("distribute batch activities data error", zap.Error(err))

return errorx.InternalError(c)
Expand Down Expand Up @@ -166,6 +178,10 @@ func (d *DSL) GetDecentralizedNetworkActivities(c echo.Context) (err error) {

activities, err := d.distributor.DistributeData(c.Request().Context(), model.DistributorRequestNetworkActivities, model.ComponentDecentralized, request, c.QueryParams(), workers, networks)
if err != nil {
if errors.Is(err, errorx.ErrNoNodesAvailable) {
return errorx.BadRequestError(c, err)
}

zap.L().Error("distribute network activities data error", zap.Error(err))

return errorx.InternalError(c)
Expand Down Expand Up @@ -202,6 +218,10 @@ func (d *DSL) GetDecentralizedPlatformActivities(c echo.Context) (err error) {

activities, err := d.distributor.DistributeData(c.Request().Context(), model.DistributorRequestPlatformActivities, model.ComponentDecentralized, request, c.QueryParams(), workers, networks)
if err != nil {
if errors.Is(err, errorx.ErrNoNodesAvailable) {
return errorx.BadRequestError(c, err)
}

zap.L().Error("distribute platform activities data error", zap.Error(err))

return errorx.InternalError(c)
Expand Down
3 changes: 2 additions & 1 deletion internal/service/hub/handler/dsl/distributor/distributor.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"github.com/rss3-network/global-indexer/internal/service/hub/handler/dsl/model"
"github.com/rss3-network/global-indexer/internal/service/hub/handler/dsl/router"
"github.com/rss3-network/global-indexer/internal/service/hub/model/dsl"
"github.com/rss3-network/global-indexer/internal/service/hub/model/errorx"
"go.uber.org/zap"
)

Expand Down Expand Up @@ -85,7 +86,7 @@ func (d *Distributor) DistributeData(ctx context.Context, requestType, component
}

if len(nodes) == 0 {
return nil, fmt.Errorf("no nodes available")
return nil, errorx.ErrNoNodesAvailable
}

nodeMap, err := d.generatePath(requestType, component, request, params, nodes)
Expand Down
21 changes: 21 additions & 0 deletions internal/service/hub/handler/dsl/federated.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dsl

import (
"errors"
"net/http"

"github.com/creasty/defaults"
Expand Down Expand Up @@ -31,6 +32,10 @@ func (d *DSL) GetFederatedActivity(c echo.Context) (err error) {

activity, err := d.distributor.DistributeData(c.Request().Context(), model.DistributorRequestActivity, model.ComponentFederated, request, c.QueryParams(), nil, nil)
if err != nil {
if errors.Is(err, errorx.ErrNoNodesAvailable) {
return errorx.BadRequestError(c, err)
}

zap.L().Error("distribute activity request error", zap.Error(err))

return errorx.InternalError(c)
Expand Down Expand Up @@ -62,6 +67,10 @@ func (d *DSL) GetFederatedAccountActivities(c echo.Context) (err error) {

activities, err := d.distributor.DistributeData(c.Request().Context(), model.DistributorRequestAccountActivities, model.ComponentFederated, request, c.QueryParams(), nil, nil)
if err != nil {
if errors.Is(err, errorx.ErrNoNodesAvailable) {
return errorx.BadRequestError(c, err)
}

zap.L().Error("distribute activities data error", zap.Error(err))

return errorx.InternalError(c)
Expand Down Expand Up @@ -96,6 +105,10 @@ func (d *DSL) BatchGetFederatedAccountsActivities(c echo.Context) (err error) {

activities, err := d.distributor.DistributeData(c.Request().Context(), model.DistributorRequestBatchAccountActivities, model.ComponentFederated, request, nil, nil, request.Network)
if err != nil {
if errors.Is(err, errorx.ErrNoNodesAvailable) {
return errorx.BadRequestError(c, err)
}

zap.L().Error("distribute batch activities data error", zap.Error(err))

return errorx.InternalError(c)
Expand Down Expand Up @@ -127,6 +140,10 @@ func (d *DSL) GetFederatedNetworkActivities(c echo.Context) (err error) {

activities, err := d.distributor.DistributeData(c.Request().Context(), model.DistributorRequestNetworkActivities, model.ComponentFederated, request, c.QueryParams(), nil, []string{request.Network})
if err != nil {
if errors.Is(err, errorx.ErrNoNodesAvailable) {
return errorx.BadRequestError(c, err)
}

zap.L().Error("distribute network activities data error", zap.Error(err))

return errorx.InternalError(c)
Expand Down Expand Up @@ -158,6 +175,10 @@ func (d *DSL) GetFederatedPlatformActivities(c echo.Context) (err error) {

activities, err := d.distributor.DistributeData(c.Request().Context(), model.DistributorRequestPlatformActivities, model.ComponentFederated, request, c.QueryParams(), nil, request.Network)
if err != nil {
if errors.Is(err, errorx.ErrNoNodesAvailable) {
return errorx.BadRequestError(c, err)
}

zap.L().Error("distribute platform activities data error", zap.Error(err))

return errorx.InternalError(c)
Expand Down
5 changes: 5 additions & 0 deletions internal/service/hub/handler/dsl/rss.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dsl

import (
"errors"
"net/http"

"github.com/labstack/echo/v4"
Expand All @@ -17,6 +18,10 @@ func (d *DSL) GetRSSHub(c echo.Context) error {
data, err := d.distributor.DistributeRSSHubData(c.Request().Context(), path, query)

if err != nil {
if errors.Is(err, errorx.ErrNoNodesAvailable) {
return errorx.BadRequestError(c, err)
}

zap.L().Error("distribute rss hub data error", zap.Error(err))

return errorx.InternalError(c)
Expand Down
3 changes: 3 additions & 0 deletions internal/service/hub/model/errorx/error.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package errorx

import (
"errors"
"fmt"
"net/http"

Expand All @@ -17,6 +18,8 @@ const (
ErrorCodeInternalError
)

var ErrNoNodesAvailable = errors.New("no nodes currently support this request in the network. Please wait for node data support or try again later")

type ErrorResponse struct {
Error string `json:"error"`
ErrorCode ErrorCode `json:"error_code"`
Expand Down

0 comments on commit 3cce474

Please sign in to comment.