Example #1
0
        public override async ValueTask <RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values)
        {
            var requestPath = httpContext.Request.Path.Value.ToLower();

            if (!string.IsNullOrEmpty(requestPath) && requestPath[0] == '/')
            {
                requestPath = requestPath.Substring(1);
            }

            var qSettings = _appSetting.Get <List <QSettingModel> >("QueueSettings");
            var mItems    = qSettings?.FindAll(s => requestPath.StartsWith(s.Prefix.ToLower()));
            var item      = mItems?.OrderByDescending(s => s.Prefix.Length).FirstOrDefault();

            var pageFound = item != null;

            if (!pageFound)
            {
                return(values);
            }


            //TODO: Handle query strings
            values["controller"] = "Api";
            values["action"]     = "Index";

            return(values);
        }
Example #2
0
        public async Task <IActionResult> Index()
        {
            try
            {
                var path      = _sendingModel.Url.ToLower();
                var qSettings = _appSetting.Get <List <QSettingModel> >("QueueSettings");
                var mItems    = qSettings?.FindAll(s => s.Active && path.StartsWith(s.Prefix.ToLower()));
                var queue     = mItems?.OrderByDescending(s => s.Prefix.Length).FirstOrDefault();

                if (queue == null)
                {
                    return(StatusCode((int)GlobalStatusCode.NotFound, GlobalStatusCode.NotFound.GetEnumName() + ", 001"));
                }

                if (queue.MustAuthorize)
                {
                    if (!_sendingModel.IsAuthenticated)
                    {
                        return(StatusCode((int)GlobalStatusCode.AccessDenied,
                                          GlobalStatusCode.AccessDenied.GetEnumName()));
                    }

                    /*var user = await _cacheMemory.Get<BaseUserInfo>(_sendingModel.TokenInfo.TokenId, Provider.Globals);
                     * if (user == null)
                     * {
                     *  var uInfo = await _authenticateService.Get(_sendingModel.TokenInfo.TokenId);
                     *  user = uInfo?.UserInfo;
                     * }
                     *
                     * if (user == null)
                     * {
                     *  return StatusCode((int) GlobalStatusCode.AccessDenied,
                     *      GlobalStatusCode.AccessDenied.GetEnumName());
                     * }*/
                }

                var res = await _transmitter.Request(queue, _sendingModel);

                if (res == null)
                {
                    return(StatusCode((int)GlobalStatusCode.InternalServerError,
                                      GlobalStatusCode.InternalServerError.GetEnumName()));
                }

                if (!(res is QWebResponse response))
                {
                    return(StatusCode((int)GlobalStatusCode.InternalServerError,
                                      GlobalStatusCode.InternalServerError.GetEnumName()));
                }

                if (response.Headers == null)
                {
                    response.Headers = new Dictionary <string, string>();
                }

                if (!response.Headers.ContainsKey("Content-Type"))
                {
                    response.Headers.Add("Content-Type", "application/json");
                }

                foreach (var header in response.Headers)
                {
                    Response.Headers.Add(header.Key, header.Value);
                }

                return(StatusCode(response.Status, JsonConvert.DeserializeObject(response.Response)));
            }
            catch (Exception e)
            {
                return(StatusCode((int)GlobalStatusCode.InternalServerError, e));
            }
        }
Example #3
0
 public static QSettingModel GetSetting(this IAppSetting appSetting, string name,
                                        string section = "QueueSettings")
 {
     return(appSetting.Get <List <QSettingModel> >(section)
            .First(s => s.Active && s.Name == name));
 }
Example #4
0
        private SecurityKey GetSymmetricSecurityKey()
        {
            var symmetricKey = Convert.FromBase64String(_appSetting.Get("AuthSignKey"));

            return(new SymmetricSecurityKey(symmetricKey));
        }
Example #5
0
 public static IEnumerable <QSettingModel> GetQSettings(this IAppSetting appSetting, string section = "QueueSettings")
 {
     return(appSetting.Get <List <QSettingModel> >(section));
 }