Exemplo n.º 1
0
        private IDictionary <object, object> Replace(IDictionary <object, object> dict)
        {
            var result = new Dictionary <object, object>();

            foreach (var kvp in dict)
            {
                result.Add(kvp.Key, DataFeedItem.GetParamValue(kvp.Value.ToString()));
            }

            return(result);
        }
Exemplo n.º 2
0
        public ActionResult Ajax(FeedModel model)
        {
            model.Provider = Provider;

            if (model.Command == "run-script")
            {
                string    query  = string.Empty;
                string    error  = string.Empty;
                string    buffer = string.Empty;
                string    html   = string.Empty;
                Hashtable data   = new Hashtable();

                if (model.FeedType == DataFeedType.Python)
                {
                    query = model.Query;
                }
                else
                {
                    query = string.Format("data(sqlquery(\"{0}\"))", model.Query.Replace("\n", " ").Replace("\"", @"\""").Trim());
                }

                var dict = new Dictionary <object, object>();
                DataFeedItem.ApplyDefaultParameters(model.DefaultParameters, dict);

                var parameters = ScriptParameters.Create(dict);

                var result = _engine.Run(query, parameters);

                if (result.Exception != null)
                {
                    error = result.Exception.Message;
                }

                buffer = result.Buffer.ToString();
                html   = result.Html.ToString();
                if (result.DataSet.Count > 0)
                {
                    foreach (KeyValuePair <string, ScriptData> kvp in result.DataSet)
                    {
                        data.Add(kvp.Key, new { Headers = kvp.Value.GetHeaders().Select(x => x.DisplayText).ToArray(), Items = kvp.Value.GetItems() });
                    }
                }

                return(Json(new { Success = true, Message = "", Error = error, Buffer = buffer, Html = html, Data = data, Parameters = parameters.ToString() }));
            }
            else
            {
                return(Json(new { Success = false, Message = "Invalid command" }));
            }
        }
Exemplo n.º 3
0
        public ActionResult Index(string alias, string format, string key, string callback = null)
        {
            var model = new FeedModel
            {
                Provider    = Provider,
                CurrentUser = CurrentUser,
                Alias       = alias,
                Format      = format,
                Key         = key,
                Callback    = callback
            };

            if (string.IsNullOrEmpty(model.Alias))
            {
                return(RedirectToAction("List"));
            }

            ContentResult result = new ContentResult();

            var parameters = new Dictionary <object, object>();

            Merge(parameters, Request.QueryString);

            var feedResult = ServiceProvider.Current.Data.Feed.GetDataFeedResult(alias, key, parameters);

            try
            {
                var util = new DataFeedUtility(ServiceProvider.Current);

                if (feedResult == null)
                {
                    throw new Exception("Could not find feed: " + model.Alias);
                }
                else if (feedResult.Deleted)
                {
                    throw new Exception("Could not find feed: " + model.Alias);
                }
                else if (!feedResult.Active && !DataFeedItem.CanViewInactiveFeeds(CurrentUser))
                {
                    throw new Exception("Could not find feed: " + model.Alias);
                }
                else
                {
                    switch (model.Format)
                    {
                    case "xml":
                        result.Content     = util.XmlFeedContent(feedResult);
                        result.ContentType = "text/xml";
                        break;

                    case "rss":
                        result.Content     = util.RssFeedContent(feedResult, model.Key, Request.Url, Request.Path);
                        result.ContentType = "application/rss+xml";
                        break;

                    case "html":
                        return(View("Feed", model));

                    case "table":
                        result.Content     = util.HtmlFeedContent(feedResult, model.Format);
                        result.ContentType = "text/html";
                        break;

                    case "json":
                    case "jsonp":
                    case "datatables":
                        result.Content = util.JsonFeedContent(feedResult, model.Key, model.Format);
                        if (model.Format == "jsonp" && !string.IsNullOrEmpty(model.Callback))
                        {
                            result.Content = model.Callback + "(" + result.Content + ")";
                        }
                        result.ContentType = "application/json";
                        break;

                    case "ical":
                        result.Content     = util.IcalFeedContent(feedResult, model.Key, Request.ServerVariables["LOCAL_ADDR"]);
                        result.ContentType = "text/calendar";
                        Response.Charset   = string.Empty;
                        Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}-{1}.ics", feedResult.Alias, DateTime.Now.ToString("yyyyMMddHHmmss")));
                        break;

                    default:     //csv
                        result.Content     = util.CsvFeedContent(feedResult, model.Key);
                        result.ContentType = "text/csv";
                        Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}-{1}.csv", feedResult.Alias, DateTime.Now.ToString("yyyyMMddHHmmss")));
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                //model.App = "Content";
                model.ErrorMessage = ex.Message;
                switch (model.Format)
                {
                case "xml":
                    result.Content     = string.Format("<data name=\"LNF Feed Error\"><table name=\"default\"><row><Error>{0}</Error></row></table></data>", ex.Message);
                    result.ContentType = "text/xml";
                    break;

                case "rss":
                    result.Content     = string.Format("<?xml version=\"1.0\" encoding=\"UTF-8\"?><rss version=\"2.0\"><channel><title>LNF Feed Error</title><item><title>Error</title><description>{0}</description></item></channel></rss>", ex.Message);
                    result.ContentType = "application/rss+xml";
                    break;

                case "json":
                case "jsonp":
                case "datatables":
                    result.Content = "{\"Error\":\"" + ex.Message + "\"}";
                    if (model.Format == "jsonp" && !string.IsNullOrEmpty(model.Callback))
                    {
                        result.Content = model.Callback + "(" + result.Content + ")";
                    }
                    result.ContentType = "application/json";
                    break;

                case "ical":
                    result.Content     = string.Format("Error: {0}", ex.Message);
                    result.ContentType = "text/plain";
                    break;

                case "csv":
                    result.Content     = "Error" + Environment.NewLine + ex.Message;
                    result.ContentType = "text/csv";
                    Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}-{1}.csv", "lnf-feed-error", DateTime.Now.ToString("yyyyMMddHHmmss")));
                    break;

                default:
                    return(View("Launcher", model));
                }
            }

            return(result);
        }
 /// <summary>
 /// DataFeedItemThingOrText as a DataFeedItem.
 /// </summary>
 /// <param name="dataFeedItem">DataFeedItemThingOrText as a DataFeedItem.</param>
 public DataFeedItemThingOrText(DataFeedItem dataFeedItem)
     : base(dataFeedItem.Name.AsText)
 {
     AsDataFeedItem = dataFeedItem;
 }
Exemplo n.º 5
0
 /// <summary>
 /// Gets a dictionary that contains default parameters (if any) merged with the given parameters, overwritting defaults.
 /// </summary>
 public virtual void ApplyDefaultParameters(IDictionary <object, object> parameters) => DataFeedItem.ApplyDefaultParameters(DefaultParameters, parameters);