public async Task <string> Post(Uri uri, object data) { var w = Stopwatch.StartNew(); var json = Jsonizer.Serialize(data); while (true) { using (var content = new StringContent(json, Encoding.UTF8, "application/json")) using (var response = await _client.PostAsync(uri, content)) { var message = await response.Content.ReadAsStringAsync(); if (response.IsSuccessStatusCode) { return(message); } if (response.StatusCode.EqualsAny(HttpStatusCode.BadGateway, HttpStatusCode.InternalServerError)) { if (w.Elapsed.TotalMinutes < 15) { await Task.Delay(5000); continue; } } Loggers.Error(message); response.EnsureSuccessStatusCode(); return(null); } } }
public override string ToString() => Jsonizer.Serialize(this);