func UnpackService()

in Server/go/apptoken/service.go [110:150]


func UnpackService(buf io.Reader) (*Service, error) {

	service := Service{}

	// channelId
	var channelIdLength int32
	if err := binary.Read(buf, binary.BigEndian, &channelIdLength); err != nil {
		return nil, err
	}
	channelId := make([]byte, channelIdLength)
	if _, err := io.ReadFull(buf, channelId); err != nil {
		return nil, err
	}
	service.ChannelId = string(channelId)

	// userId
	var userIdLength int32
	if err := binary.Read(buf, binary.BigEndian, &userIdLength); err != nil {
		return nil, err
	}
	userId := make([]byte, userIdLength)
	if _, err := io.ReadFull(buf, userId); err != nil {
		return nil, err
	}
	service.UserId = string(userId)

	// privilege
	var hasPrivilege bool
	if err := binary.Read(buf, binary.BigEndian, &hasPrivilege); err != nil {
		return nil, err
	}
	if hasPrivilege {
		var privilege int32
		if err := binary.Read(buf, binary.BigEndian, &privilege); err != nil {
			return nil, err
		}
		service.Privilege = &privilege
	}

	return &service, nil
}