Пример #1
0
        public DataSet ExecuteQuery(DataFeed feed, HttpRequestBase request)
        {
            var parameters = new Dictionary <object, object>();

            foreach (var key in request.QueryString.AllKeys)
            {
                parameters.Add(key, request.QueryString[key]);
            }

            var util = new DataFeedUtility(Provider);

            feed.ApplyDefaultParameters(parameters);
            return(util.ExecuteQuery(feed, ScriptParameters.Create(parameters)));
        }
Пример #2
0
 public DataTable[] GetTables(DataSet ds)
 {
     return(DataFeedUtility.GetTables(ds, Key).ToArray());
 }
Пример #3
0
 public void DeleteFeed()
 {
     DataFeedUtility.DeleteFeed(GetFeed(), CurrentUser);
 }
Пример #4
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);
        }