| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | using System.Collections.Generic;using System.Text;using Renci.SshNet.Common;using Renci.SshNet.Sftp;namespace Renci.SshNet.Tests.Classes.Sftp{    public class SftpVersionResponseBuilder    {        private readonly uint _version;        private readonly IDictionary<string, string> _extensions;        private SftpVersionResponseBuilder(uint version)        {            _version = version;            _extensions = new Dictionary<string, string>();        }        public static SftpVersionResponseBuilder Create(uint version)        {            return new SftpVersionResponseBuilder(version);        }        public SftpVersionResponseBuilder AddExtension(string name, string data)        {            _extensions.Add(name, data);            return this;        }        public byte[] Build()        {            var extensions = BuildExtensions();            var sshDataStream = new SshDataStream(4 + 1 + 4 + extensions.Length);            sshDataStream.Write((uint)sshDataStream.Capacity - 4);            sshDataStream.WriteByte((byte)SftpMessageTypes.Version);            sshDataStream.Write(_version);            sshDataStream.Write(extensions, 0, extensions.Length);            return sshDataStream.ToArray();        }        private byte[] BuildExtensions()        {            var sshDataStream = new SshDataStream(0);            foreach (var extensionPair in _extensions)            {                sshDataStream.Write(extensionPair.Key, Encoding.ASCII);                sshDataStream.Write(extensionPair.Value, Encoding.ASCII);            }            return sshDataStream.ToArray();        }    }}
 |