Some error checking

This commit is contained in:
Assistant 2020-05-18 19:08:21 -06:00
parent 4a71c5cfe1
commit 1a55d70928

View file

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.IO.Compression; using System.IO.Compression;
using System.Net; using System.Net;
@ -45,8 +46,11 @@ namespace ModAssistant.API
try try
{ {
BeatSaverApiResponse beatsaver = await GetResponse(BeatSaverURLPrefix + urlSegment + id); BeatSaverApiResponse beatsaver = await GetResponse(BeatSaverURLPrefix + urlSegment + id);
map.Name = await InstallMap(beatsaver.map, showNotification); if (beatsaver != null && beatsaver.map != null)
map.Success = true; {
map.Name = await InstallMap(beatsaver.map, showNotification);
map.Success = true;
}
} }
catch (Exception e) catch (Exception e)
{ {
@ -63,21 +67,24 @@ namespace ModAssistant.API
var resp = await HttpClient.GetAsync(url); var resp = await HttpClient.GetAsync(url);
response.statusCode = resp.StatusCode; response.statusCode = resp.StatusCode;
response.ratelimit = GetRatelimit(resp.Headers); response.ratelimit = GetRatelimit(resp.Headers);
string body = await resp.Content.ReadAsStringAsync();
if (response.statusCode == HttpStatusCode.OK) if (response.statusCode == HttpStatusCode.OK)
{ {
if (response.ratelimit.IsSafe) if (response.ratelimit.IsSafe)
{ {
string body = await resp.Content.ReadAsStringAsync();
response.map = JsonSerializer.Deserialize<BeatSaverApiResponseMap>(body); response.map = JsonSerializer.Deserialize<BeatSaverApiResponseMap>(body);
return response; return response;
} }
else else
{ {
ModAssistant.Utils.Log($"Ratelimit: ({response.ratelimit.Remaining}/{response.ratelimit.Total}) {response.ratelimit.ResetTime}");
return response; return response;
} }
} }
else else
{ {
ModAssistant.Utils.Log($"Ratelimit: [{response.statusCode}]({response.ratelimit.Remaining}/{response.ratelimit.Total}) {response.ratelimit.ResetTime} \n{body}", "ERROR");
return response; return response;
} }
} }
@ -95,16 +102,28 @@ namespace ModAssistant.API
{ {
BeatSaverRatelimit ratelimit = new BeatSaverRatelimit(); BeatSaverRatelimit ratelimit = new BeatSaverRatelimit();
var _rateLimitRemaining = headers.GetValues("Rate-Limit-Remaining").GetEnumerator(); IEnumerable<string> Remaining;
var _rateLimitReset = headers.GetValues("Rate-Limit-Reset").GetEnumerator(); IEnumerable<string> Reset;
var _rateLimitTotal = headers.GetValues("Rate-Limit-Total").GetEnumerator(); IEnumerable<string> Total;
_rateLimitRemaining.MoveNext();
_rateLimitReset.MoveNext(); if (headers.TryGetValues("Rate-Limit-Remaining", out Remaining))
_rateLimitTotal.MoveNext(); {
ratelimit.Remaining = Int32.Parse(_rateLimitRemaining.Current); Remaining.GetEnumerator().MoveNext();
ratelimit.Reset = Int32.Parse(_rateLimitReset.Current); ratelimit.Remaining = Int32.Parse(Remaining.GetEnumerator().Current);
ratelimit.Total = Int32.Parse(_rateLimitTotal.Current); }
ratelimit.ResetTime = UnixTimestampToDateTime((long)ratelimit.Reset);
if (headers.TryGetValues("Rate-Limit-Reset", out Reset))
{
Reset.GetEnumerator().MoveNext();
ratelimit.Reset = Int32.Parse(Reset.GetEnumerator().Current);
ratelimit.ResetTime = UnixTimestampToDateTime((long)ratelimit.Reset);
}
if (headers.TryGetValues("Rate-Limit-Total", out Total))
{
Total.GetEnumerator().MoveNext();
ratelimit.Total = Int32.Parse(Total.GetEnumerator().Current);
}
return ratelimit; return ratelimit;
} }