Skip to content

Commit

Permalink
[csharp-refactor] Minor csharp refactor changes (#1723)
Browse files Browse the repository at this point in the history
* [csharp-refactor] Minor changes to JSON mime usage

:racehorse: This maeks the regex static to reduce GC overhead for active clients.
This also removes the lowercase call on the mimetype before evaluating,
as the regex already uses the inline modifier for case insensitivity.

* [csharp-refactor] Regenerate sample
  • Loading branch information
jimschubert authored and wing328 committed Dec 21, 2018
1 parent 89a0ffa commit 10ecc0e
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ namespace {{packageName}}.Client
foreach (var contentType in contentTypes)
{
if (IsJsonMime(contentType.ToLower()))
if (IsJsonMime(contentType))
return contentType;
}

Expand All @@ -229,6 +229,11 @@ namespace {{packageName}}.Client
return String.Join(",", accepts);
}

/// <summary>
/// Provides a case-insensitive check that a provided content type is a known JSON-like content type.
/// </summary>
public static readonly Regex JsonRegex = new Regex("(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$");

/// <summary>
/// Check if the given MIME is a JSON MIME.
/// JSON MIME examples:
Expand All @@ -241,8 +246,9 @@ namespace {{packageName}}.Client
/// <returns>Returns True if MIME type is json.</returns>
public static bool IsJsonMime(String mime)
{
var jsonRegex = new Regex("(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$");
return mime != null && (jsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json"));
if (String.IsNullOrWhiteSpace(mime)) return false;
return JsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ public static String SelectHeaderContentType(String[] contentTypes)

foreach (var contentType in contentTypes)
{
if (IsJsonMime(contentType.ToLower()))
if (IsJsonMime(contentType))
return contentType;
}

Expand All @@ -233,6 +233,11 @@ public static String SelectHeaderAccept(String[] accepts)
return String.Join(",", accepts);
}

/// <summary>
/// Provides a case-insensitive check that a provided content type is a known JSON-like content type.
/// </summary>
public static readonly Regex JsonRegex = new Regex("(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$");

/// <summary>
/// Check if the given MIME is a JSON MIME.
/// JSON MIME examples:
Expand All @@ -245,8 +250,9 @@ public static String SelectHeaderAccept(String[] accepts)
/// <returns>Returns True if MIME type is json.</returns>
public static bool IsJsonMime(String mime)
{
var jsonRegex = new Regex("(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$");
return mime != null && (jsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json"));
if (String.IsNullOrWhiteSpace(mime)) return false;

return JsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json");
}
}
}

0 comments on commit 10ecc0e

Please sign in to comment.