aboutsummaryrefslogtreecommitdiff
path: root/Timeline/Filters
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2019-10-27 22:52:21 +0800
committer杨宇千 <crupest@outlook.com>2019-10-27 22:52:21 +0800
commitc11a1b7be5d41bb1825a7190c708fdb04923a4fd (patch)
tree3fcce419f21587d8a872d76b2f654ed81ca842b6 /Timeline/Filters
parent181b53e270ff7c0558edec75b8b255d487e796c3 (diff)
downloadtimeline-c11a1b7be5d41bb1825a7190c708fdb04923a4fd.tar.gz
timeline-c11a1b7be5d41bb1825a7190c708fdb04923a4fd.tar.bz2
timeline-c11a1b7be5d41bb1825a7190c708fdb04923a4fd.zip
Add error code tests.
Diffstat (limited to 'Timeline/Filters')
-rw-r--r--Timeline/Filters/ContentHeaderAttributes.cs52
-rw-r--r--Timeline/Filters/Header.cs99
2 files changed, 99 insertions, 52 deletions
diff --git a/Timeline/Filters/ContentHeaderAttributes.cs b/Timeline/Filters/ContentHeaderAttributes.cs
deleted file mode 100644
index 99bd1540..00000000
--- a/Timeline/Filters/ContentHeaderAttributes.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.AspNetCore.Mvc.Filters;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Localization;
-using Timeline.Models.Http;
-
-namespace Timeline.Filters
-{
- public class RequireContentTypeAttribute : ActionFilterAttribute
- {
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1062:Validate arguments of public methods")]
- public override void OnActionExecuting(ActionExecutingContext context)
- {
- if (context.HttpContext.Request.ContentType == null)
- {
- context.Result = new BadRequestObjectResult(HeaderErrorResponse.MissingContentType());
- }
- }
- }
-
- public class RequireContentLengthAttribute : ActionFilterAttribute
- {
- public RequireContentLengthAttribute()
- : this(true)
- {
-
- }
-
- public RequireContentLengthAttribute(bool requireNonZero)
- {
- RequireNonZero = requireNonZero;
- }
-
- public bool RequireNonZero { get; set; }
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1062:Validate arguments of public methods")]
- public override void OnActionExecuting(ActionExecutingContext context)
- {
- if (context.HttpContext.Request.ContentLength == null)
- {
- context.Result = new BadRequestObjectResult(HeaderErrorResponse.MissingContentLength());
- return;
- }
-
- if (RequireNonZero && context.HttpContext.Request.ContentLength.Value == 0)
- {
- context.Result = new BadRequestObjectResult(HeaderErrorResponse.ZeroContentLength());
- return;
- }
- }
- }
-}
diff --git a/Timeline/Filters/Header.cs b/Timeline/Filters/Header.cs
new file mode 100644
index 00000000..f5fb16aa
--- /dev/null
+++ b/Timeline/Filters/Header.cs
@@ -0,0 +1,99 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.Filters;
+using Timeline.Models.Http;
+using static Timeline.Resources.Filters;
+
+namespace Timeline
+{
+ public static partial class ErrorCodes
+ {
+ public static partial class Http
+ {
+ public static partial class Filter // bxx = 1xx
+ {
+ public static partial class Header // bbb = 100
+ {
+ public static class ContentType // cc = 01
+ {
+ public const int Missing = 11000101; // dd = 01
+ }
+
+ public static class ContentLength // cc = 02
+ {
+ public const int Missing = 11000201; // dd = 01
+ public const int Zero = 11000202; // dd = 02
+ }
+ }
+ }
+
+ }
+ }
+}
+
+namespace Timeline.Filters
+{
+ public class RequireContentTypeAttribute : ActionFilterAttribute
+ {
+ internal static CommonResponse CreateResponse()
+ {
+ return new CommonResponse(
+ ErrorCodes.Http.Filter.Header.ContentType.Missing,
+ MessageHeaderContentTypeMissing);
+ }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1062:Validate arguments of public methods")]
+ public override void OnActionExecuting(ActionExecutingContext context)
+ {
+ if (context.HttpContext.Request.ContentType == null)
+ {
+ context.Result = new BadRequestObjectResult(CreateResponse());
+ }
+ }
+ }
+
+ public class RequireContentLengthAttribute : ActionFilterAttribute
+ {
+ internal static CommonResponse CreateMissingResponse()
+ {
+ return new CommonResponse(
+ ErrorCodes.Http.Filter.Header.ContentLength.Missing,
+ MessageHeaderContentLengthMissing);
+ }
+
+ internal static CommonResponse CreateZeroResponse()
+ {
+ return new CommonResponse(
+ ErrorCodes.Http.Filter.Header.ContentLength.Zero,
+ MessageHeaderContentLengthZero);
+ }
+
+ public RequireContentLengthAttribute()
+ : this(true)
+ {
+
+ }
+
+ public RequireContentLengthAttribute(bool requireNonZero)
+ {
+ RequireNonZero = requireNonZero;
+ }
+
+ public bool RequireNonZero { get; set; }
+
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1062:Validate arguments of public methods")]
+ public override void OnActionExecuting(ActionExecutingContext context)
+ {
+ if (context.HttpContext.Request.ContentLength == null)
+ {
+ context.Result = new BadRequestObjectResult(CreateMissingResponse());
+ return;
+ }
+
+ if (RequireNonZero && context.HttpContext.Request.ContentLength.Value == 0)
+ {
+ context.Result = new BadRequestObjectResult(CreateZeroResponse());
+ return;
+ }
+ }
+ }
+}