X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/d2810ae9038b057e8f18e8b495a57d8f96ae5be6..926c7f5505456a0900e9c49f6c08efebe9a53505:/hotline/account.go diff --git a/hotline/account.go b/hotline/account.go index 3da818f..2c400ac 100644 --- a/hotline/account.go +++ b/hotline/account.go @@ -2,7 +2,6 @@ package hotline import ( "encoding/binary" - "github.com/jhalter/mobius/concat" "golang.org/x/crypto/bcrypt" ) @@ -15,8 +14,8 @@ type Account struct { Access *[]byte `yaml:"Access"` // 8 byte bitmap } -// MarshalBinary marshals an Account to byte slice -func (a *Account) MarshalBinary() (out []byte) { +// Read implements io.Reader interface for Account +func (a *Account) Read(p []byte) (n int, err error) { fields := []Field{ NewField(fieldUserName, []byte(a.Name)), NewField(fieldUserLogin, negateString([]byte(a.Login))), @@ -30,13 +29,11 @@ func (a *Account) MarshalBinary() (out []byte) { fieldCount := make([]byte, 2) binary.BigEndian.PutUint16(fieldCount, uint16(len(fields))) - var fieldPayload []byte + p = append(p, fieldCount...) + for _, field := range fields { - fieldPayload = append(fieldPayload, field.Payload()...) + p = append(p, field.Payload()...) } - return concat.Slices( - fieldCount, - fieldPayload, - ) + return len(p), nil }