🏷️ Added MarshalJSON for Scopes domain

This commit is contained in:
Maxim Lebedev 2022-01-08 15:50:49 +05:00
parent a8ba34b905
commit 832a0be91a
Signed by: toby3d
GPG Key ID: 1F14E25B7C119FC5
2 changed files with 15 additions and 2 deletions

View File

@ -3,6 +3,7 @@ package domain
import ( import (
"errors" "errors"
"fmt" "fmt"
"sort"
"strconv" "strconv"
"strings" "strings"
) )
@ -133,6 +134,18 @@ func (s *Scopes) UnmarshalJSON(v []byte) error {
return nil return nil
} }
func (s Scopes) MarshalJSON() ([]byte, error) {
scopes := make([]string, len(s))
for i := range s {
scopes[i] = s[i].String()
}
sort.Strings(scopes)
return []byte(strconv.Quote(strings.Join(scopes, " "))), nil
}
// String returns scope slug as string. // String returns scope slug as string.
func (s Scope) String() string { func (s Scope) String() string {
return s.slug return s.slug

View File

@ -1,16 +1,16 @@
package domain_test package domain_test
import ( import (
"encoding/json"
"testing" "testing"
"github.com/goccy/go-json"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"source.toby3d.me/website/indieauth/internal/domain" "source.toby3d.me/website/indieauth/internal/domain"
) )
func TestScopesUnmarshalJSON(t *testing.T) { func TestScopes_UnmarshalJSON(t *testing.T) {
t.Parallel() t.Parallel()
result := &struct { result := &struct {