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);
                    }
            }
        }
示例#2
0
 public override string ToString() => Jsonizer.Serialize(this);