| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 | #nullable enableusing System;using System.Collections.Generic;using Renci.SshNet.Sftp;namespace Renci.SshNet.Tests.Common{    public class SftpFileAttributesBuilder    {        public static SftpFileAttributes Empty        {            get            {                return new SftpFileAttributesBuilder().Build();            }        }        private DateTime? _lastAccessTime;        private DateTime? _lastWriteTime;        private long? _size;        private int? _userId;        private int? _groupId;        private uint? _permissions;        private Dictionary<string, string>? _extensions;        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 ??= [];            _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);        }    }}
 |