Sha256: b2143189102d5b5eba4003c8d7df2e876d62af4619f0344fab454050cb11e09a

Contents?: true

Size: 1.37 KB

Versions: 14

Compression:

Stored size: 1.37 KB

Contents

require 'net/http'
require 'ns1'

module RecordStore
  class Provider::NS1 < Provider
    class Client < ::NS1::Client
      def initialize(api_key:)
        super(api_key)
      end

      def zones
        zones = super
        raise_if_error!(zones)
        zones
      end

      def zone(name)
        zone = super(name)
        raise_if_error!(zone)
        zone
      end

      def record(zone:, fqdn:, type:, must_exist: false)
        result = super(zone, fqdn, type)
        raise_if_error!(result) if must_exist
        return nil if result.is_a?(NS1::Response::Error)
        result
      end

      def create_record(zone:, fqdn:, type:, params:)
        result = super(zone, fqdn, type, params)
        raise_if_error!(result)
        nil
      end

      def modify_record(zone:, fqdn:, type:, params:)
        result = super(zone, fqdn, type, params)
        raise_if_error!(result)
        nil
      end

      def delete_record(zone:, fqdn:, type:)
        result = super(zone, fqdn, type)
        raise_if_error!(result)
        nil
      end

      private

      def raise_if_error!(result)
        return unless result.is_a?(NS1::Response::Error)
        if result.is_a?(NS1::Response::UnparsableBodyError)
          raise RecordStore::Provider::UnparseableBodyError, result.to_s
        end
        raise RecordStore::Provider::Error, result.to_s
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
record_store-6.6.0 lib/record_store/provider/ns1/client.rb
record_store-6.5.11 lib/record_store/provider/ns1/client.rb
record_store-6.5.10 lib/record_store/provider/ns1/client.rb
record_store-6.5.9 lib/record_store/provider/ns1/client.rb
record_store-6.5.8 lib/record_store/provider/ns1/client.rb
record_store-6.5.5 lib/record_store/provider/ns1/client.rb
record_store-6.5.4 lib/record_store/provider/ns1/client.rb
record_store-6.5.3 lib/record_store/provider/ns1/client.rb
record_store-6.5.2 lib/record_store/provider/ns1/client.rb
record_store-6.5.1 lib/record_store/provider/ns1/client.rb
record_store-6.5.0 lib/record_store/provider/ns1/client.rb
record_store-6.4.1 lib/record_store/provider/ns1/client.rb
record_store-6.4.0 lib/record_store/provider/ns1/client.rb
record_store-6.3.1 lib/record_store/provider/ns1/client.rb