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

Commit b018dc7

Browse files
committed
Throw more meaningful exception when date format can't be determined
1 parent 24e9222 commit b018dc7

2 files changed

Lines changed: 14 additions & 8 deletions

File tree

src/CodeCaster.GoodWe/GoodWeClient.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -296,12 +296,20 @@ private async Task ReadUserDateFormatAsync()
296296
var dateSettingsResponse = await _client.PostAsync(endpoint, null);
297297
var responseObject = await dateSettingsResponse.Content.ReadFromJsonAsync<ResponseBase<DateFormatSettingsList>>();
298298

299-
var selected = responseObject.Data.DateFormats.FirstOrDefault(f => f.isselected);
300-
301-
_logger.LogDebug("Translating date format {selectedDateFormat}", selected.date_text);
302-
303-
var format = _dateFormats[selected.date_text];
299+
if (responseObject == null || responseObject.HasError || responseObject.Data == null || responseObject.Data.Selected == null)
300+
{
301+
throw new InvalidOperationException("Could not determine date format for user");
302+
}
303+
304+
var formatId = responseObject.Data.Selected.date_text;
304305

306+
_logger.LogDebug("Translating date format {selectedDateFormat}", formatId);
307+
308+
if (!_dateFormats.TryGetValue(formatId, out var format))
309+
{
310+
throw new ArgumentException("Could not translate date format " + formatId);
311+
}
312+
305313
_serializerOptions = new JsonSerializerOptions
306314
{
307315
PropertyNameCaseInsensitive = true,

src/CodeCaster.GoodWe/Json/GoodWeResponses.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,13 @@ public class LoginResponse
5858

5959
public class DateFormatSettingsList
6060
{
61-
[JsonPropertyName("list")]
62-
public List<DateSetting> DateFormats { get; set; } = new();
61+
public DateSetting? Selected { get; set; }
6362
}
6463

6564
public class DateSetting
6665
{
6766
public string id { get; set; }
6867
public string date_text { get; set; }
69-
public bool isselected { get; set; }
7068
}
7169

7270
public class InverterData

0 commit comments

Comments
 (0)