func UnpackAppTokenOptions()

in Server/go/apptoken/apptokenOptions.go [71:112]


func UnpackAppTokenOptions(buf io.Reader) (*AppTokenOptions, error) {
	options := &AppTokenOptions{
		EngineOptions: make(map[string]string),
	}
	// hasEngineOptions
	var hasEngineOptions bool
	if err := binary.Read(buf, binary.BigEndian, &hasEngineOptions); err != nil {
		return nil, err
	}

	if hasEngineOptions {

		var size int32
		if err := binary.Read(buf, binary.BigEndian, &size); err != nil {
			return nil, err
		}

		for i := int32(0); i < size; i++ {
			var keyLength int32
			if err := binary.Read(buf, binary.BigEndian, &keyLength); err != nil {
				return nil, err
			}
			key := make([]byte, keyLength)
			if _, err := buf.Read(key); err != nil {
				return nil, err
			}

			var valueLength int32
			if err := binary.Read(buf, binary.BigEndian, &valueLength); err != nil {
				return nil, err
			}
			value := make([]byte, valueLength)
			if _, err := buf.Read(value); err != nil {
				return nil, err
			}

			options.EngineOptions[string(key)] = string(value)
		}
	}

	return options, nil
}