Lots of updates
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
class Ipapi
|
||||
include HTTParty
|
||||
BASE_URL = "https://api.ipapi.is/"
|
||||
API_KEY = Rails.application.credentials.ipapi_key
|
||||
|
||||
def api_key = Setting.ipapi_key
|
||||
|
||||
def lookup(ip)
|
||||
response = self.class.get("#{BASE_URL}", query: { q: ip, key: API_KEY })
|
||||
response.parsed_response
|
||||
end
|
||||
return unless api_key.present?
|
||||
response = self.class.get("#{BASE_URL}", query: { q: ip, key: api_key })
|
||||
response.parsed_response
|
||||
end
|
||||
|
||||
def self.lookup(ip) = new.lookup(ip)
|
||||
|
||||
@@ -19,7 +21,7 @@ end
|
||||
if ip.is_a?(Array)
|
||||
post_data(ip)
|
||||
else
|
||||
response = self.class.get("#{BASE_URL}", query: { q: ip, key: API_KEY })
|
||||
response = self.class.get("#{BASE_URL}", query: { q: ip, key: api_key })
|
||||
response.parsed_response
|
||||
end
|
||||
rescue JSON::ParserError
|
||||
@@ -28,7 +30,7 @@ end
|
||||
|
||||
def post_data(ips)
|
||||
response = self.class.post("#{BASE_URL}",
|
||||
query: { key: API_KEY },
|
||||
query: { key: api_key },
|
||||
body: { ips: ips }.to_json,
|
||||
headers: { 'Content-Type' => 'application/json' }
|
||||
)
|
||||
@@ -39,7 +41,13 @@ end
|
||||
IPAddr.new(ip)
|
||||
cidr = data.dig("asn", "route")
|
||||
|
||||
NetworkRange.add_network(cidr).tap { |acl| acl&.update(ip_api_data: data) }
|
||||
network_range = NetworkRange.add_network(cidr)
|
||||
if network_range
|
||||
network_range.set_network_data(:ipapi, data)
|
||||
network_range.last_api_fetch = Time.current
|
||||
network_range.save
|
||||
end
|
||||
network_range
|
||||
rescue IPAddr::InvalidAddressError
|
||||
puts "Skipping #{ip}"
|
||||
next
|
||||
|
||||
Reference in New Issue
Block a user