ln.skyscanner/http/CrawlerApi.cs

69 lines
1.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 CrawlerApi(Resource container,SkyScanner skyScanner)
:base(container,"crawler")
{
SkyScanner = skyScanner;
}
[Callable]
public CrawledSubnet[] GetSubnets()
{
return SkyScanner.Crawler?.CrawlPool.Subnets.ToArray();
}
[Callable]
public CrawledHost[] GetHosts()
{
return SkyScanner.Crawler?.CrawlPool?.Hosts;
}
[Callable]
public CrawledHost GetHostByIP(string _ip)
{
return SkyScanner.Crawler.CrawlPool.HostForIP(CIDR.Parse(_ip));
}
[Callable]
public CrawledHost AddHost(string _ip, string name)
{
CIDR ip = CIDR.Parse(_ip);
CrawledHost host = SkyScanner.Crawler.CrawlPool.HostForIP(ip);
host.Name = name;
return host;
}
[Callable]
public void Crawl(string _ip)
{
SkyScanner.Crawler.Crawl(CIDR.Parse(_ip));
}
[Callable]
public PoolJob[] GetCurrentPoolJobs()
{
return SkyScanner.Crawler.CurrentJobs;
}
[Callable]
public PoolJob[] GetQueuedJobs()
{
return SkyScanner.Crawler.QueuedJobs;
}
}
}