public static string ToApplicationPath(this IHttpRequest Request, string RelativePart = null) { if (string.IsNullOrWhiteSpace(RelativePart)) { return(Request.GetApplicationUrl()); } return(Request.GetApplicationUrl().CombineWith(RelativePart)); }
/// <summary> /// Non ASP.NET requests /// </summary> /// <param name="request"></param> /// <param name="response"></param> /// <param name="operationName"></param> public void ProcessRequest(IHttpRequest request, IHttpResponse response, string operationName) { if (string.IsNullOrEmpty(RelativeUrl) && string.IsNullOrEmpty(AbsoluteUrl)) throw new ArgumentNullException("RelativeUrl or AbsoluteUrl"); if (!string.IsNullOrEmpty(AbsoluteUrl)) { response.StatusCode = (int)HttpStatusCode.Redirect; response.AddHeader(HttpHeaders.Location, this.AbsoluteUrl); } else { var absoluteUrl = request.GetApplicationUrl(); if (!string.IsNullOrEmpty(RelativeUrl)) { if (this.RelativeUrl.StartsWith("/")) absoluteUrl = absoluteUrl.CombineWith(this.RelativeUrl); else if (this.RelativeUrl.StartsWith("~/")) absoluteUrl = absoluteUrl.CombineWith(this.RelativeUrl.Replace("~/", "")); else absoluteUrl = request.AbsoluteUri.CombineWith(this.RelativeUrl); } response.StatusCode = (int)HttpStatusCode.Redirect; response.AddHeader(HttpHeaders.Location, absoluteUrl); } response.EndHttpRequest(skipClose:true); }
private string CalculateAppUrl(IHttpRequest request, string aspnetSubPath) { string serviceStackUrl = request.GetApplicationUrl(); if (!SupportWebApplication) { return(serviceStackUrl); //Like version 1.0.4 } if (serviceStackUrl.Equals(aspnetSubPath)) { return(serviceStackUrl); } if (aspnetSubPath != null && serviceStackUrl.StartsWith(aspnetSubPath)) { return(serviceStackUrl); } string newUrl; if (TryBuildNewUrl(serviceStackUrl, aspnetSubPath, out newUrl)) { return(newUrl); } return(serviceStackUrl); }
public void RequestFilter(IHttpRequest req, IHttpResponse res, object requestDto) { string auth = req.Headers.Get("Authorization"); bool validUser = false; if (!string.IsNullOrWhiteSpace(auth)) { Match rawToken = MATCH_TOKEN.Match(auth); if (rawToken.Success && rawToken.Groups["token_type"].Success && rawToken.Groups["token"].Success) { DataModels.Token token = TokenModel.GetToken <DataModels.Token>(rawToken.Groups["token"].Value); req.Items.Add("auth:rawtoken", rawToken); if (SetToken) { req.Items.Add("auth:token", token); } if (SetClient) { req.Items.Add("auth:client", ClientModel.GetClientByID(token.client_id)); } if (!string.IsNullOrWhiteSpace(token.resource_owner_id) && SetUser) { DataModels.ResourceOwner owner = ResourceOwnerModel.GetByID(token.resource_owner_id); if (owner != null) { req.Items.Add("auth:user", owner); validUser = true; } } } } if (RequireValidUser && !validUser) { res.StatusCode = (int)System.Net.HttpStatusCode.Unauthorized; res.StatusDescription = "Valid bearer token required"; res.AddHeader("WWW-Authenticate", "OAuth2 realm=\"{0}\"".Fmt(req.GetApplicationUrl())); res.Close(); } }
/// <summary> /// Non ASP.NET requests /// </summary> /// <param name="request"></param> /// <param name="response"></param> /// <param name="operationName"></param> public void ProcessRequest(IHttpRequest request, IHttpResponse response, string operationName) { if (string.IsNullOrEmpty(RelativeUrl) && string.IsNullOrEmpty(AbsoluteUrl)) { throw new ArgumentNullException("RelativeUrl or AbsoluteUrl"); } if (!string.IsNullOrEmpty(AbsoluteUrl)) { response.StatusCode = (int)HttpStatusCode.Redirect; response.AddHeader(HttpHeaders.Location, this.AbsoluteUrl); } else { var absoluteUrl = request.GetApplicationUrl(); if (!string.IsNullOrEmpty(RelativeUrl)) { if (this.RelativeUrl.StartsWith("/")) { absoluteUrl = absoluteUrl.CombineWith(this.RelativeUrl); } else if (this.RelativeUrl.StartsWith("~/")) { absoluteUrl = absoluteUrl.CombineWith(this.RelativeUrl.Replace("~/", "")); } else { absoluteUrl = request.AbsoluteUri.CombineWith(this.RelativeUrl); } } response.StatusCode = (int)HttpStatusCode.Redirect; response.AddHeader(HttpHeaders.Location, absoluteUrl); } response.EndHttpHandlerRequest(skipClose: true); }
private string CalculateAppUrl(IHttpRequest request, string aspnetSubPath) { string serviceStackUrl = request.GetApplicationUrl(); if (!SupportWebApplication) return serviceStackUrl; //Like version 1.0.4 if (serviceStackUrl.Equals(aspnetSubPath)) return serviceStackUrl; if (aspnetSubPath != null && serviceStackUrl.StartsWith(aspnetSubPath)) return serviceStackUrl; string newUrl; if (TryBuildNewUrl(serviceStackUrl, aspnetSubPath, out newUrl)) return newUrl; return serviceStackUrl; }