using Microsoft.AspNetCore.Http; using System; namespace ReZero.SuperAPI { /// <summary> /// Helper class for handling API requests and determining appropriate request method handlers. /// </summary> internal class DynamicApiHelper { /// <summary> /// Determines if the provided string represents a valid HTTP request method. /// </summary> /// <param name="requestMethodString">The string representing the HTTP request method.</param> /// <param name="requestMethod">The parsed HttpRequestMethod enum value.</param> /// <returns>True if the string represents a valid HTTP request method; otherwise, false.</returns> public bool IsHttpMethod(string requestMethodString, out HttpRequestMethod requestMethod) { // Try to parse the request method string into HttpRequestMethod enum. return Enum.TryParse(requestMethodString, ignoreCase: true, out requestMethod); } /// <summary> /// Gets the appropriate request method handler based on the provided HTTP request method. /// </summary> /// <param name="method">The parsed HttpRequestMethod enum representing the HTTP request method.</param> /// <param name="context">The HttpContext associated with the request.</param> /// <returns>An instance of the appropriate request method handler.</returns> public IRequestMethodHandler GetHandler(HttpRequestMethod method, HttpContext context) { // Determine the request method and return the corresponding handler. switch (method) { case HttpRequestMethod.GET: return new GetRequestHandler(context); case HttpRequestMethod.POST: return new PostRequestHandler(context); case HttpRequestMethod.PUT: return new PutRequestHandler(context); case HttpRequestMethod.DELETE: return new DeleteRequestHandler(context); case HttpRequestMethod.PATCH: return new PatchRequestHandler(context); default: // Throw an exception if the request method is not supported. throw new NotSupportedException("Unsupported HTTP request method"); } } } }