export DB, Event creation, broker with city/state

This commit is contained in:
2024-09-12 15:13:56 +02:00
parent 60866473f7
commit 68d2615f0f
21 changed files with 242 additions and 40 deletions

View File

@@ -1,4 +1,4 @@
import { Body, Controller, Get, Param, Post } from '@nestjs/common';
import { Body, Controller, Get, Ip, Param, Post } from '@nestjs/common';
import { CountyRequest } from 'src/models/server.model';
import { GeoService } from './geo.service';
@@ -24,4 +24,8 @@ export class GeoController {
findByPrefixAndStates(@Body() countyRequest: CountyRequest): any {
return this.geoService.findCountiesStartingWith(countyRequest.prefix, countyRequest.states);
}
@Get('ipinfo/georesult/wysiwyg')
fetchIpAndGeoLocation(@Ip() userIp: string): any {
return this.geoService.fetchIpAndGeoLocation(userIp);
}
}

View File

@@ -62,7 +62,7 @@ export class GeoService {
});
return state ? result.filter(e => e.state.toLowerCase() === state.toLowerCase()) : result;
}
findCitiesAndStatesStartingWith(prefix: string, state?: string): Array<CityAndStateResult> {
findCitiesAndStatesStartingWith(prefix: string): Array<CityAndStateResult> {
const results: Array<CityAndStateResult> = [];
const lowercasePrefix = prefix.toLowerCase();
@@ -100,4 +100,14 @@ export class GeoService {
getCityWithCoords(state: string, city: string): City {
return this.geo.states.find(s => s.state_code === state).cities.find(c => c.name === city);
}
async fetchIpAndGeoLocation(ip: string): Promise<any> {
const response = await fetch(`${process.env.IP_INFO_URL}/${ip}/geo?token=${process.env.IP_INFO_TOKEN}`, {
method: 'GET',
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
return data;
}
}