예제 #1
0
        private void UpdateOrPublishPost(ArticleDraft draft)
        {
            try
            {
                NotifyStatus("发布中... 标题:" + draft.Title);
                _state = WebBrowserState.Request;
                var scripts = GetInvokeJS(draft);
                //每执行一个脚本 等待
                foreach (var scriptKv in scripts)
                {
                    _browser.ExecuteScriptAsync(scriptKv.Value);
                    switch (scriptKv.Key)
                    {
                    case JSType.ADD_META:
                    {
                        _browser.ReqHandler.IsResponceSuccess = IsAddMetaSuccess;
                        _browser.ReqHandler.ResponceSuccess   = AddMetaSuccess;
                        //等待添加Meta完成
                        WaitResponceSuccess();
                    }
                    break;

                    case JSType.ADD_META_NO_SUBMIT:
                    case JSType.PUBLISH:
                        break;
                    }
                }

                _browser.ReqHandler.IsResponceSuccess = IsPublishSuccess;
                _browser.ReqHandler.ResponceSuccess   = PublishSuccess;
                //等待文章发布/更新
                if (!WaitResponceSuccess())
                {
                    var logInfo = new StringBuilder();
                    foreach (var script in scripts)
                    {
                        logInfo.AppendLine(script.Value);
                    }
                    Logger.Info("\n发布超时:" + logInfo);
                    NotifyStatus("发布超时!标题:" + draft.Title);

                    ResetReqHandler();
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }