Skip to main content
Glama

Storyden

by Southclaws
Mozilla Public License 2.0
229
info.go3.65 kB
package bindings import ( "context" "github.com/Southclaws/dt" "github.com/Southclaws/fault" "github.com/Southclaws/fault/fctx" "github.com/Southclaws/storyden/app/resources/account/authentication" "github.com/Southclaws/storyden/app/services/branding/banner" "github.com/Southclaws/storyden/app/services/branding/icon" "github.com/Southclaws/storyden/app/services/system/instance_info" "github.com/Southclaws/storyden/app/transports/http/openapi" ) type Info struct { systemInfo *instance_info.Provider is icon.Service os banner.Service } func NewInfo(systemInfo *instance_info.Provider, is icon.Service, os banner.Service) Info { return Info{ systemInfo: systemInfo, is: is, os: os, } } func (i Info) GetInfo(ctx context.Context, request openapi.GetInfoRequestObject) (openapi.GetInfoResponseObject, error) { info, err := i.systemInfo.Get(ctx) if err != nil { return nil, fault.Wrap(err, fctx.With(ctx)) } return openapi.GetInfo200JSONResponse{ GetInfoOKJSONResponse: openapi.GetInfoOKJSONResponse(serialiseInfo(info)), }, nil } func (i Info) IconGet(ctx context.Context, request openapi.IconGetRequestObject) (openapi.IconGetResponseObject, error) { a, r, err := i.is.Get(ctx, string(request.IconSize)) if err != nil { return nil, fault.Wrap(err, fctx.With(ctx)) } return openapi.IconGet200AsteriskResponse{ AssetGetOKAsteriskResponse: openapi.AssetGetOKAsteriskResponse{ Body: r, ContentType: a.MIME.String(), ContentLength: int64(a.Size), Headers: openapi.AssetGetOKResponseHeaders{ CacheControl: "public, max-age=31536000", }, }, }, nil } func (i Info) IconUpload(ctx context.Context, request openapi.IconUploadRequestObject) (openapi.IconUploadResponseObject, error) { err := i.is.Upload(ctx, request.Body) if err != nil { return nil, fault.Wrap(err, fctx.With(ctx)) } return openapi.IconUpload200Response{}, nil } func (i Info) BannerGet(ctx context.Context, request openapi.BannerGetRequestObject) (openapi.BannerGetResponseObject, error) { a, r, err := i.os.Get(ctx) if err != nil { return nil, fault.Wrap(err, fctx.With(ctx)) } return openapi.BannerGet200AsteriskResponse{ AssetGetOKAsteriskResponse: openapi.AssetGetOKAsteriskResponse{ Body: r, ContentType: a.MIME.String(), ContentLength: int64(a.Size), Headers: openapi.AssetGetOKResponseHeaders{ CacheControl: "public, max-age=3600", }, }, }, nil } func (i Info) BannerUpload(ctx context.Context, request openapi.BannerUploadRequestObject) (openapi.BannerUploadResponseObject, error) { err := i.os.Upload(ctx, request.Body) if err != nil { return nil, fault.Wrap(err, fctx.With(ctx)) } return openapi.BannerUpload200Response{}, nil } func serialiseInfo(info *instance_info.Info) openapi.Info { return openapi.Info{ Title: info.Settings.Title.OrZero(), Description: info.Settings.Description.OrZero(), Content: info.Settings.Content.OrZero().HTML(), AccentColour: info.Settings.AccentColour.OrZero(), OnboardingStatus: openapi.OnboardingStatus(info.OnboardingStatus.String()), AuthenticationMode: openapi.AuthMode(info.Settings.AuthenticationMode.Or(authentication.ModeHandle).String()), Capabilities: serialiseCapabilitiesList(info.Capabilities), Metadata: (*openapi.Metadata)(info.Settings.Metadata.Ptr()), } } func serialiseCapabilitiesList(cs instance_info.Capabilities) openapi.InstanceCapabilityList { return dt.Map(cs, func(c instance_info.Capability) openapi.InstanceCapability { return openapi.InstanceCapability(c.String()) }) }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Southclaws/storyden'

If you have feedback or need assistance with the MCP directory API, please join our Discord server