| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | using System;using System.Collections.Generic;using Renci.SshNet.Sftp;namespace Renci.SshNet.Tests.Common{    public class SftpFileAttributesBuilder    {        private DateTime? _lastAccessTime;        private DateTime? _lastWriteTime;        private long? _size;        private int? _userId;        private int? _groupId;        private uint? _permissions;        private readonly IDictionary<string, string> _extensions;        public SftpFileAttributesBuilder()        {            _extensions = new Dictionary<string, string>();        }        public SftpFileAttributesBuilder WithLastAccessTime(DateTime lastAccessTime)        {            _lastAccessTime = lastAccessTime;            return this;        }        public SftpFileAttributesBuilder WithLastWriteTime(DateTime lastWriteTime)        {            _lastWriteTime = lastWriteTime;            return this;        }        public SftpFileAttributesBuilder WithSize(long size)        {            _size = size;            return this;        }        public SftpFileAttributesBuilder WithUserId(int userId)        {            _userId = userId;            return this;        }        public SftpFileAttributesBuilder WithGroupId(int groupId)        {            _groupId = groupId;            return this;        }        public SftpFileAttributesBuilder WithPermissions(uint permissions)        {            _permissions = permissions;            return this;        }        public SftpFileAttributesBuilder WithExtension(string name, string value)        {            _extensions.Add(name, value);            return this;        }        public SftpFileAttributes Build()        {            if (_lastAccessTime == null)            {                _lastAccessTime = DateTime.SpecifyKind(DateTime.MinValue, DateTimeKind.Utc);            }            else if (_lastAccessTime.Value.Kind != DateTimeKind.Utc)            {                _lastAccessTime = _lastAccessTime.Value.ToUniversalTime();            }            if (_lastWriteTime == null)            {                _lastWriteTime = DateTime.SpecifyKind(DateTime.MinValue, DateTimeKind.Utc);            }            else if (_lastWriteTime.Value.Kind != DateTimeKind.Utc)            {                _lastWriteTime = _lastWriteTime.Value.ToUniversalTime();            }            _size ??= 0;            _userId ??= 0;            _groupId ??= 0;            _permissions ??= 0;            return new SftpFileAttributes(_lastAccessTime.Value,                                          _lastWriteTime.Value,                                          _size.Value,                                          _userId.Value,                                          _groupId.Value,                                          _permissions.Value,                                          _extensions);        }    }}
 |