示例#1
0
        public string GetUrl(string id, string contentTypeId)
        {
            var contentType = ContentTypeProvider.Get(contentTypeId);

            var content = ContainerSpecificContentGetter.Get <IContent>(id, null, contentType.Container);

            return(UrlProvider.Get(content));
        }
示例#2
0
        public async Task InvokeAsync(string url, string html)
        {
            var uri = UrlProvider.Get(url);

            if (uri == null)
            {
                Logger?.Error("没有获取到网址");
                return;
            }
            var rules = RuleProvider.Get(url);

            if (rules == null || rules.Count < 1)
            {
                Logger?.Error("没有获取到规则");
                return;
            }
            UrlProvider.UpdateItem(uri, UriStatus.DOING);
            var success = true;

            Paused = false;
            PausedChanged?.Invoke(Paused);
            foreach (var item in rules)
            {
                var con = GetContainer(uri, PluginLoader.Render(item.Rules));
                con.Data = new RuleString(html);
                try
                {
                    await con.NextAsync();
                }
                catch (Exception ex)
                {
                    success = false;
                    Logger?.Error(ex.Message);
                }
            }
            UrlProvider.UpdateItem(uri, success ? UriStatus.DONE : UriStatus.ERROR);
            Paused = true;
            PausedChanged?.Invoke(Paused);
        }