Module: NominetEPP::Operations::Renew

Included in:
Client
Defined in:
lib/nominet-epp/operations/renew.rb

Overview

EPP Renew Operation

Instance Method Summary collapse

Instance Method Details

#renew(name, period = '2y') ⇒ false, Time

Renew a domain name

Parameters:

  • name (String)

    Domain name to renew

  • period (String) (defaults to: '2y')

    Length of time to renew for. Currently has to be ‘2y’.

Returns:

  • (false)

    renewal failed

  • (Time)

    domain expiration date

Raises:

  • (ArgumentError)

    invalid period specified

  • (RuntimeError)

    renewed domain name does not match name



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/nominet-epp/operations/renew.rb', line 13

def renew(name, period = '2y')
  period = '2y'  # reset period to 2 years as nominet don't currently support other options

  unit = period[-1..1]
  num = period.to_i.to_s

  raise ArgumentError, "period suffix must either be 'm' or 'y'" unless %w(m y).include?(unit)

  @resp = @client.renew do
    domain('renew') do |node, ns|
      node << XML::Node.new('name', name, ns)
      p = XML::Node.new('period', num, ns);
      p['unit'] = unit
      node << p
    end
  end

  return false unless @resp.success?

  renName = node_value(@resp.data, '//domain:renData/domain:name')
  renExp  = node_value(@resp.data, '//domain:renData/domain:exDate')

  raise "Renewed name #{renName} does not match #{name}" if renName != name
  return Time.parse(renExp)
end