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);
        }
Example #4
0
        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();
            }
        }
Example #5
0
        /// <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;
        }