Skip to content
This repository was archived by the owner on Nov 16, 2023. It is now read-only.

Commit e88697d

Browse files
Make GetAvailableAndFreshSpaces clearer on failure and work better if run before device-connectivity (#57)
1 parent 07466f5 commit e88697d

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

occupancy-quickstart/src/actions/getAvailableAndFreshSpaces.cs

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,32 @@ public static async Task GetAvailableAndFreshSpaces(HttpClient httpClient)
2121
var maxGets = 30;
2222
for (var curGets = 0; curGets < maxGets; ++curGets)
2323
{
24-
var spaces = await GetManagementItemsAsync<Models.Space>(httpClient, "spaces", "includes=values");
25-
var availableAndFreshSpaces = spaces.Where(s => s.Values != null && s.Values.Any(v => v.Type == "AvailableAndFresh"));
26-
if (!availableAndFreshSpaces.Any())
24+
var (spaces, response) = await GetManagementItemsAsync<Models.Space>(httpClient, "spaces", "includes=values");
25+
if (spaces == null)
2726
{
28-
Console.WriteLine("ERROR: Unable to find a space with value type 'AvailableAndFresh'");
27+
var content = await response.Content?.ReadAsStringAsync();
28+
Console.WriteLine($"ERROR: GET spaces?includes=values failed with: {(int)response.StatusCode}, {response.StatusCode} {content}");
2929
break;
3030
}
31-
var availableAndFreshDisplay = availableAndFreshSpaces
32-
.Select(s => GetDisplayValues(s))
33-
.Aggregate((acc, cur) => acc + "\n" + cur);
34-
Console.WriteLine($"{availableAndFreshDisplay}");
31+
32+
var availableAndFreshSpaces = spaces.Where(s => s.Values != null && s.Values.Any(v => v.Type == "AvailableAndFresh"));
33+
if (availableAndFreshSpaces.Any())
34+
{
35+
var availableAndFreshDisplay = availableAndFreshSpaces
36+
.Select(s => GetDisplayValues(s))
37+
.Aggregate((acc, cur) => acc + "\n" + cur);
38+
Console.WriteLine($"{availableAndFreshDisplay}");
39+
}
40+
else
41+
{
42+
Console.WriteLine("Unable to find a space with value type 'AvailableAndFresh'");
43+
}
44+
3545
await Task.Delay(TimeSpan.FromSeconds(4));
3646
}
3747
}
3848

39-
private static async Task<IEnumerable<T>> GetManagementItemsAsync<T>(
49+
private static async Task<(IEnumerable<T>, HttpResponseMessage)> GetManagementItemsAsync<T>(
4050
HttpClient httpClient,
4151
string queryItem,
4252
string queryParams)
@@ -46,10 +56,10 @@ private static async Task<IEnumerable<T>> GetManagementItemsAsync<T>(
4656
{
4757
var content = await response.Content.ReadAsStringAsync();
4858
var objects = JsonConvert.DeserializeObject<IEnumerable<T>>(content);
49-
return objects;
59+
return (objects, response);
5060
}
5161

52-
return null;
62+
return (null, response);
5363
}
5464

5565
private static string GetDisplayValues(Models.Space space)

occupancy-quickstart/src/loggingHttpHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ private async Task LogResponse(HttpResponseMessage response)
4949
? content
5050
: content.Substring(0, maxContentLength - 3) + "...";
5151
var contentDisplay = contentMaxLength == null ? "" : $", {contentMaxLength}";
52-
logger.LogTrace($"Response Status: {(int)response.StatusCode}, {response.StatusCode}{contentDisplay}");
52+
logger.LogTrace($"Response Status: {(int)response.StatusCode}, {response.StatusCode} {contentDisplay}");
5353

5454
// Enable to get more details:
5555
// logger.LogTrace($"Full Response: {Serialize(response)}");

0 commit comments

Comments
 (0)