public LightNodeOptions(AcceptVerbs defaultAcceptVerb, IContentFormatter defaultFormatter, params IContentFormatter[] specifiedFormatters) { DefaultAcceptVerb = defaultAcceptVerb; DefaultFormatter = defaultFormatter; SpecifiedFormatters = specifiedFormatters; UseOtherMiddleware = false; }
public ValueProvider(IDictionary<string, object> environment, AcceptVerbs verb) { var queryString = environment["owin.RequestQueryString"] as string; AppendValues(queryString); if (verb != AcceptVerbs.Get) { var requestHeader = environment[OwinConstants.RequestHeaders] as IDictionary<string, string[]>; string[] contentType; if (requestHeader.TryGetValue("Content-Type", out contentType)) { if (contentType.Any(x => x.Contains("application/x-www-form-urlencoded"))) { var requestStream = environment["owin.RequestBody"] as Stream; using (var sr = new StreamReader(new UnclosableStream(requestStream))) { var formUrlEncoded = sr.ReadToEnd(); AppendValues(formUrlEncoded); } requestStream.Position = 0; // rewind for custom use } else if (contentType.Any(x => x.Contains("multipart/form-data"))) { var requestStream = environment["owin.RequestBody"] as Stream; string boundary = boundaryRegex.Match(contentType[0]).Groups[1].Value; ParseMultipartValue(requestStream, ("--" + boundary).ToCharArray()); } } } }
internal OperationContext(IDictionary <string, object> environment, string contractName, string operationName, AcceptVerbs verb) { Environment = environment; ContractName = contractName; OperationName = operationName; Verb = verb; }
internal OperationContext(HttpContext context, string contractName, string operationName, AcceptVerbs verb) { Context = context; ContractName = contractName; OperationName = operationName; Verb = verb; }
public ValueProvider(HttpContext context, AcceptVerbs verb) { var queryString = context.Request.QueryString; AppendValues(queryString.Value.TrimStart('?')); if (verb != AcceptVerbs.Get) { var requestHeader = context.Request.Headers; StringValues contentType; if (requestHeader.TryGetValue("Content-Type", out contentType)) { if (contentType.Any(x => x.Contains("application/x-www-form-urlencoded"))) { var requestStream = context.Request.Body; using (var sr = new StreamReader(new UnclosableStream(requestStream))) { var formUrlEncoded = sr.ReadToEnd(); AppendValues(formUrlEncoded); } requestStream.Position = 0; // rewind for custom use } } } }
public ValueProvider(IDictionary <string, object> environment, AcceptVerbs verb) { var queryString = environment["owin.RequestQueryString"] as string; AppendValues(queryString); if (verb != AcceptVerbs.Get) { var requestHeader = environment[OwinConstants.RequestHeaders] as IDictionary <string, string[]>; string[] contentType; if (requestHeader.TryGetValue("Content-Type", out contentType)) { if (contentType.Any(x => x.Contains("application/x-www-form-urlencoded"))) { var requestStream = environment["owin.RequestBody"] as Stream; using (var sr = new StreamReader(new UnclosableStream(requestStream))) { var formUrlEncoded = sr.ReadToEnd(); AppendValues(formUrlEncoded); } requestStream.Position = 0; // rewind for custom use } } } }
static PathItem CreatePathItem(AcceptVerbs acceptVerbs, Operation operation) { if (acceptVerbs.HasFlag(AcceptVerbs.Get)) { return(new PathItem { get = operation }); } if (acceptVerbs.HasFlag(AcceptVerbs.Post)) { return(new PathItem { post = operation }); } if (acceptVerbs.HasFlag(AcceptVerbs.Put)) { return(new PathItem { put = operation }); } if (acceptVerbs.HasFlag(AcceptVerbs.Delete)) { return(new PathItem { delete = operation }); } if (acceptVerbs.HasFlag(AcceptVerbs.Patch)) { return(new PathItem { patch = operation }); } throw new ArgumentOutOfRangeException(); }
public ValueProvider(IDictionary <string, object> environment, AcceptVerbs verb) { var queryString = environment["owin.RequestQueryString"] as string; AppendValues(queryString); if (verb != AcceptVerbs.Get) { var requestHeader = environment[OwinConstants.RequestHeaders] as IDictionary <string, string[]>; string[] contentType; if (requestHeader.TryGetValue("Content-Type", out contentType)) { if (contentType.Any(x => x.Contains("application/x-www-form-urlencoded"))) { var requestStream = environment["owin.RequestBody"] as Stream; using (var sr = new StreamReader(new UnclosableStream(requestStream))) { var formUrlEncoded = sr.ReadToEnd(); AppendValues(formUrlEncoded); } requestStream.Position = 0; // rewind for custom use } else if (contentType.Any(x => x.Contains("multipart/form-data"))) { var requestStream = environment["owin.RequestBody"] as Stream; string boundary = boundaryRegex.Match(contentType[0]).Groups[1].Value; ParseMultipartValue(requestStream, ("--" + boundary).ToCharArray()); } } } }
public ValueProvider(HttpContext httpContext, AcceptVerbs verb) { var queryString = httpContext.Request.QueryString; AppendValues(queryString.Value.TrimStart('?')); if (verb != AcceptVerbs.Get) { var requestHeader = httpContext.Request.Headers; StringValues contentType; if (requestHeader.TryGetValue("Content-Type", out contentType)) { if (contentType.Any(x => x.Contains("application/x-www-form-urlencoded"))) { var requestStream = httpContext.Request.Body; using (var sr = new StreamReader(new UnclosableStream(requestStream))) { var formUrlEncoded = sr.ReadToEnd(); AppendValues(formUrlEncoded); } requestStream.Position = 0; // rewind for custom use } //else if (contentType.Any(x => x.Contains("multipart/form-data"))) //{ // var requestStream = environment["owin.RequestBody"] as Stream; // string boundary = boundaryRegex.Match(contentType[0]).Groups[1].Value; // ParseMultipartValue(requestStream, ("--" + boundary).ToCharArray()); //} } } }
OperationHandler SelectHandler(IDictionary <string, object> environment, out AcceptVerbs verb, out string ext) { // out default verb = AcceptVerbs.Get; ext = ""; // verb check var method = environment["owin.RequestMethod"]; if (StringComparer.OrdinalIgnoreCase.Equals(method, "GET")) { verb = AcceptVerbs.Get; } else if (StringComparer.OrdinalIgnoreCase.Equals(method, "POST")) { verb = AcceptVerbs.Post; } else { environment.EmitMethodNotAllowed(); return(null); } // extract path var path = environment["owin.RequestPath"] as string; var keyBase = path.Trim('/').Split('/'); if (keyBase.Length != 2) { environment.EmitNotFound(); return(null); } // extract "extension" for media type var extStart = keyBase[1].LastIndexOf("."); if (extStart != -1) { ext = keyBase[1].Substring(extStart + 1); keyBase[1] = keyBase[1].Substring(0, keyBase[1].Length - ext.Length - 1); } // {ClassName, MethodName} var key = new RequestPath(keyBase[0], keyBase[1]); OperationHandler handler; if (handlers.TryGetValue(key, out handler)) { return(handler); } else { environment.EmitNotFound(); return(null); } }
/// <summary>Append operation specific option.</summary> /// <param name="acceptVerbs">Overwrite AcceptVerb.</param> /// <param name="contentFormatterFactory">Ignore default formatter and specifiedFormatters. Force use this contentFormatter.</param> public OperationOptionAttribute(AcceptVerbs acceptVerbs, Type contentFormatterFactory) { this.AcceptVerbs = acceptVerbs; try { this.ContentFormatter = (Activator.CreateInstance(contentFormatterFactory) as IContentFormatterFactory).CreateFormatter(); } catch (Exception ex) { throw new ArgumentException("contentFormatterFactory must inherits IContentFormatterFactory and has parameterless constructor", ex); } }
public LightNodeOptions(AcceptVerbs defaultAcceptVerb, IContentFormatter defaultFormatter, params IContentFormatter[] specifiedFormatters) { DefaultAcceptVerb = defaultAcceptVerb; DefaultFormatter = defaultFormatter; SpecifiedFormatters = specifiedFormatters; UseOtherMiddleware = false; ParameterStringImplicitNullAsDefault = false; ParameterEnumAllowsFieldNameParse = false; StreamWriteOption = Server.StreamWriteOption.BufferAndWrite; ErrorHandlingPolicy = Server.ErrorHandlingPolicy.ThrowException; Filters = new LightNodeFilterCollection(); }
public ValueProvider(IDictionary<string, object> environment, AcceptVerbs verb) { var queryString = environment["owin.RequestQueryString"] as string; AppendValues(queryString); if (verb != AcceptVerbs.Get) { using (var sr = new StreamReader((environment["owin.RequestBody"] as Stream))) { var formUrlEncoded = sr.ReadToEnd(); AppendValues(formUrlEncoded); } } }
public ValueProvider(IDictionary <string, object> environment, AcceptVerbs verb) { var queryString = environment["owin.RequestQueryString"] as string; AppendValues(queryString); if (verb != AcceptVerbs.Get) { using (var sr = new StreamReader((environment["owin.RequestBody"] as Stream))) { var formUrlEncoded = sr.ReadToEnd(); AppendValues(formUrlEncoded); } } }
public LightNodeOptions(AcceptVerbs defaultAcceptVerb, IContentFormatter defaultFormatter, params IContentFormatter[] specifiedFormatters) { DefaultAcceptVerb = defaultAcceptVerb; DefaultFormatter = defaultFormatter; SpecifiedFormatters = specifiedFormatters; UseOtherMiddleware = false; ParameterStringImplicitNullAsDefault = false; ParameterEnumAllowsFieldNameParse = false; StreamWriteOption = Server.StreamWriteOption.BufferAndWrite; ErrorHandlingPolicy = Server.ErrorHandlingPolicy.ThrowException; OperationMissingHandlingPolicy = Server.OperationMissingHandlingPolicy.ReturnErrorStatusCode; Filters = new LightNodeFilterCollection(); OperationCoordinatorFactory = new DefaultOperationCoordinatorFactory(); ServerEngineId = Guid.NewGuid().ToString(); Logger = NullLightNodeLogger.Instance; }
public ValueProvider(IDictionary<string, object> environment, AcceptVerbs verb) { var queryString = environment["owin.RequestQueryString"] as string; AppendValues(queryString); if (verb != AcceptVerbs.Get) { var requestHeader = environment[OwinConstants.RequestHeaders] as IDictionary<string, string[]>; string[] contentType; if (requestHeader.TryGetValue("Content-Type", out contentType)) { if (contentType.Any(x => x.Contains("application/x-www-form-urlencoded"))) { var requestStream = environment["owin.RequestBody"] as Stream; using (var sr = new StreamReader(new UnclosableStream(requestStream))) { var formUrlEncoded = sr.ReadToEnd(); AppendValues(formUrlEncoded); } requestStream.Position = 0; // rewind for custom use } } } }
OperationHandler SelectHandler(IDictionary <string, object> environment, IOperationCoordinator coorinator, out AcceptVerbs verb, out string ext) { // out default verb = AcceptVerbs.Get; ext = ""; var path = environment["owin.RequestPath"] as string; var method = environment["owin.RequestMethod"] as string; // extract path var keyBase = path.Trim('/').Split('/'); if (keyBase.Length != 2) { goto NOT_FOUND; } // extract "extension" for media type var extStart = keyBase[1].LastIndexOf("."); if (extStart != -1) { ext = keyBase[1].Substring(extStart + 1); keyBase[1] = keyBase[1].Substring(0, keyBase[1].Length - ext.Length - 1); } // {ClassName, MethodName} var key = new RequestPath(keyBase[0], keyBase[1]); OperationHandler handler; if (handlers.TryGetValue(key, out handler)) { // verb check if (StringComparer.OrdinalIgnoreCase.Equals(method, "GET")) { verb = AcceptVerbs.Get; } else if (StringComparer.OrdinalIgnoreCase.Equals(method, "POST")) { verb = AcceptVerbs.Post; } else if (StringComparer.OrdinalIgnoreCase.Equals(method, "PUT")) { verb = AcceptVerbs.Put; } else if (StringComparer.OrdinalIgnoreCase.Equals(method, "DELETE")) { verb = AcceptVerbs.Delete; } else if (StringComparer.OrdinalIgnoreCase.Equals(method, "PATCH")) { verb = AcceptVerbs.Patch; } else { goto VERB_MISSING; } if (!handler.AcceptVerb.HasFlag(verb)) { goto VERB_MISSING; } return(handler); // OK } else { goto NOT_FOUND; } VERB_MISSING: coorinator.OnProcessInterrupt(options, environment, InterruptReason.MethodNotAllowed, "MethodName:" + method); options.Logger.MethodNotAllowed(OperationMissingKind.MethodNotAllowed, path, method); if (options.OperationMissingHandlingPolicy == OperationMissingHandlingPolicy.ThrowException) { throw new MethodNotAllowedException(OperationMissingKind.MethodNotAllowed, path, method); } else { environment.EmitMethodNotAllowed(); if (options.OperationMissingHandlingPolicy == OperationMissingHandlingPolicy.ReturnErrorStatusCodeIncludeErrorDetails) { environment.EmitStringMessage("MethodNotAllowed:" + method); } return(null); } NOT_FOUND: coorinator.OnProcessInterrupt(options, environment, InterruptReason.OperationNotFound, "SearchedPath:" + path); options.Logger.OperationNotFound(OperationMissingKind.OperationNotFound, path); if (options.OperationMissingHandlingPolicy == OperationMissingHandlingPolicy.ThrowException) { throw new OperationNotFoundException(OperationMissingKind.MethodNotAllowed, path); } else { environment.EmitNotFound(); if (options.OperationMissingHandlingPolicy == OperationMissingHandlingPolicy.ReturnErrorStatusCodeIncludeErrorDetails) { environment.EmitStringMessage("OperationNotFound:" + path); } return(null); } }
public Html(AcceptVerbs acceptVerbs = AcceptVerbs.Get | AcceptVerbs.Post) : base(acceptVerbs, typeof(HtmlContentFormatterFactory)) { }
OperationHandler SelectHandler(IDictionary<string, object> environment, IOperationCoordinator coorinator, out AcceptVerbs verb, out string ext) { // out default verb = AcceptVerbs.Get; ext = ""; var path = environment["owin.RequestPath"] as string; var method = environment["owin.RequestMethod"] as string; // extract path var keyBase = path.Trim('/').Split('/'); if (keyBase.Length != 2) { goto NOT_FOUND; } // extract "extension" for media type var extStart = keyBase[1].LastIndexOf("."); if (extStart != -1) { ext = keyBase[1].Substring(extStart + 1); keyBase[1] = keyBase[1].Substring(0, keyBase[1].Length - ext.Length - 1); } // {ClassName, MethodName} var key = new RequestPath(keyBase[0], keyBase[1]); OperationHandler handler; if (handlers.TryGetValue(key, out handler)) { // verb check if (StringComparer.OrdinalIgnoreCase.Equals(method, "GET")) { verb = AcceptVerbs.Get; } else if (StringComparer.OrdinalIgnoreCase.Equals(method, "POST")) { verb = AcceptVerbs.Post; } else if (StringComparer.OrdinalIgnoreCase.Equals(method, "PUT")) { verb = AcceptVerbs.Put; } else if (StringComparer.OrdinalIgnoreCase.Equals(method, "DELETE")) { verb = AcceptVerbs.Delete; } else if (StringComparer.OrdinalIgnoreCase.Equals(method, "PATCH")) { verb = AcceptVerbs.Patch; } else { goto VERB_MISSING; } if (!handler.AcceptVerb.HasFlag(verb)) { goto VERB_MISSING; } return handler; // OK } else { goto NOT_FOUND; } VERB_MISSING: coorinator.OnProcessInterrupt(options, environment, InterruptReason.MethodNotAllowed, "MethodName:" + method); options.Logger.MethodNotAllowed(OperationMissingKind.MethodNotAllowed, path, method); if (options.OperationMissingHandlingPolicy == OperationMissingHandlingPolicy.ThrowException) { throw new MethodNotAllowedException(OperationMissingKind.MethodNotAllowed, path, method); } else { environment.EmitMethodNotAllowed(); if (options.OperationMissingHandlingPolicy == OperationMissingHandlingPolicy.ReturnErrorStatusCodeIncludeErrorDetails) { environment.EmitStringMessage("MethodNotAllowed:" + method); } return null; } NOT_FOUND: coorinator.OnProcessInterrupt(options, environment, InterruptReason.OperationNotFound, "SearchedPath:" + path); options.Logger.OperationNotFound(OperationMissingKind.OperationNotFound, path); if (options.OperationMissingHandlingPolicy == OperationMissingHandlingPolicy.ThrowException) { throw new OperationNotFoundException(OperationMissingKind.MethodNotAllowed, path); } else { environment.EmitNotFound(); if (options.OperationMissingHandlingPolicy == OperationMissingHandlingPolicy.ReturnErrorStatusCodeIncludeErrorDetails) { environment.EmitStringMessage("OperationNotFound:" + path); } return null; } }
OperationHandler SelectHandler(IDictionary<string, object> environment, out AcceptVerbs verb, out string ext) { // out default verb = AcceptVerbs.Get; ext = ""; // verb check var method = environment["owin.RequestMethod"]; if (StringComparer.OrdinalIgnoreCase.Equals(method, "GET")) { verb = AcceptVerbs.Get; } else if (StringComparer.OrdinalIgnoreCase.Equals(method, "POST")) { verb = AcceptVerbs.Post; } else { environment.EmitMethodNotAllowed(); return null; } // extract path var path = environment["owin.RequestPath"] as string; var keyBase = path.Trim('/').Split('/'); if (keyBase.Length != 2) { environment.EmitNotFound(); return null; } // extract "extension" for media type var extStart = keyBase[1].LastIndexOf("."); if (extStart != -1) { ext = keyBase[1].Substring(extStart + 1); keyBase[1] = keyBase[1].Substring(0, keyBase[1].Length - ext.Length - 1); } // {ClassName, MethodName} var key = new RequestPath(keyBase[0], keyBase[1]); OperationHandler handler; if (handlers.TryGetValue(key, out handler)) { return handler; } else { environment.EmitNotFound(); return null; } }
/// <summary>Append operation specific option.</summary> /// <param name="acceptVerbs">Overwrite AcceptVerb.</param> public OperationOptionAttribute(AcceptVerbs acceptVerbs) { this.AcceptVerbs = acceptVerbs; }
// get handler private OperationHandler SelectHandler(string requestUri, IDictionary<string, object> environment, out AcceptVerbs verb) { verb = AcceptVerbs.Unknown; // regex優先 regex指定していない場合containsで判断 var mapped = _options.BehaviorRouter.Instance.FirstOrDefault(rule => rule.RequestUriRegex != null ? rule.RequestUriRegex.IsMatch(requestUri) : requestUri.Contains(rule.RequestUri)); if (mapped == null) return null; var key = new RequestPath(mapped.ClassName, mapped.MethodName); if (!_handlers.Any(kvp => kvp.Key.Equals(key))) return null; var handler = _handlers.First(kvp => kvp.Key.Equals(key)).Value; var method = environment["owin.RequestMethod"] as string; if (StringComparer.OrdinalIgnoreCase.Equals(method, "GET")) verb = AcceptVerbs.Get; else if (StringComparer.OrdinalIgnoreCase.Equals(method, "POST")) verb = AcceptVerbs.Post; else if (StringComparer.OrdinalIgnoreCase.Equals(method, "PUT")) verb = AcceptVerbs.Put; else if (StringComparer.OrdinalIgnoreCase.Equals(method, "DELETE")) verb = AcceptVerbs.Delete; else if (StringComparer.OrdinalIgnoreCase.Equals(method, "PATCH")) verb = AcceptVerbs.Patch; return handler; }