Module: EPPClient::XML

Included in:
Base
Defined in:
lib/epp-client/xml.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#msgQ_countObject (readonly)

Returns the value of attribute msgQ_count.



4
5
6
# File 'lib/epp-client/xml.rb', line 4

def msgQ_count
  @msgQ_count
end

#msgQ_idObject (readonly)

Returns the value of attribute msgQ_id.



4
5
6
# File 'lib/epp-client/xml.rb', line 4

def msgQ_id
  @msgQ_id
end

#recv_xmlObject (readonly)

Returns the value of attribute recv_xml.



4
5
6
# File 'lib/epp-client/xml.rb', line 4

def recv_xml
  @recv_xml
end

#sent_xmlObject (readonly)

Returns the value of attribute sent_xml.



4
5
6
# File 'lib/epp-client/xml.rb', line 4

def sent_xml
  @sent_xml
end

#trIDObject (readonly)

Returns the value of attribute trID.



4
5
6
# File 'lib/epp-client/xml.rb', line 4

def trID
  @trID
end

Instance Method Details

#builder(opts = {}) ⇒ Object

creates a Builder::XmlMarkup object, mostly only used by command



33
34
35
36
37
38
39
40
# File 'lib/epp-client/xml.rb', line 33

def builder(opts = {})
  raw_builder(opts) do |xml|
  xml.instruct! :xml, :version =>"1.0", :encoding => "UTF-8"
  xml.epp('xmlns' => EPPClient::SCHEMAS_URL['epp'], 'xmlns:epp' => EPPClient::SCHEMAS_URL['epp']) do
    yield xml
  end
  end
end

#command(*args, &block) ⇒ Object

Creates the xml for the command.

You can either pass a block to it, in that case, it’s the command body, or a series of procs, the first one being the commands, the other ones being the extensions.

command do |xml|
    xml.logout
end

or

command(lambda do |xml|
    xml.logout
  end, lambda do |xml|
    xml.extension
  end)


117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/epp-client/xml.rb', line 117

def command(*args, &block)
  builder do |xml|
  xml.command do
    if block_given?
 yield xml
    else
 command = args.shift
 command.call(xml)
 args.each do |ext|
   xml.extension do
    ext.call(xml)
   end
 end
    end
    xml.clTRID(clTRID)
  end
  end
end

#extensionObject

Wraps the content in an epp:extension.



137
138
139
140
141
142
143
# File 'lib/epp-client/xml.rb', line 137

def extension
  raw_builder do |xml|
  xml.extension do
    yield(xml)
  end
  end
end

#get_result(args) ⇒ Object

Takes a xml response and checks that the result is in the right range of results, that is, between 1000 and 1999, which are results meaning all went well.

In case all went well, it either calls the callback if given, or returns true.

In case there was a problem, an EPPErrorResponse exception is raised.



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/epp-client/xml.rb', line 50

def get_result(args)
  xml = case args
 when Hash
   args.delete(:xml)
 else
   xml = args
   args = {}
   xml
 end

  args[:range] ||= 1000..1999

  if (mq = xml.xpath('epp:epp/epp:response/epp:msgQ', EPPClient::SCHEMAS_URL)).size > 0
  @msgQ_count = mq.attribute('count').value.to_i
  @msgQ_id = mq.attribute('id').value
  puts "DEBUG: MSGQ : count=#{@msgQ_count}, id=#{@msgQ_id}\n" if debug
  else
  @msgQ_count = 0
  @msgQ_id = nil
  end

  if (trID = xml.xpath('epp:epp/epp:response/epp:trID', EPPClient::SCHEMAS_URL)).size > 0
  @trID = get_trid(trID)
  end

  res = xml.xpath('epp:epp/epp:response/epp:result', EPPClient::SCHEMAS_URL)
  code = res.attribute('code').value.to_i
  if args[:range].include?(code)
  if args.key?(:callback)
    case cb = args[:callback]
    when Symbol
 return send(cb, xml.xpath('epp:epp/epp:response', EPPClient::SCHEMAS_URL))
    else
 raise ArgumentError, "Invalid callback type"
    end
  else
    return true
  end
  else
  raise EPPClient::EPPErrorResponse.new(:xml => xml, :code => code, :message => res.xpath('epp:msg', EPPClient::SCHEMAS_URL).text)
  end
end

#get_trid(xml) ⇒ Object



93
94
95
96
97
98
# File 'lib/epp-client/xml.rb', line 93

def get_trid(xml)
  {
  :clTRID => xml.xpath('epp:clTRID', EPPClient::SCHEMAS_URL).text,
  :svTRID => xml.xpath('epp:svTRID', EPPClient::SCHEMAS_URL).text,
  }
end

#insert_extension(xml1, xml2, pattern = /<clTRID>/) ⇒ Object

Insert xml2 in xml1 before pattern



146
147
148
# File 'lib/epp-client/xml.rb', line 146

def insert_extension(xml1, xml2, pattern = /<clTRID>/)
  xml1.sub(pattern, "#{xml2}\\&")
end

#raw_builder(opts = {}) {|xml| ... } ⇒ Object

:nodoc:

Yields:

  • (xml)


27
28
29
30
# File 'lib/epp-client/xml.rb', line 27

def raw_builder(opts = {}) #:nodoc:
  xml = Builder::XmlMarkup.new(opts)
  yield xml
end

#recv_frame_to_xmlObject

:nodoc:



15
16
17
18
19
# File 'lib/epp-client/xml.rb', line 15

def recv_frame_to_xml #:nodoc:
  @recv_xml = parse_xml(@recv_frame)
  puts @recv_xml.to_s.gsub(/^/, '<< ') if debug
  return @recv_xml
end

#sent_frame_to_xmlObject

:nodoc:



21
22
23
24
25
# File 'lib/epp-client/xml.rb', line 21

def sent_frame_to_xml #:nodoc:
  @send_xml = parse_xml(@sent_frame)
  puts @send_xml.to_s.gsub(/^/, '>> ') if debug
  return @send_xml
end