Sha256: 27c3770da3b43fea353f1719d8f10c14faf2a7f68e9c087c0704a2b901aaadff

Contents?: true

Size: 1.23 KB

Versions: 4

Compression:

Stored size: 1.23 KB

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, model: Entities::ErrorMessage }],
            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
            result = Services::IPGetter.result(ip)
            if result.success?
              value = result.value!
              return present(
                {
                  country_code: value.country_code,
                  asn: value.asn,
                  loc: value.loc
                },
                with: Entities::IPAddress
              )
            end

            failure = result.failure
            case failure
            when Mihari::StatusCodeError
              error!({ message: "ID:#{id} not found" }, 404) if failure.status_code == 404
            end
            raise failure
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mihari-7.0.3 lib/mihari/web/endpoints/ip_addresses.rb
mihari-7.0.2 lib/mihari/web/endpoints/ip_addresses.rb
mihari-7.0.1 lib/mihari/web/endpoints/ip_addresses.rb
mihari-7.0.0 lib/mihari/web/endpoints/ip_addresses.rb