/// <summary> /// Constructor using an <see cref="IObjectSerializer"/> for persistence. /// </summary> public LockedFileDataPersister( string fullFilename, IObjectSerializer serializer, int numberOfRetries = 3, int retryDelay = 100) { _committedFile = new FileInfo(fullFilename /*.Validation().NotNull(nameof(fullFilename))*/).FullName; _read = async(ct, stream) => (T)serializer.FromStream(stream, typeof(T)); _write = async(ct, entity, stream) => serializer.WriteToStream(entity, typeof(T), stream, canDisposeStream: true); _numberOfRetries = numberOfRetries; _retryDelay = retryDelay; // Create other working file names _oldFile = _committedFile + ".old"; _newFile = _committedFile + ".new"; _lockFile = _committedFile + ".lck"; }
private string CreateJsonWebToken(AuthenticationToken token = null, TimeSpan?timeToLive = null) { const string header = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"; // alg=HS256, type=JWT const string signature = "QWqnPP8W6ymexz74P6quP-oG-wxr7vMGqrEL8y_tV6M"; // dummy stuff var now = DateTimeOffset.Now; token = (token ?? AuthenticationToken.Default) .WithExpiration(now + (timeToLive ?? TimeSpan.FromMinutes(10))) .WithIssuedAt(now); string payload; using (var stream = new MemoryStream()) { _serializer.WriteToStream(token, typeof(AuthenticationToken), stream, canDisposeStream: false); payload = Convert.ToBase64String(stream.ToArray()); } return(header + '.' + payload + '.' + signature); }