fix: strip HTML tags when displaying account info

This commit is contained in:
Dan Anglin 2024-02-22 14:57:17 +00:00
parent 0471ac817f
commit 70fc1acc68
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
2 changed files with 24 additions and 4 deletions

View file

@ -4,9 +4,11 @@ import (
"errors" "errors"
"flag" "flag"
"fmt" "fmt"
"strings"
"codeflow.dananglin.me.uk/apollo/enbas/internal/client" "codeflow.dananglin.me.uk/apollo/enbas/internal/client"
"codeflow.dananglin.me.uk/apollo/enbas/internal/config" "codeflow.dananglin.me.uk/apollo/enbas/internal/config"
"golang.org/x/net/html"
) )
var instanceDetailsFormat = `INSTANCE: var instanceDetailsFormat = `INSTANCE:
@ -134,7 +136,7 @@ func (c *showCommand) showAccount(gts *client.Client) error {
metadata := "" metadata := ""
for _, field := range account.Fields { for _, field := range account.Fields {
metadata += fmt.Sprintf("\n %s: %s", field.Name, field.Value) metadata += fmt.Sprintf("\n %s: %s", field.Name, stripHTMLTags(field.Value))
} }
fmt.Printf( fmt.Printf(
@ -146,10 +148,26 @@ func (c *showCommand) showAccount(gts *client.Client) error {
account.FollowersCount, account.FollowersCount,
account.FollowingCount, account.FollowingCount,
account.StatusCount, account.StatusCount,
account.Note, stripHTMLTags(account.Note),
metadata, metadata,
account.URL, account.URL,
) )
return nil return nil
} }
func stripHTMLTags(text string) string {
token := html.NewTokenizer(strings.NewReader(text))
var builder strings.Builder
for {
tt := token.Next()
switch tt {
case html.ErrorToken:
return builder.String()
case html.TextToken:
builder.WriteString(token.Token().Data + " ")
}
}
}

6
go.mod
View file

@ -2,11 +2,13 @@ module codeflow.dananglin.me.uk/apollo/enbas
go 1.22.0 go 1.22.0
require golang.org/x/oauth2 v0.17.0 require (
golang.org/x/net v0.21.0
golang.org/x/oauth2 v0.17.0
)
require ( require (
github.com/golang/protobuf v1.5.3 // indirect github.com/golang/protobuf v1.5.3 // indirect
golang.org/x/net v0.21.0 // indirect
google.golang.org/appengine v1.6.7 // indirect google.golang.org/appengine v1.6.7 // indirect
google.golang.org/protobuf v1.31.0 // indirect google.golang.org/protobuf v1.31.0 // indirect
) )