kono_epp_client 0.1.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of kono_epp_client might be problematic. Click here for more details.

Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/kono_epp_client.gemspec +2 -1
  4. data/lib/kono_epp_client/VERSION +1 -1
  5. data/lib/kono_epp_client/commands/check_contacts.rb +19 -0
  6. data/lib/{epp/epp_command/kono_epp_check_domains.rb → kono_epp_client/commands/check_domains.rb} +3 -1
  7. data/lib/kono_epp_client/commands/command.rb +15 -0
  8. data/lib/kono_epp_client/commands/create_contact.rb +89 -0
  9. data/lib/kono_epp_client/commands/create_domain.rb +45 -0
  10. data/lib/kono_epp_client/commands/delete_contact.rb +17 -0
  11. data/lib/kono_epp_client/commands/delete_domain.rb +16 -0
  12. data/lib/kono_epp_client/commands/hello.rb +15 -0
  13. data/lib/kono_epp_client/commands/info_contact.rb +17 -0
  14. data/lib/kono_epp_client/commands/info_domain.rb +16 -0
  15. data/lib/kono_epp_client/commands/login.rb +81 -0
  16. data/lib/kono_epp_client/commands/logout.rb +12 -0
  17. data/lib/kono_epp_client/commands/poll.rb +18 -0
  18. data/lib/kono_epp_client/commands/transfer_domain.rb +38 -0
  19. data/lib/kono_epp_client/commands/update_contact.rb +116 -0
  20. data/lib/kono_epp_client/commands/update_domain.rb +106 -0
  21. data/lib/kono_epp_client/exceptions/error_response.rb +19 -0
  22. data/lib/kono_epp_client/exceptions.rb +15 -0
  23. data/lib/kono_epp_client/requires_parameters.rb +16 -0
  24. data/lib/{epp → kono_epp_client}/server.rb +24 -24
  25. data/lib/kono_epp_client.rb +4 -16
  26. data/spec/{epp/epp_command/kono_epp_check_contacts_spec.rb → lib/commands/check_contacts_spec.rb} +1 -1
  27. data/spec/{epp/epp_command/kono_epp_check_domains_spec.rb → lib/commands/check_domains_spec.rb} +1 -1
  28. data/spec/{epp/kono_epp_command_spec.rb → lib/commands/command_spec.rb} +2 -2
  29. data/spec/{epp/epp_command/kono_epp_create_domain_spec.rb → lib/commands/create_domain_spec.rb} +2 -2
  30. data/spec/{epp/epp_command/kono_epp_transfer_domain_spec.rb → lib/commands/transfer_domain_spec.rb} +1 -1
  31. data/spec/{epp/epp_command/kono_epp_update_domain_spec.rb → lib/commands/update_domain_spec.rb} +2 -2
  32. metadata +75 -60
  33. data/lib/epp/epp_command/check_contacts.rb +0 -17
  34. data/lib/epp/epp_command/create_contact.rb +0 -87
  35. data/lib/epp/epp_command/create_domain.rb +0 -44
  36. data/lib/epp/epp_command/delete_contact.rb +0 -15
  37. data/lib/epp/epp_command/delete_domain.rb +0 -14
  38. data/lib/epp/epp_command/hello.rb +0 -13
  39. data/lib/epp/epp_command/info_contact.rb +0 -15
  40. data/lib/epp/epp_command/info_domain.rb +0 -14
  41. data/lib/epp/epp_command/login.rb +0 -79
  42. data/lib/epp/epp_command/logout.rb +0 -10
  43. data/lib/epp/epp_command/poll.rb +0 -16
  44. data/lib/epp/epp_command/transfer_domain.rb +0 -36
  45. data/lib/epp/epp_command/update_contact.rb +0 -115
  46. data/lib/epp/epp_command/update_domain.rb +0 -104
  47. data/lib/epp/epp_command.rb +0 -15
  48. data/lib/epp/exceptions.rb +0 -28
  49. data/lib/require_parameters.rb +0 -14
  50. /data/lib/{epp/transport/http.rb → kono_epp_client/transport/http_transport.rb} +0 -0
  51. /data/lib/{epp/transport/tcp.rb → kono_epp_client/transport/tcp_transport.rb} +0 -0
  52. /data/lib/{epp → kono_epp_client}/transport.rb +0 -0
  53. /data/spec/fixtures/snapshots/{kono_epp_check_contacts → kono_epp_client/commands/check_contacts}/_construct.xml.snap +0 -0
  54. /data/spec/fixtures/snapshots/{kono_epp_check_domains → kono_epp_client/commands/check_domains}/_construct.xml.snap +0 -0
  55. /data/spec/fixtures/snapshots/{kono_epp_create_domain → kono_epp_client/commands/create_domain}/_create.xml.snap +0 -0
  56. /data/spec/fixtures/snapshots/{kono_epp_transfer_domain → kono_epp_client/commands/transfer_domain}/_con_extension_construct.xml.snap +0 -0
  57. /data/spec/fixtures/snapshots/{kono_epp_transfer_domain → kono_epp_client/commands/transfer_domain}/_construct.xml.snap +0 -0
  58. /data/spec/fixtures/snapshots/{kono_epp_update_domain → kono_epp_client/commands/update_domain}/_restore_esiste_l'estensione_di_restore.xml.snap +0 -0
  59. /data/spec/fixtures/snapshots/{kono_epp_update_domain → kono_epp_client/commands/update_domain}/_update_auth_info_cambia_AUTH_INFO.xml.snap +0 -0
  60. /data/spec/fixtures/snapshots/{kono_epp_update_domain → kono_epp_client/commands/update_domain}/_update_auth_info_con_nuovo_registrant_cambia_REGISTRANT.xml.snap +0 -0
  61. /data/spec/fixtures/snapshots/{kono_epp_update_domain → kono_epp_client/commands/update_domain}/_update_contacts_cambia_ADMIN_TECH.xml.snap +0 -0
  62. /data/spec/fixtures/snapshots/{kono_epp_update_domain → kono_epp_client/commands/update_domain}/_update_nameservers_aggiunge_e_rimuove_ns.xml.snap +0 -0
  63. /data/spec/fixtures/snapshots/{kono_epp_update_domain → kono_epp_client/commands/update_domain}/_update_status_cambia_status.xml.snap +0 -0
  64. /data/spec/{epp → lib}/server_spec.rb +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2c14b24f2b061e44d80192c0e9612382f6f3f2f159bb3266c3750968dc56640d
4
- data.tar.gz: bb38b49904a2b3205a270fb0d308cab943a710c54879cc193d2bacc868d16c95
3
+ metadata.gz: ec30bc86e3cf93bf003d42f983ba5fb0cb770b9ff89699ee09b0b37e61ae7c45
4
+ data.tar.gz: 629805edb74d005f6c4c93927162d7aa34dfe62a491bca037722f90630433bf1
5
5
  SHA512:
6
- metadata.gz: 4361d5610d860fd4d1bcadebe2dfb68eb19f52a12bd7e49eff016eec4ca756229efc69a3fc4473d9be7a4a622e7d993c52a8befb6bf0d7342e4c2fb28fbeee1d
7
- data.tar.gz: 84f087306f9ce8b5fb2f16dc50e5022063e588b9535847e8edd85b6ad3fadc1d3f6e4d40815ff44e344a745101b4ec42ffb9377479ff0a8a240c801dc2fa6841
6
+ metadata.gz: 7b16b647b5ad39e1337c4a8e96f4ad0e186fc8adde1f5c2ab9e41c0a9d1f75aca32aaeda1ea7635e6fcb5afbd397d0e2a12699268a949e5e94e25df18d51d9af
7
+ data.tar.gz: 4bfc29e02526ccd8df86f6e6190897c79f6885b182b7176836c3940aa2836bb93db58c9dd175adecec8c14ce90f168b537b39f90b59da57f77ad8cfaae9e49c8
data/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
  All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines.
3
3
 
4
4
  - - -
5
+ ## 1.0.0 - 2025-03-12
6
+ #### Refactoring
7
+ - Rewrite correct class names - (6df7a34) - Marino Bonetti
8
+
9
+ - - -
10
+
5
11
  ## 0.1.1 - 2024-05-23
6
12
  #### Continuous Integration
7
13
  - Cog typo - (f91c1b9) - Marino Bonetti
@@ -8,9 +8,9 @@ Gem::Specification.new do |s|
8
8
  s.description = "A simple EPP Client"
9
9
  s.authors = ["Fabio Bonelli", "Jury Ghidinelli", "Marino Bonetti"]
10
10
  s.email = ['jury@archimedianet.it', 'marinobonetti@gmail.com']
11
- s.files = ["lib/kono_epp_client.rb"]
12
11
  s.homepage = 'https://github.com/ArchimediaZerogroup/kono_epp_client'
13
12
  s.license = 'MIT'
13
+ s.required_ruby_version = ">= 2.7"
14
14
 
15
15
  s.files = Dir.chdir(__dir__) do
16
16
  `git ls-files -z`.split("\x0").reject do |f|
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
  s.add_dependency 'activesupport', '>= 5.2'
31
31
  s.add_dependency 'rexml'
32
32
  s.add_dependency 'nokogiri', '>= 1.10'
33
+ s.add_dependency 'zeitwerk'
33
34
 
34
35
  s.add_development_dependency "rspec"
35
36
  s.add_development_dependency "super_diff"
@@ -1 +1 @@
1
- 0.1.1
1
+ 1.0.0
@@ -0,0 +1,19 @@
1
+ module KonoEppClient::Commands
2
+ class CheckContacts < Command
3
+ def initialize(ids)
4
+ super(nil, nil)
5
+
6
+ command = root.elements['command']
7
+
8
+ info = command.add_element "check"
9
+
10
+ contact_check = info.add_element("contact:check", {"xmlns:contact" => "urn:ietf:params:xml:ns:contact-1.0"})
11
+
12
+ ids.each do |t|
13
+ contact_id = contact_check.add_element "contact:id"
14
+ contact_id.text = t
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
+ module KonoEppClient::Commands
2
3
 
3
- class KonoEppCheckDomains < KonoEppCommand
4
+ class CheckDomains < Command
4
5
  def initialize( *domains )
5
6
  super( nil, nil )
6
7
 
@@ -16,3 +17,4 @@ class KonoEppCheckDomains < KonoEppCommand
16
17
  end
17
18
  end
18
19
  end
20
+ end
@@ -0,0 +1,15 @@
1
+ module KonoEppClient::Commands
2
+ class Command < ::REXML::Document
3
+ def initialize(source = nil, context = nil)
4
+ super(source, context)
5
+
6
+ add(::REXML::XMLDecl.new("1.0", "UTF-8", "no"))
7
+
8
+ epp = add_element("epp", {"xmlns" => "urn:ietf:params:xml:ns:epp-1.0",
9
+ "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
10
+ "xsi:schemaLocation" => "urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"})
11
+
12
+ epp.add_element("command")
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,89 @@
1
+ module KonoEppClient::Commands
2
+ class CreateContact < Command
3
+ def initialize(options)
4
+ super(nil, nil)
5
+
6
+ command = root.elements['command']
7
+
8
+ create = command.add_element "create"
9
+
10
+ contact_create = create.add_element("contact:create", {"xmlns:contact" => "urn:ietf:params:xml:ns:contact-1.0",
11
+ "xsi:schemaLocation" => "urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd"})
12
+
13
+ puts options
14
+ id = contact_create.add_element "contact:id"
15
+ id.text = options[:id]
16
+
17
+ postal_info = contact_create.add_element "contact:postalInfo", {"type" => "loc"}
18
+
19
+ name = postal_info.add_element "contact:name"
20
+ name.text = options[:name]
21
+
22
+ unless options[:organization].blank?
23
+ organization = postal_info.add_element "contact:org"
24
+ organization.text = options[:organization]
25
+ end
26
+
27
+ addr = postal_info.add_element "contact:addr"
28
+
29
+ unless options[:street].blank?
30
+ street = addr.add_element "contact:street"
31
+ street.text = options[:street]
32
+ end
33
+
34
+ city = addr.add_element "contact:city"
35
+ city.text = options[:city]
36
+
37
+ unless options[:state].blank?
38
+ state = addr.add_element "contact:sp"
39
+ state.text = options[:state]
40
+ end
41
+
42
+ unless options[:postal_code].blank?
43
+ postal_code = addr.add_element "contact:pc"
44
+ postal_code.text = options[:postal_code]
45
+ end
46
+
47
+ country_code = addr.add_element "contact:cc"
48
+ country_code.text = options[:country_code]
49
+
50
+ if options[:voice]
51
+ voice = contact_create.add_element "contact:voice"
52
+ voice.text = options[:voice]
53
+ end
54
+
55
+ if options[:fax]
56
+ fax = contact_create.add_element "contact:fax"
57
+ fax.text = options[:fax]
58
+ end
59
+
60
+ email = contact_create.add_element "contact:email"
61
+ email.text = options[:email]
62
+
63
+ auth_info = contact_create.add_element "contact:authInfo"
64
+ pw = auth_info.add_element "contact:pw"
65
+ pw.text = options[:auth_info]
66
+
67
+ # FIXME
68
+ extension = command.add_element "extension"
69
+ extension_create = extension.add_element "extcon:create", {"xmlns:extcon" => 'http://www.nic.it/ITNIC-EPP/extcon-1.0',
70
+ "xsi:schemaLocation" => 'http://www.nic.it/ITNIC-EPP/extcon-1.0 extcon-1.0.xsd'}
71
+
72
+ publish = extension_create.add_element "extcon:consentForPublishing"
73
+ publish.text = options[:publish] == "1" ? "true" : "false"
74
+
75
+ if options[:is_registrant]
76
+ extcon_registrant = extension_create.add_element "extcon:registrant"
77
+
78
+ extcon_nationality = extcon_registrant.add_element "extcon:nationalityCode"
79
+ extcon_nationality.text = options[:nationality]
80
+
81
+ extcon_entity = extcon_registrant.add_element "extcon:entityType"
82
+ extcon_entity.text = options[:entity_type]
83
+
84
+ extcon_regcode = extcon_registrant.add_element "extcon:regCode"
85
+ extcon_regcode.text = options[:reg_code]
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,45 @@
1
+ module KonoEppClient::Commands
2
+ class CreateDomain < Command
3
+ def initialize(options)
4
+ super(nil, nil)
5
+
6
+ command = root.elements['command']
7
+ create = command.add_element("create")
8
+
9
+ domain_create = create.add_element("domain:create", {"xmlns:domain" => "urn:ietf:params:xml:ns:domain-1.0",
10
+ "xsi:schemaLocation" => "urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd"})
11
+
12
+ name = domain_create.add_element "domain:name"
13
+ name.text = options[:name]
14
+
15
+ domain_ns = domain_create.add_element "domain:ns"
16
+
17
+ options[:nameservers].each do |ns|
18
+ host_attr = domain_ns.add_element "domain:hostAttr"
19
+ host_name = host_attr.add_element "domain:hostName"
20
+
21
+ host_name.text = ns[0]
22
+
23
+ # FIXME IPv6
24
+ if ns[1]
25
+ host_addr = host_attr.add_element "domain:hostAddr", {"ip" => "v4"}
26
+ host_addr.text = ns[1]
27
+ end
28
+ end
29
+
30
+ domain_registrant = domain_create.add_element "domain:registrant"
31
+ domain_registrant.text = options[:registrant]
32
+
33
+ domain_contact = domain_create.add_element "domain:contact", {"type" => "admin"}
34
+ domain_contact.text = options[:admin]
35
+
36
+ domain_contact = domain_create.add_element "domain:contact", {"type" => "tech"}
37
+ domain_contact.text = options[:tech]
38
+
39
+ domain_authinfo = domain_create.add_element "domain:authInfo"
40
+
41
+ domain_pw = domain_authinfo.add_element "domain:pw"
42
+ domain_pw.text = options[:authinfo]
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,17 @@
1
+ module KonoEppClient::Commands
2
+ class DeleteContact < Command
3
+ def initialize(id)
4
+ super(nil, nil)
5
+
6
+ command = root.elements['command']
7
+
8
+ delete = command.add_element "delete"
9
+
10
+ contact_delete = delete.add_element("contact:delete", {"xmlns:contact" => "urn:ietf:params:xml:ns:contact-1.0",
11
+ "xsi:schemaLocation" => "urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd"})
12
+
13
+ contact_id = contact_delete.add_element "contact:id"
14
+ contact_id.text = id
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,16 @@
1
+ module KonoEppClient::Commands
2
+ class DeleteDomain < Command
3
+ def initialize(name)
4
+ super(nil, nil)
5
+
6
+ command = root.elements['command']
7
+ delete = command.add_element("delete")
8
+
9
+ domain_delete = delete.add_element("domain:delete", {"xmlns:domain" => "urn:ietf:params:xml:ns:domain-1.0",
10
+ "xsi:schemaLocation" => "urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd"})
11
+
12
+ domain_name = domain_delete.add_element "domain:name"
13
+ domain_name.text = name
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ module KonoEppClient::Commands
2
+ class Hello < ::REXML::Document
3
+ def initialize
4
+ super
5
+
6
+ add(::REXML::XMLDecl.new("1.0", "UTF-8", "no"))
7
+
8
+ epp = add_element("epp", {"xmlns" => "urn:ietf:params:xml:ns:epp-1.0",
9
+ "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
10
+ "xsi:schemaLocation" => "urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"})
11
+
12
+ epp.add_element("hello")
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ module KonoEppClient::Commands
2
+ class InfoContact < Command
3
+ def initialize(id)
4
+ super(nil, nil)
5
+
6
+ command = root.elements['command']
7
+
8
+ info = command.add_element "info"
9
+
10
+ contact_info = info.add_element("contact:info", {"xmlns:contact" => "urn:ietf:params:xml:ns:contact-1.0",
11
+ "xsi:schemaLocation" => "urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd"})
12
+
13
+ contact_id = contact_info.add_element "contact:id"
14
+ contact_id.text = id
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,16 @@
1
+ module KonoEppClient::Commands
2
+ class InfoDomain < Command
3
+ def initialize(name)
4
+ super(nil, nil)
5
+
6
+ command = root.elements['command']
7
+ info = command.add_element("info")
8
+
9
+ domain_info = info.add_element("domain:info", {"xmlns:domain" => "urn:ietf:params:xml:ns:domain-1.0",
10
+ "xsi:schemaLocation" => "urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd"})
11
+
12
+ domain_name = domain_info.add_element "domain:name", {"hosts" => "all"}
13
+ domain_name.text = name
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,81 @@
1
+ module KonoEppClient::Commands
2
+ class Login < Command
3
+ def initialize(id = nil, password = nil)
4
+ super(nil, nil)
5
+
6
+ @command = root.elements['command']
7
+ @login = @command.add_element("login")
8
+
9
+ @login.add_element("clID").text = id if id
10
+ @login.add_element("pw").text = password if password
11
+
12
+ @command.add_element("clTRID").text = "ABC-12345"
13
+ end
14
+
15
+ def version=(value)
16
+ @options = @login.add_element("options") unless @options
17
+ @options.add_element("version") unless @options.elements['version']
18
+
19
+ @options.elements['version'].text = value
20
+ end
21
+
22
+ def version
23
+ version = @options.elements['version']
24
+
25
+ version.text if version
26
+ end
27
+
28
+ def lang=(value)
29
+ @options = @login.add_element("options") unless @options
30
+ @options.add_element("lang") unless @options.elements['lang']
31
+
32
+ @options.elements['lang'].text = value
33
+ end
34
+
35
+ def lang
36
+ lang = @options.elements['lang']
37
+
38
+ lang.text if version
39
+ end
40
+
41
+ def new_password=(value)
42
+ newpw = @login.add_element("newPW")
43
+ newpw.text = value
44
+ end
45
+
46
+ def services=(services)
47
+ svcs = @login.add_element("svcs") unless @login.elements['svcs']
48
+ services.each { |service| svcs.add_element("objURI").text = service }
49
+ end
50
+
51
+ def services
52
+ svcs = @login.elements['svcs']
53
+
54
+ res = []
55
+ svcs.elements.each("objURI") { |obj| res << obj.text } if svcs
56
+
57
+ return res
58
+ end
59
+
60
+ def extensions=(extensions)
61
+ svcs = @login.elements['svcs']
62
+
63
+ svcs = @login.add_element("svcs") unless svcs
64
+
65
+ # Include schema extensions for registrars which require it
66
+ extensions_container = svcs.add_element("svcExtension") unless extensions.empty?
67
+
68
+ for uri in extensions
69
+ extensions_container.add_element("extURI").text = uri
70
+ end
71
+ end
72
+
73
+ def extensions
74
+ svc_extension = @login.elements['svcs/svcExtension']
75
+
76
+ svc_extension.elements.each("extURI") { |obj| res << obj.text } if svcs_extension
77
+
78
+ return res
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,12 @@
1
+ module KonoEppClient::Commands
2
+ class Logout < Command
3
+ def initialize(id = nil, password = nil)
4
+ super(nil, nil)
5
+
6
+ command = root.elements['command']
7
+ command.add_element("logout")
8
+
9
+ command.add_element("clTRID").text = "ABC-12345"
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,18 @@
1
+ module KonoEppClient::Commands
2
+ class Poll < Command
3
+ def initialize(op = :req)
4
+ super(nil, nil)
5
+
6
+ command = root.elements['command']
7
+ poll = command.add_element("poll")
8
+
9
+ poll.add_attribute("op", op.to_s)
10
+ end
11
+
12
+ def ack_id=(id)
13
+ poll = root.elements['command/poll']
14
+
15
+ poll.add_attribute("msgID", id)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,38 @@
1
+ module KonoEppClient::Commands
2
+ class TransferDomain < Command
3
+ def initialize(name, authinfo, op, extension: nil)
4
+ super(nil, nil)
5
+
6
+ command = root.elements['command']
7
+ transfer = command.add_element("transfer", {"op" => op})
8
+ # FIXME dovremmo controllare che le possibili opzioni di OP sono 'request', 'cancel', 'approve', 'reject', 'query'
9
+
10
+ domain_transfer = transfer.add_element("domain:transfer", {"xmlns:domain" => "urn:ietf:params:xml:ns:domain-1.0",
11
+ "xsi:schemaLocation" => "urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd"})
12
+
13
+ domain_name = domain_transfer.add_element "domain:name"
14
+ domain_name.text = name
15
+
16
+ domain_authinfo = domain_transfer.add_element "domain:authInfo"
17
+ domain_pw = domain_authinfo.add_element "domain:pw"
18
+
19
+ domain_pw.text = authinfo
20
+
21
+ ## Questa estensione è per Modifica del Registrar con contestuale modifica del Registrante
22
+ if extension
23
+
24
+ ext_elm = command.add_element "extension"
25
+ ext_trade = ext_elm.add_element "extdom:trade", {"xmlns:extdom" => "http://www.nic.it/ITNIC-EPP/extdom-2.0",
26
+ "xsi:schemaLocation" => "http://www.nic.it/ITNIC-EPP/extdom-2.0 extdom-2.0.xsd"}
27
+
28
+ transfer_trade = ext_trade.add_element "extdom:transferTrade"
29
+ transfer_trade.add_element("extdom:newRegistrant").text = extension[:new_registrant] if extension[:new_registrant]
30
+ if extension[:new_auth_info]
31
+ transfer_trade.add_element("extdom:newAuthInfo").add_element("extdom:pw").tap { |x| x.text = extension[:new_auth_info] }
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,116 @@
1
+ module KonoEppClient::Commands
2
+ class UpdateContact < Command
3
+
4
+ # TODO: Add and remove fields
5
+ def initialize(options)
6
+ super(nil, nil)
7
+
8
+ command = root.elements['command']
9
+
10
+ update = command.add_element "update"
11
+
12
+ contact_update = update.add_element("contact:update", {"xmlns:contact" => "urn:ietf:params:xml:ns:contact-1.0",
13
+ "xsi:schemaLocation" => "urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd"})
14
+
15
+ id = contact_update.add_element "contact:id"
16
+ id.text = options[:id]
17
+
18
+ contact_chg = contact_update.add_element "contact:chg"
19
+
20
+ unless options[:name].blank? \
21
+ and options[:organization].blank? \
22
+ and options[:address].blank? \
23
+ and options[:city].blank? \
24
+ and options[:state].blank? \
25
+ and options[:postal_code].blank? \
26
+ and options[:country].blank?
27
+
28
+ postal_info = contact_chg.add_element "contact:postalInfo", {"type" => "loc"}
29
+
30
+ unless options[:name].blank?
31
+ name = postal_info.add_element "contact:name"
32
+ name.text = options[:name]
33
+ end
34
+
35
+ unless options[:organization].blank?
36
+ organization = postal_info.add_element "contact:org"
37
+ organization.text = options[:organization]
38
+ end
39
+
40
+ # NOTE: city and country are REQUIRED
41
+ unless options[:address].blank? \
42
+ and options[:city].blank? \
43
+ and options[:state].blank? \
44
+ and options[:postal_code].blank? \
45
+ and options[:country].blank?
46
+
47
+ addr = postal_info.add_element "contact:addr"
48
+
49
+ unless options[:address].blank?
50
+ street = addr.add_element "contact:street"
51
+ street.text = options[:address]
52
+ end
53
+
54
+ city = addr.add_element "contact:city"
55
+ city.text = options[:city]
56
+
57
+ unless options[:state].blank?
58
+ state = addr.add_element "contact:sp"
59
+ state.text = options[:state]
60
+ end
61
+
62
+ unless options[:postal_code].blank?
63
+ postal_code = addr.add_element "contact:pc"
64
+ postal_code.text = options[:postal_code]
65
+ end
66
+
67
+ country_code = addr.add_element "contact:cc"
68
+ country_code.text = options[:country]
69
+ end
70
+ end
71
+
72
+ if options[:voice]
73
+ voice = contact_chg.add_element "contact:voice"
74
+ voice.text = options[:voice]
75
+ end
76
+
77
+ if options[:fax]
78
+ fax = contact_chg.add_element "contact:fax"
79
+ fax.text = options[:fax]
80
+ end
81
+
82
+ if options[:email]
83
+ email = contact_chg.add_element "contact:email"
84
+ email.text = options[:email]
85
+ end
86
+
87
+ unless not options.has_key?(:publish) \
88
+ and options[:nationality].blank? \
89
+ and options[:entity_type].blank? \
90
+ and options[:reg_code].blank?
91
+
92
+ # FIXME
93
+ extension = command.add_element "extension"
94
+ extension_update = extension.add_element "extcon:update", {"xmlns:extcon" => 'http://www.nic.it/ITNIC-EPP/extcon-1.0',
95
+ "xsi:schemaLocation" => 'http://www.nic.it/ITNIC-EPP/extcon-1.0 extcon-1.0.xsd'}
96
+ if options.has_key?(:publish)
97
+ publish = extension_update.add_element "extcon:consentForPublishing"
98
+ publish.text = options[:publish]
99
+ end
100
+
101
+ if options[:becomes_registrant]
102
+ extcon_registrant = extension_update.add_element "extcon:registrant"
103
+
104
+ extcon_nationality = extcon_registrant.add_element "extcon:nationalityCode"
105
+ extcon_nationality.text = options[:nationality]
106
+
107
+ extcon_entity = extcon_registrant.add_element "extcon:entityType"
108
+ extcon_entity.text = options[:entity_type]
109
+
110
+ extcon_regcode = extcon_registrant.add_element "extcon:regCode"
111
+ extcon_regcode.text = options[:reg_code]
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end