using System.Threading.Tasks;
public class TimestampLogger
private readonly string _timestampFile = "validation_timestamp.txt";
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
StartTime = DateTime.UtcNow;
File.WriteAllText(_timestampFile, $"Start: {StartTime}");
EndTime = DateTime.UtcNow;
await ValidateExternalTimestamp();
if (File.Exists(_timestampFile))
var existingContent = File.ReadAllText(_timestampFile);
File.WriteAllText(_timestampFile, $"{existingContent}\nEnd: {EndTime}");
private async Task ValidateExternalTimestamp(string api = "https://api.example.com/timestamp")
using (var httpClient = new HttpClient())
var response = await httpClient.GetAsync(api);
if (response.IsSuccessStatusCode)
var serverTime = await response.Content.ReadAsStringAsync();
var difference = DateTime.UtcNow - DateTime.Parse(serverTime);
if (difference.TotalSeconds > 5)
throw new Exception("Timestamp discrepancy detected.");
throw new Exception($"Failed to validate timestamp: {ex.Message}", ex);
public bool VerifyTimeElapsed()
return EndTime > StartTime;