20#ifndef ORES_GEO_SERVICE_GEOLOCATION_SERVICE_HPP
21#define ORES_GEO_SERVICE_GEOLOCATION_SERVICE_HPP
26#include <boost/asio/ip/address.hpp>
27#include "ores.database/domain/context.hpp"
28#include "ores.logging/make_logger.hpp"
39 std::string country_code;
46 database_not_available,
75 [[nodiscard]] std::expected<geolocation_result, geolocation_error>
76 lookup(
const boost::asio::ip::address& ip)
const;
84 [[nodiscard]] std::expected<geolocation_result, geolocation_error>
85 lookup(
const std::string& ip_string)
const;
88 inline static std::string_view logger_name =
89 "ores.geo.service.geolocation_service";
91 [[nodiscard]]
static auto& lg() {
93 static auto instance = make_logger(logger_name);
Geolocation service implementation.
Definition geolocation_service.hpp:30
geolocation_error
Error codes for geolocation lookup failures.
Definition geolocation_service.hpp:45
Implements logging infrastructure for ORE Studio.
Definition boost_severity.hpp:28
Context for the operations on a postgres database.
Definition context.hpp:30
Result of a geolocation lookup.
Definition geolocation_service.hpp:38
Service for looking up geographic location from IP addresses.
Definition geolocation_service.hpp:60
std::expected< geolocation_result, geolocation_error > lookup(const boost::asio::ip::address &ip) const
Look up geolocation for an IP address.
Definition geolocation_service.cpp:31