Sha256: 4d1ed24f456413c191d31fe79ac93ff7ba22a188ae6a29ed82734ab7dec72314

Contents?: true

Size: 1.45 KB

Versions: 7

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true

module Zerobounce
  class Request
    # Request methods specific to V1 of the API.
    module V1Request
      # Valid v1 get query params
      VALID_GET_PARAMS = %i[apikey ipaddress email].freeze

      # Validate the email address.
      #
      # @param [Hash] params
      # @option params [String] :email
      # @option params [String] :ip_address
      # @option params [String] :apikey
      # @return [Zerobounce::Response]
      def validate(params)
        if params.key?(:ipaddress) || params.key?(:ip_address)
          validate_with_ip(params)
        else
          Response.new(get('validate', params), self)
        end
      end

      # Validate the email address and get geoip info for the IP.
      #
      # @param [Hash] params
      # @option params [String] :email
      # @option params [String] :ip_address
      # @option params [String] :apikey
      # @return [Zerobounce::Response]
      def validate_with_ip(params)
        Response.new(get('validatewithip', params), self)
      end

      private

      # @param [Hash] params
      # @return [Hash]
      def get_params(params)
        params[:ipaddress] = params.delete(:ip_address) if params.key?(:ip_address) # normalize ipaddress key
        params[:apikey] = params.delete(:api_key) if params.key?(:api_key) # normalize apikey param
        { apikey: Zerobounce.config.apikey }.merge(params.select { |k, _| VALID_GET_PARAMS.include?(k) })
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
zerobounce-0.3.1 lib/zerobounce/request/v1_request.rb
zerobounce-0.3.0 lib/zerobounce/request/v1_request.rb
zerobounce-0.2.2 lib/zerobounce/request/v1_request.rb
zerobounce-0.2.0 lib/zerobounce/request/v1_request.rb
zerobounce-0.1.2 lib/zerobounce/request/v1_request.rb
zerobounce-0.1.1 lib/zerobounce/request/v1_request.rb
zerobounce-0.1.0 lib/zerobounce/request/v1_request.rb