Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

Horse-IPGeoLocation

⚡ Middleware de geolocalização baseada em endereço IP, desenvolvido parar o framework Horse.

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

Horse-IPGeoLocation

Horse-IPGeoLocation é um middleware de geolocalização baseada em endereço IP, desenvolvido parar o framework 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.

Obs: Se você usa Boss (Dependency manager for Delphi), o IPGeoLocation será instalado automaticamente ao instalar Horse-IPGeoLocation.

⚙️ Instalação Automatizada

Utilizando o Boss (Dependency manager for Delphi) é possível instalar a biblioteca de forma automática.

pascal
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.

pascal
..\Horse-IPGeoLocation\Source

🧬 Provedores IPGeolocation

Lista dos principais provedores de IPGeolocation homologados para utilização: Visualização

⚡️ 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);

image

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