@@ -7,3 +7,95 @@ type ContactCreateResData struct {
77 ID string `xml:"urn:ietf:params:xml:ns:contact-1.0 id"`
88 CRDate string `xml:"urn:ietf:params:xml:ns:contact-1.0 crDate"`
99}
10+
11+ type CheckContactID struct {
12+ Value string `xml:",chardata"`
13+ Available uint8 `xml:"avail,attr"`
14+ }
15+
16+ type SingleCheckContact struct {
17+ Reason * string `xml:"reason,omitempty"`
18+ ID CheckContactID `xml:"urn:ietf:params:xml:ns:contact-1.0 id"`
19+ }
20+
21+ type ContactsCheckResData struct {
22+ XMLName xml.Name `xml:"urn:ietf:params:xml:ns:contact-1.0 chkData"`
23+ Contacts []SingleCheckContact `xml:"urn:ietf:params:xml:ns:contact-1.0 cd"`
24+ }
25+
26+ func (d ContactsCheckResData ) MarshalXML (enc * xml.Encoder , _ xml.StartElement ) error {
27+ start := xml.StartElement {
28+ Name : xml.Name {Local : "contact:chkData" },
29+ Attr : []xml.Attr {
30+ {
31+ Name : xml.Name {Local : "xmlns:contact" },
32+ Value : "urn:ietf:params:xml:ns:contact-1.0" ,
33+ },
34+ },
35+ }
36+
37+ if err := enc .EncodeToken (start ); err != nil {
38+ return err
39+ }
40+
41+ for _ , contact := range d .Contacts {
42+ if err := enc .Encode (contact ); err != nil {
43+ return err
44+ }
45+ }
46+
47+ if err := enc .EncodeToken (start .End ()); err != nil {
48+ return err
49+ }
50+
51+ return enc .Flush ()
52+ }
53+
54+ func (c SingleCheckContact ) MarshalXML (enc * xml.Encoder , _ xml.StartElement ) error {
55+ start := xml.StartElement {Name : xml.Name {Local : "contact:cd" }}
56+ if err := enc .EncodeToken (start ); err != nil {
57+ return err
58+ }
59+
60+ if err := enc .Encode (c .ID ); err != nil {
61+ return err
62+ }
63+
64+ if c .Reason != nil {
65+ if err := enc .EncodeElement (* c .Reason , xml.StartElement {Name : xml.Name {Local : "contact:reason" }}); err != nil {
66+ return err
67+ }
68+ }
69+
70+ if err := enc .EncodeToken (start .End ()); err != nil {
71+ return err
72+ }
73+
74+ return enc .Flush ()
75+ }
76+
77+ func (i CheckContactID ) MarshalXML (enc * xml.Encoder , _ xml.StartElement ) error {
78+ start := xml.StartElement {
79+ Name : xml.Name {Local : "contact:id" },
80+ Attr : []xml.Attr {
81+ {
82+ Name : xml.Name {Local : "avail" },
83+ Value : string ('0' + rune (i .Available )),
84+ },
85+ },
86+ }
87+
88+ if err := enc .EncodeToken (start ); err != nil {
89+ return err
90+ }
91+
92+ if err := enc .EncodeToken (xml .CharData (i .Value )); err != nil {
93+ return err
94+ }
95+
96+ if err := enc .EncodeToken (start .End ()); err != nil {
97+ return err
98+ }
99+
100+ return enc .Flush ()
101+ }
0 commit comments