ln.skyscanner/http/CrawlerApi.cs
Harald Wolff c546eacac2 WIP
2019-03-26 12:53:42 +01:00

106 lines
2.6 KiB
C#

using System;
using ln.http.resources;
using ln.skyscanner.entities;
using System.Linq;
using ln.skyscanner.crawl;
using ln.types;
using System.Net;
using ln.types.threads;
namespace ln.skyscanner.http
{
public class CrawlerApi : JsonCallResource
{
public SkyScanner SkyScanner { get; }
public Crawler Crawler => SkyScanner.Crawler;
public CrawlerApi(Resource container, SkyScanner skyScanner)
: base(container, "crawler")
{
SkyScanner = skyScanner;
}
[Callable]
public CrawledSubnet[] GetSubnets()
{
return Crawler?.CrawledSubnets.ToArray();
}
[Callable]
public CrawledHost[] GetHosts()
{
CrawledHost[] result = Crawler?.CrawledHosts.ToArray();
return result;
}
[Callable]
public CrawledHost GetHostByIP(string _ip)
{
return SkyScanner.Crawler.FindHostForIP(CIDR.Parse(_ip));
}
[Callable]
public CrawledHost AddHost(string _ip, string name)
{
CIDR ip = CIDR.Parse(_ip);
CrawledHost host = SkyScanner.Crawler.FindHostForIP(ip);
host.Name = name;
SkyScanner.Crawler.CrawledHosts.Upsert(host);
return host;
}
[Callable]
public void Crawl(string _id)
{
Guid hostID = Guid.Parse(_id);
SkyScanner.Crawler.Crawl(hostID);
}
[Callable]
public PoolJob[] GetCurrentPoolJobs()
{
return SkyScanner.Crawler.CurrentJobs;
}
[Callable]
public PoolJob[] GetQueuedJobs()
{
return SkyScanner.Crawler.QueuedJobs;
}
[Callable]
public bool GetCrawlSubnets()
{
return SkyScanner.Crawler.CrawlSubnets;
}
[Callable]
public void SetCrawlSubnets(bool enable)
{
SkyScanner.Crawler.CrawlSubnets = enable;
}
[Callable]
public bool GetCrawlHosts()
{
return SkyScanner.Crawler.CrawlHosts;
}
[Callable]
public void SetCrawlHosts(bool enable)
{
SkyScanner.Crawler.CrawlHosts = enable;
}
[Callable]
public void ToggleCrawlHosts()
{
SkyScanner.Crawler.CrawlHosts = !SkyScanner.Crawler.CrawlHosts;
}
[Callable]
public void ToggleCrawlSubnets()
{
SkyScanner.Crawler.CrawlSubnets = !SkyScanner.Crawler.CrawlSubnets;
}
}
}