Sha256: 1f7f4b6b5bb170de5a11661d93651557ad276b3d2f6c75d4ba82a3f0a88d84fe

Contents?: true

Size: 1.78 KB

Versions: 4

Compression:

Stored size: 1.78 KB

Contents

# -*- encoding: utf-8 -*-

module SendGrid4r::REST
  #
  # SendGrid Web API v3 Ip Management
  #
  module Ips
    #
    # SendGrid Web API v3 Ip Management - Pools
    #
    module Addresses
      include Request

      Address = Struct.new(
        :ip, :pools, :warmup, :start_date, :subusers, :rdns, :pool_name
      )

      def self.create_addresses(resp)
        return resp if resp.nil?
        resp.map { |address| Ips::Addresses.create_address(address) }
      end

      def self.create_address(resp)
        return resp if resp.nil?
        Address.new(
          resp['ip'],
          resp['pools'],
          resp['warmup'],
          resp['start_date'].nil? ? nil : Time.at(resp['start_date']),
          resp['subusers'],
          resp['rdns'],
          resp['pool_name']
        )
      end

      def self.url(ip = nil)
        url = "#{BASE_URL}/ips"
        url = "#{url}/#{ip}" unless ip.nil?
        url
      end

      def post_ip_to_pool(pool_name:, ip:, &block)
        resp = post(@auth, Ips::Pools.url(pool_name, :ips), ip: ip, &block)
        finish(resp, @raw_resp) { |r| Ips::Addresses.create_address(r) }
      end

      def get_ips(&block)
        resp = get(@auth, Ips::Addresses.url, &block)
        finish(resp, @raw_resp) { |r| Ips::Addresses.create_addresses(r) }
      end

      def get_ips_assigned(&block)
        resp = get(@auth, Ips::Addresses.url(:assigned), &block)
        finish(resp, @raw_resp) { |r| Ips::Addresses.create_addresses(r) }
      end

      def get_ip(ip:, &block)
        resp = get(@auth, Ips::Addresses.url(ip), &block)
        finish(resp, @raw_resp) { |r| Ips::Addresses.create_address(r) }
      end

      def delete_ip_from_pool(pool_name:, ip:, &block)
        delete(@auth, Ips::Pools.url(pool_name, :ips, ip), &block)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sendgrid4r-1.15.0 lib/sendgrid4r/rest/ips/addresses.rb
sendgrid4r-1.14.0 lib/sendgrid4r/rest/ips/addresses.rb
sendgrid4r-1.13.0 lib/sendgrid4r/rest/ips/addresses.rb
sendgrid4r-1.12.0 lib/sendgrid4r/rest/ips/addresses.rb