예제 #1
0
        private async Task <FWFormFile> BindFile(ModelBindingContext bindingContext, string value)
        {
            var fileInfo = FWJsonHelper.Deserialize <FileData>(value);

            // Attempts to find the file at the tmp folder.
            var filePath = Path.Combine(FWApp.WebRootPath, "tmp", fileInfo.FileId);

            if (File.Exists(filePath))
            {
                var f = File.OpenRead(filePath);

                byte[] content = new byte[f.Length];
                await f.ReadAsync(content, 0, content.Length);

                return(new FWFormFile()
                {
                    Content = content,
                    Length = f.Length,
                    FileName = fileInfo.FileName,
                    ContentType = fileInfo.ContentType
                });
            }

            return(null);
        }
예제 #2
0
        private void AddAlert(FWMessage alert)
        {
            Queue <FWMessage> alerts;

            if (TempData.ContainsKey(ALERT_QUEUE))
            {
                alerts = FWJsonHelper.Deserialize <Queue <FWMessage> >(TempData[ALERT_QUEUE].ToString());
            }
            else
            {
                alerts = new Queue <FWMessage>();
            }

            alerts.Enqueue(alert);
            TempData[ALERT_QUEUE] = FWJsonHelper.Serialize(alerts);
        }
예제 #3
0
        private object ReadResultMessagesForAjaxResponses(object data)
        {
            if (TempData.ContainsKey(ALERT_QUEUE))
            {
                var alerts = FWJsonHelper.Deserialize <Queue <FWMessage> >(TempData[ALERT_QUEUE].ToString());

                if (alerts != null)
                {
                    var settings = new JsonSerializerSettings
                    {
                        ContractResolver = new CamelCasePropertyNamesContractResolver()
                    };
                    data = new { content = data, alerts = JsonConvert.SerializeObject(alerts, settings) };
                }
            }

            return(data);
        }
        private async Task ValidateRecaptcha(ActionExecutingContext context, string token)
        {
            using (var webClient = new HttpClient())
            {
                var content = new FormUrlEncodedContent(new[]
                {
                    new KeyValuePair <string, string>("secret", _options.PrivateKey),
                    new KeyValuePair <string, string>("response", token)
                });
                HttpResponseMessage response = await webClient.PostAsync(_options.ApiEndpoint, content);

                string json = await response.Content.ReadAsStringAsync();

                var reCaptchaResponse = FWJsonHelper.Deserialize <ReCaptchaResponse>(json);
                if (reCaptchaResponse == null)
                {
                    AddModelError(context, Resources.Resources.FWRecaptcha_NoResponse);
                }
                else if (!reCaptchaResponse.Success)
                {
                    AddModelError(context, Resources.Resources.FWRecaptcha_Invalid);
                }
            }
        }
예제 #5
0
        /// <summary>
        /// In a Razor layoutpage, renders the last request alerts.
        /// </summary>
        /// <returns>The alerts.</returns>
        public IHtmlContent RenderAlerts()
        {
            var tempData = _tmpDataFactory.GetTempData(_httpContextAccessor.HttpContext);

            if (!tempData.ContainsKey(FWBaseController.ALERT_QUEUE))
            {
                return(new HtmlString(string.Empty));
            }

            var alerts = FWJsonHelper.Deserialize <Queue <FWMessage> >(tempData[FWBaseController.ALERT_QUEUE].ToString());

            StringBuilder sb = new StringBuilder();

            if (alerts != null)
            {
                foreach (var alert in alerts)
                {
                    var alertControl = new FWMessageControl(alert.Message, alert.Type);
                    sb.Append(alertControl.ToString());
                }
            }

            return(new HtmlString(sb.ToString()));
        }
예제 #6
0
 public string CreateChart()
 {
     return(FWJsonHelper.Serialize(this, true));
 }