Sha256: 0cddefbcfc4b304904867c5d91dfa192e090e0c11a9967cec6f176025fae0822

Contents?: true

Size: 1.36 KB

Versions: 14

Compression:

Stored size: 1.36 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 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-8.0.6 lib/record_store/provider/ns1/client.rb
record_store-8.0.5 lib/record_store/provider/ns1/client.rb
record_store-8.0.4 lib/record_store/provider/ns1/client.rb
record_store-8.0.3 lib/record_store/provider/ns1/client.rb
record_store-8.0.2 lib/record_store/provider/ns1/client.rb
record_store-8.0.1 lib/record_store/provider/ns1/client.rb
record_store-8.0.0 lib/record_store/provider/ns1/client.rb
record_store-7.1.1 lib/record_store/provider/ns1/client.rb
record_store-7.1.0 lib/record_store/provider/ns1/client.rb
record_store-7.0.1 lib/record_store/provider/ns1/client.rb
record_store-7.0.0 lib/record_store/provider/ns1/client.rb
record_store-6.7.2 lib/record_store/provider/ns1/client.rb
record_store-6.7.1 lib/record_store/provider/ns1/client.rb
record_store-6.7.0 lib/record_store/provider/ns1/client.rb