34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
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<any> {
|
|
return await this.geoService.fetchIpAndGeoLocation(ipInfo);
|
|
}
|
|
}
|