예제 #1
0
        public Models.ImageExportStatusResponseModel GetImageExportStatus(string key)
        {
            bool      completed        = false;
            ExportKey exportKey        = null;
            string    extension        = string.Empty;
            string    extraData        = string.Empty;
            string    providerUrl      = string.Empty;
            string    fullPhysicalPath = string.Empty;

            Models.ImageExportStatusResponseModel ret = null;

            if (ExportKey.TryParse(key, out exportKey))
            {
                if (DateTime.UtcNow.Subtract(exportKey.Created).TotalSeconds >= 1000)
                {
                    ret = new Models.ImageExportStatusResponseModel()
                    {
                        Key     = exportKey.ToString(),
                        Success = false
                    };
                }
                else
                {
                    extension   = Enum.GetName(typeof(Models.ImageExportFormat), exportKey.Format).ToLowerInvariant();
                    providerUrl = System.Configuration.ConfigurationManager.AppSettings["ExportProviderUrl"];

                    if (!string.IsNullOrEmpty(providerUrl) && Ifly.Utils.WebResource.QueryStatus(string.Format("{0}/status?key={1}",
                                                                                                               providerUrl.TrimEnd('/'), System.Web.HttpContext.Current.Server.UrlEncode(exportKey.ToString())), out extraData) == HttpStatusCode.OK)
                    {
                        completed = true;
                    }
                    else
                    {
                        fullPhysicalPath = System.Web.HttpContext.Current.Server.MapPath(string.Format("~/App_Data/Exports/{0}/{1}.{2}",
                                                                                                       exportKey.PresentationId, exportKey.ToString(), extension));

                        if (File.Exists(fullPhysicalPath))
                        {
                            completed = true;
                        }
                    }

                    if (completed)
                    {
                        ret = new Models.ImageExportStatusResponseModel()
                        {
                            Key     = exportKey.ToString(),
                            Success = true
                        };
                    }
                }
            }

            return(ret);
        }
예제 #2
0
        public Models.VideoExportStatusResponseModel GetVideoExportStatus(string key, string continuation = null, string task = null)
        {
            bool      completed        = false;
            ExportKey exportKey        = null;
            string    extraData        = string.Empty;
            string    providerUrl      = string.Empty;
            string    fullPhysicalPath = string.Empty;

            Models.VideoExportStatusResponseModel ret = null;

            if (ExportKey.TryParse(key, out exportKey))
            {
                if (DateTime.UtcNow.Subtract(exportKey.Created).TotalSeconds >= 1000 && string.Compare(task ?? string.Empty, "publish", true) != 0)
                {
                    ret = new Models.VideoExportStatusResponseModel()
                    {
                        Key     = exportKey.ToString(),
                        Success = false
                    };
                }
                else
                {
                    providerUrl = System.Configuration.ConfigurationManager.AppSettings["ExportProviderUrl"];

                    if (!string.IsNullOrEmpty(providerUrl) && Ifly.Utils.WebResource.QueryStatus(string.Format("{0}/status?key={1}",
                                                                                                               providerUrl.TrimEnd('/'), System.Web.HttpContext.Current.Server.UrlEncode(exportKey.ToString())), out extraData) == HttpStatusCode.OK)
                    {
                        if (string.IsNullOrEmpty(continuation))
                        {
                            completed = true;
                        }
                        else
                        {
                            Ifly.Utils.WebResource.FireAndForget(string.Format("{0}/continue?key={1}&continuation={2}",
                                                                               providerUrl.TrimEnd('/'), System.Web.HttpContext.Current.Server.UrlEncode(exportKey.ToString()),
                                                                               System.Web.HttpContext.Current.Server.UrlEncode(continuation)));

                            ret = new Models.VideoExportStatusResponseModel()
                            {
                                Task = "publish"
                            };
                        }
                    }
                    else
                    {
                        fullPhysicalPath = System.Web.HttpContext.Current.Server.MapPath(string.Format("~/App_Data/Exports/{0}/{1}.mp4",
                                                                                                       exportKey.PresentationId, exportKey.ToString()));

                        if (File.Exists(fullPhysicalPath))
                        {
                            if (string.IsNullOrEmpty(continuation))
                            {
                                completed = true;
                            }
                            else
                            {
                                Ifly.ServiceAdapter.VideoPublishBroker.CreateVideoPublishTask(fullPhysicalPath, continuation);

                                ret = new Models.VideoExportStatusResponseModel()
                                {
                                    Task = "publish"
                                };
                            }
                        }
                        else
                        {
                            if (!string.IsNullOrEmpty((extraData = Ifly.ServiceAdapter.VideoPublishBroker.GetVideoPublishStatus(fullPhysicalPath))))
                            {
                                completed = true;
                            }
                        }
                    }

                    if (completed)
                    {
                        ret = new Models.VideoExportStatusResponseModel()
                        {
                            Key       = exportKey.ToString(),
                            ExtraData = extraData,
                            Success   = true
                        };
                    }
                }
            }

            return(ret);
        }