public ActionResult Create()
        {
            var model = new RemoteEndpointSetting();

            model.Enabled = true;
            return(View(model));
        }
Beispiel #2
0
        public virtual void ProcessQueueItem(OutgoingQueue queueItem)
        {
            Exception exception = null;

            queueItem.RetryTimes          = queueItem.RetryTimes + 1;
            queueItem.UtcLastExecutedTime = DateTime.UtcNow;

            var remoteEndpoint = new RemoteEndpointSetting(queueItem.Site, queueItem.RemoteEndpoint).AsActual();

            if (remoteEndpoint != null)
            {
                try
                {
                    switch (queueItem.PublishingObject)
                    {
                    case PublishingObject.Page:
                        PublishPage(ref queueItem, remoteEndpoint);
                        break;

                    case PublishingObject.TextContent:
                        PublishTextContent(ref queueItem, remoteEndpoint);
                        break;

                    default:
                        break;
                    }
                    queueItem.Status = QueueStatus.Processed;
                }
                catch (Exception e)
                {
                    Kooboo.HealthMonitoring.Log.LogException(e);
                    exception = e;

                    var maxRetryTimes = remoteEndpoint.MaxRetryTimes > 0 ? remoteEndpoint.MaxRetryTimes : 5;
                    if (queueItem.RetryTimes < maxRetryTimes)
                    {
                        queueItem.Status = QueueStatus.Pending;
                    }
                    else
                    {
                        queueItem.Status = QueueStatus.Susppended;
                    }
                }
            }
            else
            {
                NoAnyEndPoint(ref queueItem, queueItem.RemoteEndpoint);
            }
            if (queueItem.Status == QueueStatus.Processed)
            {
                _outgoingQueueProvider.Remove(queueItem);
            }
            else
            {
                _outgoingQueueProvider.Update(queueItem, queueItem);
            }


            AddLog(queueItem, exception);
        }
Beispiel #3
0
 public virtual void Delete(string[] uuids)
 {
     foreach (string uuid in uuids)
     {
         var model = new RemoteEndpointSetting(uuid).AsActual();
         this._remoteSettingProvider.Remove(model);
     }
 }
        protected virtual void PublishTextContent(ref RemotePublishingQueue queueItem, PublishingAction action, out RemoteEndpointSetting remoteEndpoint)
        {
            remoteEndpoint = null;
            var mapping = new RemoteTextFolderMapping(queueItem.Site, queueItem.TextFolderMapping).AsActual();

            if (mapping == null)
            {
                NoSuchPublishingMapping(ref queueItem);
                return;
            }
            remoteEndpoint = new RemoteEndpointSetting(queueItem.Site, mapping.RemoteEndpoint).AsActual();

            if (remoteEndpoint == null)
            {
                NoSuchEndpoint(ref queueItem, mapping.RemoteEndpoint);
                return;
            }
            var contentIntegrateId = new ContentIntegrateId(queueItem.ObjectUUID);
            var repository         = new Repository(contentIntegrateId.Repository).AsActual();

            if (repository != null)
            {
                var textFolder = new TextFolder(repository, contentIntegrateId.FolderName).AsActual();
                if (textFolder != null)
                {
                    var contentUUID = contentIntegrateId.ContentUUID;

                    var content = textFolder.CreateQuery().WhereEquals("UUID", contentUUID).FirstOrDefault();
                    if (content != null)
                    {
                        var cmisService = _cmisSession.OpenSession(remoteEndpoint.CmisService, remoteEndpoint.CmisUserName, remoteEndpoint.CmisPassword);

                        switch (action)
                        {
                        case PublishingAction.Publish:
                            content.Published = true;
                            var categories = _textContentProvider.QueryCategories(content);
                            cmisService.AddTextContent(remoteEndpoint.RemoteRepositoryId, mapping.RemoteFolderId, content, categories);
                            queueItem.UtcProcessedPublishTime = DateTime.UtcNow;
                            break;

                        case PublishingAction.Unbpulish:
                            cmisService.DeleteTextContent(remoteEndpoint.RemoteRepositoryId, mapping.RemoteFolderId, content.UUID);
                            queueItem.UtcProcessedUnpublishTime = DateTime.UtcNow;
                            break;

                        case PublishingAction.None:
                        default:
                            break;
                        }
                        return;
                    }
                }
            }

            NoSuchObjectMessage(ref queueItem);
        }
Beispiel #5
0
        protected virtual void PublishPage(ref RemotePublishingQueue queueItem, PublishingAction action, out RemoteEndpointSetting remoteEndpoint)
        {
            remoteEndpoint = new RemoteEndpointSetting()
            {
                SiteName = queueItem.SiteName, Name = queueItem.RemoteEndpoint
            }.AsActual();

            if (remoteEndpoint == null)
            {
                NoSuchEndpoint(ref queueItem, queueItem.RemoteEndpoint);
            }

            var site = new Site(queueItem.SiteName).AsActual();

            if (site != null)
            {
                var page = new Page(site, queueItem.ObjectUUID).AsActual();
                if (page != null)
                {
                    var cmisService = _cmisSession.OpenSession(remoteEndpoint.CmisService, remoteEndpoint.CmisUserName, remoteEndpoint.CmisPassword);
                    switch (action)
                    {
                    case PublishingAction.Publish:
                        if (queueItem.PublishDraft)
                        {
                            page = ((IPageProvider)_pageManager.Provider).GetDraft(page);
                        }
                        page.Published = true;
                        cmisService.AddPage(remoteEndpoint.RemoteRepositoryId, page);
                        queueItem.UtcProcessedPublishTime = DateTime.UtcNow;
                        break;

                    case PublishingAction.Unbpulish:
                        page.Published = false;
                        cmisService.DeletePage(remoteEndpoint.RemoteRepositoryId, page.FullName);
                        queueItem.UtcProcessedUnpublishTime = DateTime.UtcNow;
                        break;

                    case PublishingAction.None:
                    default:
                        queueItem.Status = QueueStatus.Processed;
                        break;
                    }
                }
                else
                {
                    NoSuchObjectMessage(ref queueItem);
                }
            }
            else
            {
                NoSuchObjectMessage(ref queueItem);
            }
        }
        public virtual IEnumerable <RelationModel> Relations(RemoteEndpointSetting remoteEndpointSetting)
        {
            var allTextFolderMappings = _textFolderMappingProvider.All(remoteEndpointSetting.Site);

            return(allTextFolderMappings.Select(it => it.AsActual()).Where(it => it.RemoteEndpoint.EqualsOrNullEmpty(remoteEndpointSetting.UUID, StringComparison.OrdinalIgnoreCase))
                   .Select(it => new RelationModel()
            {
                ObjectUUID = it.UUID,
                RelationObject = it.RemoteEndpoint,
                RelationType = "Text folder mapping"
            }));
        }
        public ActionResult Create(RemoteEndpointSetting setting, string @return)
        {
            var resultEntry = new JsonResultData(ModelState);

            if (ModelState.IsValid)
            {
                resultEntry.RunWithTry((data) =>
                {
                    _manager.Add(setting);
                    data.RedirectUrl = @return;
                });
            }
            return(Json(resultEntry));
        }
 public virtual void Delete(Site site, string[] uuids)
 {
     foreach (string uuid in uuids)
     {
         var model = new RemoteEndpointSetting(site, uuid).AsActual();
         if (model != null)
         {
             if (Relations(model).Count() > 0)
             {
                 throw new Exception(string.Format("'{0}' is being used".Localize(), uuid));
             }
             this._remoteSettingProvider.Remove(model);
         }
     }
 }
        public ActionResult Edit(RemoteEndpointSetting setting, string @return)
        {
            var resultEntry = new JsonResultData(ModelState);

            if (ModelState.IsValid)
            {
                resultEntry.RunWithTry((data) =>
                {
                    var oldModel = _manager.Get(setting.UUID);
                    _manager.Update(setting, oldModel);
                    resultEntry.RedirectUrl = @return;
                });
            }
            return(Json(resultEntry));
        }
        protected virtual void PublishTextContent(ref OutgoingQueue queueItem, RemoteEndpointSetting remoteEndpoint)
        {
            var contentIntegrateId = new ContentIntegrateId(queueItem.ObjectUUID);
            var repository         = new Repository(contentIntegrateId.Repository).AsActual();

            if (repository != null)
            {
                var textFolder = new TextFolder(repository, contentIntegrateId.FolderName).AsActual();
                if (textFolder != null)
                {
                    var contentUUID = contentIntegrateId.ContentUUID;

                    var content = textFolder.CreateQuery().WhereEquals("UUID", contentUUID).FirstOrDefault();
                    if (content != null)
                    {
                        var cmisService = _cmisSession.OpenSession(remoteEndpoint.CmisService, remoteEndpoint.CmisUserName, remoteEndpoint.CmisPassword);

                        switch (queueItem.Action)
                        {
                        case PublishingAction.Publish:
                            content.Published = true;
                            var categories = _textContentProvider.QueryCategories(content);
                            cmisService.AddTextContent(remoteEndpoint.RemoteRepositoryId, queueItem.RemoteFolderId, content, categories);
                            break;

                        case PublishingAction.Unbpulish:
                            cmisService.DeleteTextContent(remoteEndpoint.RemoteRepositoryId, queueItem.RemoteFolderId, content.UUID);
                            break;

                        case PublishingAction.None:
                        default:
                            queueItem.Status = QueueStatus.Processed;
                            break;
                        }
                        return;
                    }
                }
            }
            NoSuchObjectMessage(ref queueItem);
        }
        public virtual void ProcessQueueItem(RemotePublishingQueue queueItem, DateTime executeTime)
        {
            Exception exception = null;
            //bool hasMoreAction;
            QueueStatus           logStatus       = QueueStatus.OK;
            var                   goingActionInfo = queueItem.GoingActionInfo;
            RemoteEndpointSetting remoteEndpoint  = null;

            if (goingActionInfo.TimeSpanToProcess > TimeSpan.Zero)
            {
                return;
            }
            try
            {
                queueItem.RetryTimes = queueItem.RetryTimes + 1;
                queueItem.Message    = null;
                if (goingActionInfo.TimeSpanToProcess == null && goingActionInfo.HasNextAction == false)
                {
                    queueItem.Status = QueueStatus.Processed;
                }
                else
                {
                    if (goingActionInfo.HasNextAction)
                    {
                        queueItem.Status = QueueStatus.Pending;
                    }
                    else
                    {
                        queueItem.Status = QueueStatus.Processed;
                    }
                    if (goingActionInfo.PublishingAction != PublishingAction.None)
                    {
                        switch (queueItem.PublishingObject)
                        {
                        case PublishingObject.Page:
                            PublishPage(ref queueItem, goingActionInfo.PublishingAction, out remoteEndpoint);
                            break;

                        case PublishingObject.TextContent:
                            PublishTextContent(ref queueItem, goingActionInfo.PublishingAction, out remoteEndpoint);
                            break;

                        default:
                            break;
                        }
                    }
                }
                if (queueItem.Status == QueueStatus.Warning)
                {
                    logStatus = QueueStatus.Warning;
                }
                else
                {
                    logStatus = QueueStatus.OK;
                }
                if (goingActionInfo.HasNextAction)
                {
                    queueItem.RetryTimes = 0;
                }
            }
            catch (Exception e)
            {
                Kooboo.HealthMonitoring.Log.LogException(e);
                queueItem.Status  = QueueStatus.Warning;
                queueItem.Message = e.Message;
                exception         = e;
                logStatus         = QueueStatus.Warning;

                if (remoteEndpoint != null)
                {
                    var maxRetryTimes = remoteEndpoint.MaxRetryTimes > 0 ? remoteEndpoint.MaxRetryTimes : 5;
                    if (queueItem.RetryTimes < maxRetryTimes)
                    {
                        queueItem.Status = QueueStatus.Pending;
                    }
                    else
                    {
                        queueItem.Status = QueueStatus.Susppended;
                    }
                }
                else
                {
                    queueItem.Status = QueueStatus.Susppended;
                }
            }

            if (queueItem.Status == QueueStatus.Processed)
            {
                _remotePublishingQueueProvider.Remove(queueItem);
            }
            else
            {
                _remotePublishingQueueProvider.Update(queueItem, queueItem);
            }
            if (goingActionInfo.PublishingAction != PublishingAction.None)
            {
                AddLog(queueItem, logStatus, goingActionInfo.PublishingAction, exception);
            }
        }