Sha256: 51c81d5e50edcd7a175b9eb61fdfd065c68ce31d34d7661dbfeb2abb4587ccd6

Contents?: true

Size: 838 Bytes

Versions: 1

Compression:

Stored size: 838 Bytes

Contents

# frozen_string_literal: true

module Mihari
  module Web
    module Endpoints
      #
      # IP address API endpoint
      #
      class IPAddresses < Grape::API
        namespace :ip_addresses do
          desc "Get an IP address", {
            success: Entities::IPAddress,
            failure: [{ code: 404, message: "Not found", model: Entities::Message }],
            summary: "Get an IP address"
          }
          params do
            requires :ip, type: String, regexp: /\A[0-9.]+\z/
          end
          get "/:ip", requirements: { ip: %r{[^/]+} } do
            ip = params[:ip].to_s

            data = Enrichers::IPInfo.new.call(ip)
            error!({ message: "IP:#{ip} is not found" }, 404) if data.nil?

            present data, with: Entities::IPAddress
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mihari-5.7.0 lib/mihari/web/endpoints/ip_addresses.rb