コード例 #1
0
        public object UAs(int offset, int limit, int groupId)
        {
            var paging = new Paging();

            paging.CurrentPage = (offset / limit) + 1;
            paging.PageSize    = limit;

            return(new
            {
                rows = UALiteDb.GetModels(paging, groupId),
                total = paging.Count
            });
        }
コード例 #2
0
ファイル: FeedJob.cs プロジェクト: kartik1001/RuiJi.Net
        public FeedSnapshot DoTask(FeedModel feed, bool persistence = false)
        {
            try
            {
                Logger.GetLogger(baseUrl).Info("do task -> request address " + feed.Address);

                var request = new Request(feed.Address);
                request.RunJS = (feed.RunJS == Status.ON);
                if (feed.Headers != null)
                {
                    request.Headers = feed.Headers;

                    if (request.Headers.Count(m => m.Name == "Referer") == 0)
                    {
                        request.Headers.Add(new WebHeader("Referer", request.Uri.AbsoluteUri));
                    }
                }

                request.Method = feed.Method;
                if (feed.Method == "POST" && !string.IsNullOrEmpty(feed.Data))
                {
                    request.Data = feed.Data;
                }

                var ua = UALiteDb.GetOne();
                if (!string.IsNullOrEmpty(ua))
                {
                    request.Headers.Add(new WebHeader("User-Agent", ua));
                }

                var response = NodeVisitor.Crawler.Request(request);

                if (response != null)
                {
                    Logger.GetLogger(baseUrl).Info("request " + feed.Address + " response code is " + response.StatusCode);
                }
                if (response == null)
                {
                    Logger.GetLogger(baseUrl).Error("request " + feed.Address + " response is null");
                }

                if (response != null && response.StatusCode == HttpStatusCode.OK)
                {
                    var content = Convert(response.Data.ToString(), Encoding.GetEncoding(response.Charset), Encoding.UTF8);

                    var snap = new FeedSnapshot
                    {
                        Url             = feed.Address,
                        Content         = content,
                        Type            = feed.Type,
                        BlockExpression = feed.BlockExpression,
                        RuiJiExpression = feed.RuiJiExpression
                    };

                    if (persistence)
                    {
                        var json = JsonConvert.SerializeObject(snap, Formatting.Indented);

                        var fileName = baseDir + @"snapshot\" + feed.Id + "_" + DateTime.Now.Ticks + ".json";
                        if (feed.Delay > 0)
                        {
                            fileName = baseDir + @"delay\" + feed.Id + "_" + DateTime.Now.AddMinutes(feed.Delay).Ticks + ".json";
                        }

                        Logger.GetLogger(baseUrl).Info(feed.Address + " response save to " + fileName);
                        File.WriteAllText(fileName, json, Encoding.UTF8);
                    }

                    return(snap);
                }
            }
            catch (Exception ex)
            {
                Logger.GetLogger(baseUrl).Info("do task -> request address failed " + ex.Message);
            }

            return(null);
        }
コード例 #3
0
        public bool RemoveUAs(string ids)
        {
            var removes = ids.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(m => Convert.ToInt32(m)).ToArray();

            return(UALiteDb.Remove(removes));
        }
コード例 #4
0
 public bool UpdateUA(UAModel ua)
 {
     UALiteDb.AddOrUpdate(ua);
     return(true);
 }
コード例 #5
0
 public object RandomUA()
 {
     return(UALiteDb.GetOne());
 }
コード例 #6
0
 public object UA(int id)
 {
     return(UALiteDb.Get(id));
 }
コード例 #7
0
 public bool RemoveUAGroup(int id)
 {
     return(UALiteDb.RemoveByGorup(id) ? UAGroupLiteDb.Remove(id) : false);
 }