Sha256: 6f09ee52db5f19c1ba38562fe7da315cec8082470d68b45633d8e4759b34d652

Contents?: true

Size: 749 Bytes

Versions: 3

Compression:

Stored size: 749 Bytes

Contents

# frozen_string_literal: true

require "http"
require "json"

module Mihari
  module Controllers
    class IPAddressController < BaseController
      def query(ip)
        headers = {}
        token = Mihari.config.ipinfo_api_key
        unless token.nil?
          headers[:authorization] = "Bearer #{token}"
        end

        res = HTTP.headers(headers).get("https://ipinfo.io/#{ip}/json")
        JSON.parse res.to_s
      end

      get "/api/ip_addresses/:ip" do
        param :ip, String, required: true

        ip = params["ip"].to_s

        begin
          data = query(ip)
          json data
        rescue HTTP::Error
          status 404

          json({ message: "IP:#{ip} is not found" })
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mihari-3.6.1 lib/mihari/web/controllers/ip_address_controller.rb
mihari-3.6.0 lib/mihari/web/controllers/ip_address_controller.rb
mihari-3.5.0 lib/mihari/web/controllers/ip_address_controller.rb