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

Commit 0c806c2

Browse files
committed
Added 'quoted' parameter
1 parent 3587b09 commit 0c806c2

File tree

4 files changed

+41
-14
lines changed

4 files changed

+41
-14
lines changed

src/Microsoft.Net.Http.Headers/ContentDispositionHeaderValue.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ private void SetDate(string parameter, DateTimeOffset? date)
321321
else
322322
{
323323
// Must always be quoted
324-
var dateString = string.Format(CultureInfo.InvariantCulture, "\"{0}\"", HeaderUtilities.FormatDate(date.Value));
324+
var dateString = HeaderUtilities.FormatDate(date.Value, quoted: true);
325325
if (dateParameter != null)
326326
{
327327
dateParameter.Value = dateString;

src/Microsoft.Net.Http.Headers/DateTimeFormatter.cs

+19-1
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,24 @@ internal static class DateTimeFormatter
2424
private const char Comma = ',';
2525
private const char Space = ' ';
2626
private const char Colon = ':';
27+
private const char Quote = '"';
2728

2829
public static string ToRfc1123String(this DateTimeOffset dateTime)
30+
{
31+
return ToRfc1123String(dateTime, false);
32+
}
33+
34+
public static string ToRfc1123String(this DateTimeOffset dateTime, bool quoted)
2935
{
3036
var universal = dateTime.UtcDateTime;
31-
var target = new InplaceStringBuilder(Rfc1123DateLength);
37+
38+
var length = quoted ? Rfc1123DateLength + 2 : Rfc1123DateLength;
39+
var target = new InplaceStringBuilder(length);
40+
41+
if (quoted)
42+
{
43+
target.Append(Quote);
44+
}
3245

3346
target.Append(DayNames[(int)universal.DayOfWeek]);
3447
target.Append(Comma);
@@ -43,6 +56,11 @@ public static string ToRfc1123String(this DateTimeOffset dateTime)
4356
target.Append(Space);
4457
target.Append(Gmt);
4558

59+
if (quoted)
60+
{
61+
target.Append(Quote);
62+
}
63+
4664
return target.ToString();
4765
}
4866

src/Microsoft.Net.Http.Headers/HeaderUtilities.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,12 @@ public static bool TryParseDate(string input, out DateTimeOffset result)
220220

221221
public static string FormatDate(DateTimeOffset dateTime)
222222
{
223-
return dateTime.ToRfc1123String();
223+
return FormatDate(dateTime, false);
224+
}
225+
226+
public static string FormatDate(DateTimeOffset dateTime, bool quoted)
227+
{
228+
return dateTime.ToRfc1123String(quoted);
224229
}
225230

226231
public static string RemoveQuotes(string input)

test/Microsoft.Net.Http.Headers.Tests/HeaderUtilitiesTest.cs

+15-11
Original file line numberDiff line numberDiff line change
@@ -12,29 +12,33 @@ public static class HeaderUtilitiesTest
1212

1313
[Theory]
1414
[MemberData(nameof(TestValues))]
15-
public static void ReturnsSameResultAsRfc1123String(DateTimeOffset dateTime)
15+
public static void ReturnsSameResultAsRfc1123String(DateTimeOffset dateTime, bool quoted)
1616
{
17-
var expected = dateTime.ToString(Rfc1123Format);
18-
var actual = HeaderUtilities.FormatDate(dateTime);
17+
var formatted = dateTime.ToString(Rfc1123Format);
18+
var expected = quoted ? $"\"{formatted}\"" : formatted;
19+
var actual = HeaderUtilities.FormatDate(dateTime, quoted);
1920

2021
Assert.Equal(expected, actual);
2122
}
2223

23-
public static TheoryData<DateTimeOffset> TestValues
24+
public static TheoryData<DateTimeOffset, bool> TestValues
2425
{
2526
get
2627
{
27-
var data = new TheoryData<DateTimeOffset>();
28+
var data = new TheoryData<DateTimeOffset, bool>();
2829

2930
var now = DateTimeOffset.Now;
3031

31-
for (var i = 0; i < 60; i++)
32+
foreach (var quoted in new[] { true, false })
3233
{
33-
data.Add(now.AddSeconds(i));
34-
data.Add(now.AddMinutes(i));
35-
data.Add(now.AddDays(i));
36-
data.Add(now.AddMonths(i));
37-
data.Add(now.AddYears(i));
34+
for (var i = 0; i < 60; i++)
35+
{
36+
data.Add(now.AddSeconds(i), quoted);
37+
data.Add(now.AddMinutes(i), quoted);
38+
data.Add(now.AddDays(i), quoted);
39+
data.Add(now.AddMonths(i), quoted);
40+
data.Add(now.AddYears(i), quoted);
41+
}
3842
}
3943

4044
return data;

0 commit comments

Comments
 (0)