Files
minio/docs/investigations/issue-77/review/wire-state-probe.go.txt
T
2026-09-12 17:52:25 +08:00

25 lines
989 B
Plaintext

package main
import (
"bytes"
"encoding/json"
"fmt"
"github.com/minio/madmin-go/v3"
"github.com/pgsty/silo-pkg/v3/policy"
)
func main() {
for _, raw := range []string{`{"bucket":"b"}`, `{"bucket":"b","policy":null,"quota":null}`, `{"bucket":"b","policy":{"Version":"2012-10-17","Statement":[]},"quota":{}}`} {
var x madmin.SRBucketMeta
if err:=json.Unmarshal([]byte(raw),&x);err!=nil{panic(err)}
fmt.Printf("wire=%s\nPolicy nil=%t bytes=%q; Quota nil=%t bytes=%q\n",raw,x.Policy==nil,[]byte(x.Policy),x.Quota==nil,[]byte(x.Quota))
if len(x.Policy)>0 && !bytes.Equal(x.Policy,[]byte("null")) {
p,err:=policy.ParseBucketPolicyConfig(bytes.NewReader(x.Policy),"b")
if err!=nil{panic(err)}
fmt.Printf("Policy parses successfully, IsEmpty=%t\n",p.IsEmpty())
}
}
for _, v := range []json.RawMessage{nil,{},[]byte("null")} {
b,err:=json.Marshal(madmin.SRBucketMeta{Bucket:"b",Policy:v});if err!=nil{panic(err)}
fmt.Printf("encoded raw=%q -> %s\n",[]byte(v),b)
}
}