mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-10-28 06:22:26 -05:00
[feature] Add fields introduced in Mastodon 4.4.0 to /api/v2/instance response (#4240)
# Description ## Checklist - [x] I/we have read the [GoToSocial contribution guidelines](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/CONTRIBUTING.md). - [ ] I/we have discussed the proposed changes already, either in an issue on the repository, or in the Matrix chat. - [x] I/we have not leveraged AI to create the proposed changes. - [x] I/we have performed a self-review of added code. - [x] I/we have written code that is legible and maintainable by others. - [ ] I/we have commented the added code, particularly in hard-to-understand areas. - [x] I/we have made any necessary changes to documentation. - [ ] I/we have added tests that cover new code. - [ ] I/we have run tests and they pass locally with the changes. - [x] I/we have run `go fmt ./...` and `golangci-lint run`. Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4240 Co-authored-by: nicole mikołajczyk <git@mkljczk.pl> Co-committed-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
parent
32738d83a8
commit
01e3765268
4 changed files with 58 additions and 2 deletions
|
|
@ -2108,6 +2108,20 @@ definitions:
|
||||||
example: <p>Registrations are currently closed on example.org because of spam bots!</p>
|
example: <p>Registrations are currently closed on example.org because of spam bots!</p>
|
||||||
type: string
|
type: string
|
||||||
x-go-name: Message
|
x-go-name: Message
|
||||||
|
min_age:
|
||||||
|
description: |-
|
||||||
|
A minimum age required to register, if configured.
|
||||||
|
Currently not implemented: will always be null.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
x-go-name: MinAge
|
||||||
|
reason_required:
|
||||||
|
description: |-
|
||||||
|
Whether registrations require the user to provide a reason for joining.
|
||||||
|
Only applicable when ApprovalRequired is true.
|
||||||
|
example: true
|
||||||
|
type: boolean
|
||||||
|
x-go-name: ReasonRequired
|
||||||
title: Information about registering for this instance.
|
title: Information about registering for this instance.
|
||||||
type: object
|
type: object
|
||||||
x-go-name: InstanceV2Registrations
|
x-go-name: InstanceV2Registrations
|
||||||
|
|
@ -2178,11 +2192,26 @@ definitions:
|
||||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||||
instanceV2URLs:
|
instanceV2URLs:
|
||||||
properties:
|
properties:
|
||||||
|
about:
|
||||||
|
description: Address of the server about page.
|
||||||
|
example: https://example.org/about
|
||||||
|
type: string
|
||||||
|
x-go-name: About
|
||||||
|
privacy_policy:
|
||||||
|
description: Address of the server privacy policy, if any.
|
||||||
|
example: https://example.org/about#rules
|
||||||
|
type: string
|
||||||
|
x-go-name: PrivacyPolicy
|
||||||
streaming:
|
streaming:
|
||||||
description: Websockets address for status and notification streaming.
|
description: Websockets address for status and notification streaming.
|
||||||
example: wss://example.org
|
example: wss://example.org
|
||||||
type: string
|
type: string
|
||||||
x-go-name: Streaming
|
x-go-name: Streaming
|
||||||
|
terms_of_service:
|
||||||
|
description: Address of the server current terms of service, if any.
|
||||||
|
example: https://example.org/about#privacy_policy
|
||||||
|
type: string
|
||||||
|
x-go-name: TermsOfService
|
||||||
title: InstanceV2URLs models instance-relevant URLs for client application consumption.
|
title: InstanceV2URLs models instance-relevant URLs for client application consumption.
|
||||||
type: object
|
type: object
|
||||||
x-go-name: InstanceV2URLs
|
x-go-name: InstanceV2URLs
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,15 @@ type InstanceV2URLs struct {
|
||||||
// Websockets address for status and notification streaming.
|
// Websockets address for status and notification streaming.
|
||||||
// example: wss://example.org
|
// example: wss://example.org
|
||||||
Streaming string `json:"streaming"`
|
Streaming string `json:"streaming"`
|
||||||
|
// Address of the server about page.
|
||||||
|
// example: https://example.org/about
|
||||||
|
About string `json:"about"`
|
||||||
|
// Address of the server privacy policy, if any.
|
||||||
|
// example: https://example.org/about#rules
|
||||||
|
PrivacyPolicy *string `json:"privacy_policy"`
|
||||||
|
// Address of the server current terms of service, if any.
|
||||||
|
// example: https://example.org/about#privacy_policy
|
||||||
|
TermsOfService *string `json:"terms_of_service"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hints related to translation.
|
// Hints related to translation.
|
||||||
|
|
@ -199,6 +208,13 @@ type InstanceV2Registrations struct {
|
||||||
// Value will be null if no message is set.
|
// Value will be null if no message is set.
|
||||||
// example: <p>Registrations are currently closed on example.org because of spam bots!</p>
|
// example: <p>Registrations are currently closed on example.org because of spam bots!</p>
|
||||||
Message *string `json:"message"`
|
Message *string `json:"message"`
|
||||||
|
// A minimum age required to register, if configured.
|
||||||
|
// Currently not implemented: will always be null.
|
||||||
|
MinAge *int `json:"min_age"`
|
||||||
|
// Whether registrations require the user to provide a reason for joining.
|
||||||
|
// Only applicable when ApprovalRequired is true.
|
||||||
|
// example: true
|
||||||
|
ReasonRequired bool `json:"reason_required"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hints related to contacting a representative of the instance.
|
// Hints related to contacting a representative of the instance.
|
||||||
|
|
|
||||||
|
|
@ -1889,8 +1889,12 @@ func (c *Converter) InstanceToAPIV2Instance(ctx context.Context, i *gtsmodel.Ins
|
||||||
|
|
||||||
instance.Thumbnail = thumbnail
|
instance.Thumbnail = thumbnail
|
||||||
|
|
||||||
|
termsOfService := config.GetProtocol() + "://" + i.Domain + "/about#rules"
|
||||||
|
|
||||||
// configuration
|
// configuration
|
||||||
instance.Configuration.URLs.Streaming = "wss://" + i.Domain
|
instance.Configuration.URLs.Streaming = "wss://" + i.Domain
|
||||||
|
instance.Configuration.URLs.About = config.GetProtocol() + "://" + i.Domain + "/about"
|
||||||
|
instance.Configuration.URLs.TermsOfService = &termsOfService
|
||||||
instance.Configuration.Statuses.MaxCharacters = config.GetStatusesMaxChars()
|
instance.Configuration.Statuses.MaxCharacters = config.GetStatusesMaxChars()
|
||||||
instance.Configuration.Statuses.MaxMediaAttachments = config.GetStatusesMediaMaxFiles()
|
instance.Configuration.Statuses.MaxMediaAttachments = config.GetStatusesMediaMaxFiles()
|
||||||
instance.Configuration.Statuses.CharactersReservedPerURL = instanceStatusesCharactersReservedPerURL
|
instance.Configuration.Statuses.CharactersReservedPerURL = instanceStatusesCharactersReservedPerURL
|
||||||
|
|
@ -1936,6 +1940,8 @@ func (c *Converter) InstanceToAPIV2Instance(ctx context.Context, i *gtsmodel.Ins
|
||||||
instance.Registrations.Enabled = config.GetAccountsRegistrationOpen()
|
instance.Registrations.Enabled = config.GetAccountsRegistrationOpen()
|
||||||
instance.Registrations.ApprovalRequired = true // always required
|
instance.Registrations.ApprovalRequired = true // always required
|
||||||
instance.Registrations.Message = nil // todo: not implemented
|
instance.Registrations.Message = nil // todo: not implemented
|
||||||
|
instance.Registrations.MinAge = nil // not implemented
|
||||||
|
instance.Registrations.ReasonRequired = config.GetAccountsReasonRequired()
|
||||||
|
|
||||||
// contact
|
// contact
|
||||||
instance.Contact.Email = i.ContactEmail
|
instance.Contact.Email = i.ContactEmail
|
||||||
|
|
|
||||||
|
|
@ -2521,7 +2521,10 @@ func (suite *InternalToFrontendTestSuite) TestInstanceV2ToFrontend() {
|
||||||
],
|
],
|
||||||
"configuration": {
|
"configuration": {
|
||||||
"urls": {
|
"urls": {
|
||||||
"streaming": "wss://localhost:8080"
|
"streaming": "wss://localhost:8080",
|
||||||
|
"about": "http://localhost:8080/about",
|
||||||
|
"privacy_policy": null,
|
||||||
|
"terms_of_service": "http://localhost:8080/about#rules"
|
||||||
},
|
},
|
||||||
"accounts": {
|
"accounts": {
|
||||||
"allow_custom_css": true,
|
"allow_custom_css": true,
|
||||||
|
|
@ -2587,7 +2590,9 @@ func (suite *InternalToFrontendTestSuite) TestInstanceV2ToFrontend() {
|
||||||
"registrations": {
|
"registrations": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"approval_required": true,
|
"approval_required": true,
|
||||||
"message": null
|
"message": null,
|
||||||
|
"min_age": null,
|
||||||
|
"reason_required": true
|
||||||
},
|
},
|
||||||
"contact": {
|
"contact": {
|
||||||
"email": "admin@example.org",
|
"email": "admin@example.org",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue