1package pgproto3 2 3import ( 4 "bytes" 5 "encoding/json" 6 7 "github.com/jackc/pgx/pgio" 8) 9 10type PasswordMessage struct { 11 Password string 12} 13 14func (*PasswordMessage) Frontend() {} 15 16func (dst *PasswordMessage) Decode(src []byte) error { 17 buf := bytes.NewBuffer(src) 18 19 b, err := buf.ReadBytes(0) 20 if err != nil { 21 return err 22 } 23 dst.Password = string(b[:len(b)-1]) 24 25 return nil 26} 27 28func (src *PasswordMessage) Encode(dst []byte) []byte { 29 dst = append(dst, 'p') 30 dst = pgio.AppendInt32(dst, int32(4+len(src.Password)+1)) 31 32 dst = append(dst, src.Password...) 33 dst = append(dst, 0) 34 35 return dst 36} 37 38func (src *PasswordMessage) MarshalJSON() ([]byte, error) { 39 return json.Marshal(struct { 40 Type string 41 Password string 42 }{ 43 Type: "PasswordMessage", 44 Password: src.Password, 45 }) 46} 47