Sha256: 4bc2692c4385f7a90312c47b616d3a71d7365d5193468c7f9b6a2a118b7ddc5d
Contents?: true
Size: 1.4 KB
Versions: 8
Compression:
Stored size: 1.4 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 IP address data", { success: Entities::IPAddress, failure: [ {code: 404, model: Entities::ErrorMessage}, {code: 422, model: Entities::ErrorMessage} ], summary: "Get IP address data" } params do requires :ip, type: String 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::StatusError error!({message: "IP:#{ip} not found"}, failure.status_code) if failure.status_code == 404 error!({message: "IP format invalid"}, failure.status_code) if failure.status_code == 422 end raise failure end end end end end end
Version data entries
8 entries across 8 versions & 1 rubygems