summaryrefslogtreecommitdiff
path: root/internal/typeutils
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2023-09-21 12:12:04 +0200
committerLibravatar GitHub <noreply@github.com>2023-09-21 12:12:04 +0200
commit183eaa5b298235acb8f25ba8f18b98e31471d965 (patch)
tree55f42887edeb5206122d92eb30e0eedf145a3615 /internal/typeutils
parent[docs] Add a note on cluster support (#2214) (diff)
downloadgotosocial-183eaa5b298235acb8f25ba8f18b98e31471d965.tar.xz
[feature] Implement explicit domain allows + allowlist federation mode (#2200)
* love like winter! wohoah, wohoah * domain allow side effects * tests! logging! unallow! * document federation modes * linty linterson * test * further adventures in documentation * finish up domain block documentation (i think) * change wording a wee little bit * docs, example * consolidate shared domainPermission code * call mode once * fetch federation mode within domain blocked func * read domain perm import in streaming manner * don't use pointer to slice for domain perms * don't bother copying blocks + allows before deleting * admonish! * change wording just a scooch * update docs
Diffstat (limited to 'internal/typeutils')
-rw-r--r--internal/typeutils/converter.go4
-rw-r--r--internal/typeutils/internaltofrontend.go37
2 files changed, 24 insertions, 17 deletions
diff --git a/internal/typeutils/converter.go b/internal/typeutils/converter.go
index 774b68157..af77734cc 100644
--- a/internal/typeutils/converter.go
+++ b/internal/typeutils/converter.go
@@ -91,8 +91,8 @@ type TypeConverter interface {
RelationshipToAPIRelationship(ctx context.Context, r *gtsmodel.Relationship) (*apimodel.Relationship, error)
// NotificationToAPINotification converts a gts notification into a api notification
NotificationToAPINotification(ctx context.Context, n *gtsmodel.Notification) (*apimodel.Notification, error)
- // DomainBlockToAPIDomainBlock converts a gts model domin block into a api domain block, for serving at /api/v1/admin/domain_blocks
- DomainBlockToAPIDomainBlock(ctx context.Context, b *gtsmodel.DomainBlock, export bool) (*apimodel.DomainBlock, error)
+ // DomainPermToAPIDomainPerm converts a gts model domin block or allow into an api domain permission.
+ DomainPermToAPIDomainPerm(ctx context.Context, d gtsmodel.DomainPermission, export bool) (*apimodel.DomainPermission, error)
// ReportToAPIReport converts a gts model report into an api model report, for serving at /api/v1/reports
ReportToAPIReport(ctx context.Context, r *gtsmodel.Report) (*apimodel.Report, error)
// ReportToAdminAPIReport converts a gts model report into an admin view report, for serving at /api/v1/admin/reports
diff --git a/internal/typeutils/internaltofrontend.go b/internal/typeutils/internaltofrontend.go
index 050997bda..11838e2bd 100644
--- a/internal/typeutils/internaltofrontend.go
+++ b/internal/typeutils/internaltofrontend.go
@@ -1041,32 +1041,39 @@ func (c *converter) NotificationToAPINotification(ctx context.Context, n *gtsmod
}, nil
}
-func (c *converter) DomainBlockToAPIDomainBlock(ctx context.Context, b *gtsmodel.DomainBlock, export bool) (*apimodel.DomainBlock, error) {
+func (c *converter) DomainPermToAPIDomainPerm(
+ ctx context.Context,
+ d gtsmodel.DomainPermission,
+ export bool,
+) (*apimodel.DomainPermission, error) {
// Domain may be in Punycode,
// de-punify it just in case.
- d, err := util.DePunify(b.Domain)
+ domain, err := util.DePunify(d.GetDomain())
if err != nil {
- return nil, fmt.Errorf("DomainBlockToAPIDomainBlock: error de-punifying domain %s: %w", b.Domain, err)
+ return nil, gtserror.Newf("error de-punifying domain %s: %w", d.GetDomain(), err)
}
- domainBlock := &apimodel.DomainBlock{
+ domainPerm := &apimodel.DomainPermission{
Domain: apimodel.Domain{
- Domain: d,
- PublicComment: b.PublicComment,
+ Domain: domain,
+ PublicComment: d.GetPublicComment(),
},
}
- // if we're exporting a domain block, return it with minimal information attached
- if !export {
- domainBlock.ID = b.ID
- domainBlock.Obfuscate = *b.Obfuscate
- domainBlock.PrivateComment = b.PrivateComment
- domainBlock.SubscriptionID = b.SubscriptionID
- domainBlock.CreatedBy = b.CreatedByAccountID
- domainBlock.CreatedAt = util.FormatISO8601(b.CreatedAt)
+ // If we're exporting, provide
+ // only bare minimum detail.
+ if export {
+ return domainPerm, nil
}
- return domainBlock, nil
+ domainPerm.ID = d.GetID()
+ domainPerm.Obfuscate = *d.GetObfuscate()
+ domainPerm.PrivateComment = d.GetPrivateComment()
+ domainPerm.SubscriptionID = d.GetSubscriptionID()
+ domainPerm.CreatedBy = d.GetCreatedByAccountID()
+ domainPerm.CreatedAt = util.FormatISO8601(d.GetCreatedAt())
+
+ return domainPerm, nil
}
func (c *converter) ReportToAPIReport(ctx context.Context, r *gtsmodel.Report) (*apimodel.Report, error) {