69 lines
1.9 KiB
TypeScript
69 lines
1.9 KiB
TypeScript
import { Body, Controller, Delete, Get, Param, Post } from '@nestjs/common';
|
|
import { CrawlerService } from '../crawler/crawler.service';
|
|
import { InjectModel } from '@nestjs/mongoose';
|
|
import { Model } from 'mongoose';
|
|
import { Site } from 'src/interfaces/site.interface';
|
|
|
|
@Controller('/')
|
|
export class ApiController {
|
|
constructor(private crawlerService: CrawlerService, @InjectModel('Site') private readonly siteModel: Model<Site> ) {}
|
|
@Post('crawl')
|
|
async crawl(@Body() body: { url: string }) {
|
|
|
|
const results = this.crawlerService.crawl(body.url);
|
|
results.then((data) => {
|
|
console.log("Done crawling !", data);
|
|
const newSite = new this.siteModel(data);
|
|
newSite.save().then((result) => {
|
|
console.log("Site saved !", result);
|
|
}).catch((err) => {
|
|
console.log("Error saving site !", err);
|
|
});
|
|
}).catch((err) => {
|
|
console.log("** Error crawling ! **", err);
|
|
console.log(err);
|
|
});
|
|
return {
|
|
message: 'Got your request for ' + body.url
|
|
}
|
|
}
|
|
|
|
// Get all
|
|
@Get('sites')
|
|
async getSites() {
|
|
const sites = await this.siteModel.find().exec();
|
|
return sites || {};
|
|
}
|
|
|
|
// Get by id
|
|
@Get('sites/:id')
|
|
async getSite(@Param('id') id: string) {
|
|
const site = await this.siteModel.findById(id).exec();
|
|
return site || {};
|
|
}
|
|
|
|
// Get by domain
|
|
@Get('sites/domain/:domain')
|
|
async getSiteByDomain(@Param('domain') domain: string) {
|
|
const site = await this.siteModel.findOne({ domain }).exec();
|
|
return site || {};
|
|
}
|
|
|
|
// Delete by domain
|
|
@Delete('sites/domain/:domain')
|
|
async deleteSiteByDomain(@Param('domain') domain: string) {
|
|
const site = await this.siteModel.findOneAndDelete({ domain }).exec();
|
|
return site || {};
|
|
}
|
|
|
|
// Delete by id
|
|
@Delete('sites/:id')
|
|
async deleteSite(@Param('id') id: string) {
|
|
const site = await this.siteModel.findByIdAndDelete(id).exec();
|
|
return site || {};
|
|
}
|
|
|
|
|
|
|
|
}
|