https://github.com/antoniojmsjr/horse-ipgeolocation
⚡ Middleware de geolocalização baseada em endereço IP, desenvolvido parar o framework Horse.
https://github.com/antoniojmsjr/horse-ipgeolocation
delphi horse ipgeolocation
Last synced: 12 months ago
JSON representation
⚡ Middleware de geolocalização baseada em endereço IP, desenvolvido parar o framework Horse.
- Host: GitHub
- URL: https://github.com/antoniojmsjr/horse-ipgeolocation
- Owner: antoniojmsjr
- License: apache-2.0
- Created: 2022-02-20T04:18:14.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-04-11T22:11:10.000Z (over 4 years ago)
- Last Synced: 2025-04-04T05:43:35.288Z (over 1 year ago)
- Topics: delphi, horse, ipgeolocation
- Language: Pascal
- Homepage:
- Size: 165 KB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README








# Horse-IPGeoLocation
**Horse-IPGeoLocation** é um middleware de geolocalização baseada em endereço IP, desenvolvido parar o framework [Horse](https://github.com/HashLoad/horse).
## ❓ O que é a geolocalização de IP?
A geolocalização baseada em endereços IP é uma técnica usada para estimar a localização geográfica de um dispositivo conectado à Internet usando o endereço IP do mesmo. Este mecanismo depende de que o endereço IP do dispositivo apareça em um banco de dados com sua respectiva localização, endereço postal, cidade, país, região ou coordenadas geográficas, que são alguns dos níveis de detalhe que podem ser registrados.
## ⭕ Pré-requisito
Para utilizar o **Horse-IPGeoLocation** é necessário a instalação do framework [IPGeoLocation](https://github.com/antoniojmsjr/IPGeoLocation/releases/latest).
*Obs: Se você usa [**Boss**](https://github.com/HashLoad/boss/releases/latest) (Dependency manager for Delphi), o [IPGeoLocation](https://github.com/antoniojmsjr/IPGeoLocation/releases/latest) será instalado automaticamente ao instalar **Horse-IPGeoLocation**.*
## ⚙️ Instalação Automatizada
Utilizando o [**Boss**](https://github.com/HashLoad/boss/releases/latest) (Dependency manager for Delphi) é possível instalar a biblioteca de forma automática.
```
boss install github.com/antoniojmsjr/Horse-IPGeoLocation
```
## ⚙️ Instalação Manual
Se você optar por instalar manualmente, basta adicionar as seguintes pastas ao seu projeto, em *Project > Options > Delphi Compiler > Target > All Configurations > Search path*
*Obs: Se você usar a instalação manual, será necessário a instalação do framework [IPGeoLocation](https://github.com/antoniojmsjr/IPGeoLocation/releases/latest).*
```
..\Horse-IPGeoLocation\Source
```
## 🧬 Provedores IPGeolocation
Lista dos principais provedores de IPGeolocation homologados para utilização: [Visualização](https://github.com/antoniojmsjr/IPGeoLocation#provedores-homologados)
## ⚡️ Uso
#### Uso e definição do middleware
```delphi
uses Horse, Horse.IPGeoLocation, Horse.IPGeoLocation.Types;
//PARA TESTAR IPGeolocation LOCALMENTE
if (DebugHook <> 0) then
THorse.Use(IPGeoLocation(TIPGeoLocationProvider.IPInfo, EmptyStr, '8.8.8.8'))
else
THorse.Use(IPGeoLocation(TIPGeoLocationProvider.IPInfo, EmptyStr));
```
```delphi
function IPGeoLocation(const pProvider: TIPGeoLocationProvider;
const pToken: string;
const pAPIKey: Integer;
const pLanguageCode: string): THorseCallback;
```
* `pProvider`: Identificação do provedor de IPGeolocation homologado.
* `pAPIKey`: ApiKey gerado no site do provedor de IPGeolocation identificado no `pProvider`. [opcional]
* `pTimeOut`: Tempo em milissegundos para finalização da requisição. [opcional]
* `pLanguageCode`: Identificação do código de idioma utilizado no retorno do JSON. Ex.: pt-br/en-us. [opcional]
* `pIPDebug`: IP para testar com requisição local.
* Requisições locais ou IP privados ao servidor Horse, não será executado o middleware Horse-IPGeoLocation, com a exceção da utilização do `pIPDebug`.
#### Exemplo de visualização do JSON de retorno da requisição do IPGeolocation.
```delphi
uses Horse, Horse.IPGeoLocation, Horse.IPGeoLocation.Types;
THorse.Get('ipgeo/json',
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
var
lHorseGeoLocation: THorseGeoLocation;
begin
if Req.Sessions.TryGetSession(lHorseGeoLocation) then
Res.Send(lHorseGeoLocation.ToJSON)
else
Res.Send(Req.RawWebRequest.RemoteAddr);
end);
```

#### Exemplo de visualização do mapa(Google) gerado com o retorno da requisição do IPGeolocation.
```delphi
uses Horse, Horse.IPGeoLocation, Horse.IPGeoLocation.Types;
THorse.Get('ipgeo/gmaps',
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
const
cURLMaps = 'https://maps.google.com/maps?q=%g,%g'; //1º: LATITUDE/2º: LONGITUDE
var
lHorseGeoLocation: THorseGeoLocation;
lFormatSettings: TFormatSettings;
lURLMaps: string;
begin
lFormatSettings:= TFormatSettings.Create('en-US');
if Req.Sessions.TryGetSession(lHorseGeoLocation) then
begin
lURLMaps := Format(cURLMaps, [lHorseGeoLocation.Latitude, lHorseGeoLocation.Longitude], lFormatSettings);
Res.RedirectTo(lURLMaps);
end
else
Res.Send(Req.RawWebRequest.RemoteAddr);
end);
```
#### Exemplo de visualização do mapa(Waze) gerado com o retorno da requisição do IPGeolocation.
```delphi
uses Horse, Horse.IPGeoLocation, Horse.IPGeoLocation.Types;
THorse.Get('ipgeo/wmaps',
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
const
cURLMaps = 'https://waze.com/ul?ll=%g,%g&z=10'; //1º: LATITUDE/2º: LONGITUDE
var
lHorseGeoLocation: THorseGeoLocation;
lFormatSettings: TFormatSettings;
lURLMaps: string;
begin
lFormatSettings:= TFormatSettings.Create('en-US');
if Req.Sessions.TryGetSession(lHorseGeoLocation) then
begin
lURLMaps := Format(cURLMaps, [lHorseGeoLocation.Latitude, lHorseGeoLocation.Longitude], lFormatSettings);
Res.RedirectTo(lURLMaps);
end
else
Res.Send(Req.RawWebRequest.RemoteAddr);
end);
```
## ⚠️ Licença
`Horse-IPGeoLocation` is free and open-source software licensed under the [](https://github.com/antoniojmsjr/Horse-IPGeoLocation/blob/master/LICENSE)