import { Body, Controller, Get, Param, Post } from '@nestjs/common'; import { RealIp } from 'src/decorators/real-ip.decorator'; import { RealIpInfo } from 'src/models/main.model'; import { CountyRequest } from 'src/models/server.model'; import { GeoService } from './geo.service'; @Controller('geo') export class GeoController { constructor(private geoService: GeoService) {} @Get(':prefix') findByPrefix(@Param('prefix') prefix: string): any { return this.geoService.findCitiesStartingWith(prefix); } @Get('citiesandstates/:prefix') findByCitiesAndStatesByPrefix(@Param('prefix') prefix: string): any { return this.geoService.findCitiesAndStatesStartingWith(prefix); } @Get(':prefix/:state') findByPrefixAndState(@Param('prefix') prefix: string, @Param('state') state: string): any { return this.geoService.findCitiesStartingWith(prefix, state); } @Post('counties') findByPrefixAndStates(@Body() countyRequest: CountyRequest): any { return this.geoService.findCountiesStartingWith(countyRequest.prefix, countyRequest.states); } @Get('ipinfo/georesult/wysiwyg') async fetchIpAndGeoLocation(@RealIp() ipInfo: RealIpInfo): Promise { return await this.geoService.fetchIpAndGeoLocation(ipInfo); } }