summaryrefslogtreecommitdiff
path: root/internal/typeutils/internaltofrontend.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2022-06-26 10:58:45 +0200
committerLibravatar GitHub <noreply@github.com>2022-06-26 10:58:45 +0200
commit68736efd2039317b2ca80ccacfb683580da63379 (patch)
tree5a3e1a69dbfd74cdb6f103d2bc55fc45700690eb /internal/typeutils/internaltofrontend.go
parent[bugfix] disallow following or blocking yoursel (#667) (diff)
downloadgotosocial-68736efd2039317b2ca80ccacfb683580da63379.tar.xz
[feature] add configuration to `/api/v1/instance` response (#670)
* add configuration object to api instance model * regenerate swagger docs * add func to return all supported mimes for media * add instance configuration to api serialization * fix json tags * update instance endpoint tests * fix typeutils tests * final regen of swagger docs * omitempty instance configuration
Diffstat (limited to 'internal/typeutils/internaltofrontend.go')
-rw-r--r--internal/typeutils/internaltofrontend.go26
1 files changed, 25 insertions, 1 deletions
diff --git a/internal/typeutils/internaltofrontend.go b/internal/typeutils/internaltofrontend.go
index 774739d85..eb4bcf70d 100644
--- a/internal/typeutils/internaltofrontend.go
+++ b/internal/typeutils/internaltofrontend.go
@@ -29,6 +29,7 @@ import (
"github.com/superseriousbusiness/gotosocial/internal/config"
"github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
+ "github.com/superseriousbusiness/gotosocial/internal/media"
"github.com/superseriousbusiness/gotosocial/internal/util"
)
@@ -595,9 +596,32 @@ func (c *converter) InstanceToAPIInstance(ctx context.Context, i *gtsmodel.Insta
mi.InvitesEnabled = false // TODO
mi.MaxTootChars = uint(config.GetStatusesMaxChars())
mi.URLS = &model.InstanceURLs{
- StreamingAPI: fmt.Sprintf("wss://%s", host),
+ StreamingAPI: "wss://" + host,
}
mi.Version = config.GetSoftwareVersion()
+
+ // todo: remove hardcoded values and put them in config somewhere
+ mi.Configuration = &model.InstanceConfiguration{
+ Statuses: &model.InstanceConfigurationStatuses{
+ MaxCharacters: config.GetStatusesMaxChars(),
+ MaxMediaAttachments: config.GetStatusesMediaMaxFiles(),
+ CharactersReservedPerURL: 999,
+ },
+ MediaAttachments: &model.InstanceConfigurationMediaAttachments{
+ SupportedMimeTypes: media.AllSupportedMIMETypes(),
+ ImageSizeLimit: config.GetMediaImageMaxSize(),
+ ImageMatrixLimit: 16777216, // height*width
+ VideoSizeLimit: config.GetMediaVideoMaxSize(),
+ VideoFrameRateLimit: 60,
+ VideoMatrixLimit: 16777216, // height*width
+ },
+ Polls: &model.InstanceConfigurationPolls{
+ MaxOptions: config.GetStatusesPollMaxOptions(),
+ MaxCharactersPerOption: config.GetStatusesPollOptionMaxChars(),
+ MinExpiration: 300, // seconds
+ MaxExpiration: 2629746, // seconds
+ },
+ }
}
// get the instance account if it exists and just skip if it doesn't