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

Commit 2d58924

Browse files
committed
TryParse throws if it gets a null value, and structs often have null values
1 parent 3f149a2 commit 2d58924

File tree

7 files changed

+17
-11
lines changed

7 files changed

+17
-11
lines changed

src/GitHub.Api/Cache/CacheContainer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ public DateTimeOffset UpdatedTime
162162
if (!updatedTimeValue.HasValue)
163163
{
164164
DateTimeOffset result;
165-
if (DateTimeOffset.TryParseExact(updatedTimeString, Constants.Iso8601Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
165+
if (DateTimeOffset.TryParseExact(updatedTimeString.ToEmptyIfNull(), Constants.Iso8601Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
166166
{
167167
updatedTimeValue = result;
168168
}

src/GitHub.Api/Extensions/StringExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ public static string ToNullIfEmpty(this string s)
4040
return String.IsNullOrEmpty(s) ? null : s;
4141
}
4242

43+
public static string ToEmptyIfNull(this string s)
44+
{
45+
return String.IsNullOrEmpty(s) ? String.Empty : s;
46+
}
47+
4348
public static bool StartsWith(this string s, char c)
4449
{
4550
if (String.IsNullOrEmpty(s)) return false;

src/GitHub.Api/Git/GitLock.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@ public struct GitLock
1313
public string path;
1414
public GitUser owner;
1515
[NotSerialized] public string lockedAtString;
16+
private string LockedAtString { get { return lockedAtString != null ? lockedAtString : String.Empty; } }
1617
public DateTimeOffset locked_at
1718
{
1819
get
1920
{
2021
DateTimeOffset dt;
21-
if (!DateTimeOffset.TryParseExact(lockedAtString, Constants.Iso8601Formats,
22+
if (!DateTimeOffset.TryParseExact(LockedAtString.ToEmptyIfNull(), Constants.Iso8601Formats,
2223
CultureInfo.InvariantCulture, Constants.DateTimeStyle, out dt))
2324
{
2425
locked_at = DateTimeOffset.MinValue;

src/GitHub.Api/Git/GitLogEntry.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public DateTimeOffset Time
6868
if (!timeValue.HasValue)
6969
{
7070
DateTimeOffset result;
71-
if (DateTimeOffset.TryParseExact(TimeString, Constants.Iso8601Formats, CultureInfo.InvariantCulture,DateTimeStyles.None, out result))
71+
if (DateTimeOffset.TryParseExact(TimeString.ToEmptyIfNull(), Constants.Iso8601Formats, CultureInfo.InvariantCulture,DateTimeStyles.None, out result))
7272
{
7373
timeValue = result;
7474
}
@@ -95,7 +95,7 @@ public DateTimeOffset CommitTime
9595
if (!commitTimeValue.HasValue)
9696
{
9797
DateTimeOffset result;
98-
if (DateTimeOffset.TryParseExact(CommitTimeString, Constants.Iso8601Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
98+
if (DateTimeOffset.TryParseExact(CommitTimeString.ToEmptyIfNull(), Constants.Iso8601Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
9999
{
100100
commitTimeValue = result;
101101
}
@@ -216,4 +216,4 @@ public override string ToString()
216216
return sb.ToString();
217217
}
218218
}
219-
}
219+
}

src/GitHub.Api/Platform/Settings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public override string Get(string key, string fallback = "")
7474
if (typeof(T) == typeof(DateTimeOffset))
7575
{
7676
DateTimeOffset dt;
77-
if (DateTimeOffset.TryParseExact(value?.ToString(), Constants.Iso8601Formats,
77+
if (DateTimeOffset.TryParseExact(value?.ToString().ToEmptyIfNull(), Constants.Iso8601Formats,
7878
CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
7979
{
8080
value = dt;

src/UnityExtension/Assets/Editor/GitHub.Unity/ApplicationCache.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public DateTimeOffset FirstRunAt
3838
if (!firstRunAtValue.HasValue)
3939
{
4040
DateTimeOffset dt;
41-
if (!DateTimeOffset.TryParseExact(firstRunAtString, Constants.Iso8601Formats,
41+
if (!DateTimeOffset.TryParseExact(firstRunAtString.ToEmptyIfNull(), Constants.Iso8601Formats,
4242
CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
4343
{
4444
dt = DateTimeOffset.Now;
@@ -261,7 +261,7 @@ public DateTimeOffset LastUpdatedAt
261261
if (!lastUpdatedAtValue.HasValue)
262262
{
263263
DateTimeOffset result;
264-
if (DateTimeOffset.TryParseExact(LastUpdatedAtString, Constants.Iso8601Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
264+
if (DateTimeOffset.TryParseExact(LastUpdatedAtString.ToEmptyIfNull(), Constants.Iso8601Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
265265
{
266266
lastUpdatedAtValue = result;
267267
}
@@ -287,7 +287,7 @@ public DateTimeOffset InitializedAt
287287
if (!initializedAtValue.HasValue)
288288
{
289289
DateTimeOffset result;
290-
if (DateTimeOffset.TryParseExact(InitializedAtString, Constants.Iso8601Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
290+
if (DateTimeOffset.TryParseExact(InitializedAtString.ToEmptyIfNull(), Constants.Iso8601Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
291291
{
292292
initializedAtValue = result;
293293
}

src/tests/IntegrationTests/CachingClasses.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ public DateTimeOffset LastUpdatedAt
184184
if (!lastUpdatedAtValue.HasValue)
185185
{
186186
DateTimeOffset result;
187-
if (DateTimeOffset.TryParseExact(LastUpdatedAtString, Constants.Iso8601Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
187+
if (DateTimeOffset.TryParseExact(LastUpdatedAtString.ToEmptyIfNull(), Constants.Iso8601Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
188188
{
189189
lastUpdatedAtValue = result;
190190
}
@@ -210,7 +210,7 @@ public DateTimeOffset InitializedAt
210210
if (!initializedAtValue.HasValue)
211211
{
212212
DateTimeOffset result;
213-
if (DateTimeOffset.TryParseExact(InitializedAtString, Constants.Iso8601Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
213+
if (DateTimeOffset.TryParseExact(InitializedAtString.ToEmptyIfNull(), Constants.Iso8601Formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
214214
{
215215
initializedAtValue = result;
216216
}

0 commit comments

Comments
 (0)