public static UriBuilder BuildableUri(this HttpRequest request, BuildableUriOptions options = BuildableUriOptions.None) { var hostComponents = request.Host.ToUriComponent().Split(':'); var builder = new UriBuilder { Scheme = request.Scheme, Host = hostComponents[0], Path = options.HasFlagFast(BuildableUriOptions.IncludePath) ? request.Path : new PathString(""), Query = options.HasFlagFast(BuildableUriOptions.IncludeQuery) ? request.QueryString.ToUriComponent().TrimStart('?') : "" }; if (hostComponents.Length == 2) { builder.Port = Convert.ToInt32(hostComponents[1]); } if (IsWellKnownPort(builder)) { builder.Port = -1; } return(builder); }
public static bool HasFlagFast(this BuildableUriOptions value, BuildableUriOptions flag) { return((value & flag) != 0); }