module NSOne::API::Records

Public Instance Methods

create_record(zone, domain, type, params = {}) click to toggle source

<Description>

@param [String] zone zone name @param [String] domain record name @param [String] type record type (A, CNAME etc) @param [Hash] params will be used as the request body

@option params [String] :zone zone name

@option params [String] :domain record name

@option params [String] :type record type (A, CNAME etc)

@option params [String] :link record name. This is used to create a `linked` record to another record.

When using :link answers array should be empty and filters arrays should be omitted.

@option params [Array<Hash>] :answers Array of Hashes with the RDATA values

@option params [Array<Hash>] :filters Array of Hashes with settings for record filter-chains rules

@option params [Boolean] :use_client_subnet enable EDNS on the record.

Default: `true`

@return [NSOne::Response]

@example Request body with answers and filter chain arrays. @see [NSOne API](ns1.com/api)

{
  "zone":"example.com",
  "domain":"georegion.example.com",
  "type":"A",
  "use_client_subnet":false,
  "answers":[
    {
      "answer":[
        "1.1.1.1"
      ],
      "meta":{
        "georegion":[
          "US-EAST"
        ]
      }
    },
    {
      "answer":[
        "9.9.9.9"
      ],
      "meta":{
        "georegion":[
          "US-WEST"
        ]
      }
    }
  ],
  "filters":[
    {
      "filter":"geotarget_regional",
      "config": {}
    },
    {
      "filter":"select_first_n",
      "config":{
        "N":1
      }
    }
  ]
}
# File lib/nsone/api/records.rb, line 94
def create_record(zone, domain, type, params = {})
  raise NSOne::MissingParameter, "zone cannot be blank" if blank?(zone)
  raise NSOne::MissingParameter, "domain cannot be blank" if blank?(domain)
  raise NSOne::MissingParameter, "type cannot be blank" if blank?(type)
  validate_required!(params, :answers)
  normalize_names!(zone, domain)
  params = params.merge(zone: zone, domain: domain, type: type)
  perform_request(HTTP_PUT, "/zones/#{zone}/#{domain}/#{type}", params)
end
delete_record(zone, domain, type) click to toggle source

Removes an existing record and all associated answers and configuration details

@param [String] zone zone name @param [String] domain record name @param [String] type record type (A, CNAME etc)

@return [NSOne::Response]

# File lib/nsone/api/records.rb, line 126
def delete_record(zone, domain, type)
  raise NSOne::MissingParameter, "zone cannot be blank" if blank?(zone)
  raise NSOne::MissingParameter, "domain cannot be blank" if blank?(domain)
  raise NSOne::MissingParameter, "type cannot be blank" if blank?(type)
  normalize_names!(zone, domain)
  perform_request(HTTP_DELETE, "/zones/#{zone}/#{domain}/#{type}")
end
modify_record(zone, domain, type, params) click to toggle source

Modify an existing record. See {NSOne::API::Records#create_record} for available options.

@return [NSOne::Response]

# File lib/nsone/api/records.rb, line 109
def modify_record(zone, domain, type, params)
  raise NSOne::MissingParameter, "zone cannot be blank" if blank?(zone)
  raise NSOne::MissingParameter, "domain cannot be blank" if blank?(domain)
  raise NSOne::MissingParameter, "type cannot be blank" if blank?(type)
  normalize_names!(zone, domain)
  perform_request(HTTP_POST, "/zones/#{zone}/#{domain}/#{type}", params)
end
record(zone, domain, type) click to toggle source

Returns full configuration for a DNS record including basic config, answers, regions, filter chain configuration, and all metadata tables and data feeds attached to entities in the record

@param [String] zone zone name @param [String] domain record name @param [String] type record type (A, CNAME etc)

@return [NSOne::Response]

# File lib/nsone/api/records.rb, line 17
def record(zone, domain, type)
  raise NSOne::MissingParameter, "zone cannot be blank" if blank?(zone)
  raise NSOne::MissingParameter, "type cannot be blank" if blank?(type)
  normalize_names!(zone, domain)
  perform_request(HTTP_GET, "/zones/#{zone}/#{domain}/#{type}")
end