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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/kono_epp_client.gemspec +2 -1
- data/lib/kono_epp_client/VERSION +1 -1
- data/lib/kono_epp_client/commands/check_contacts.rb +19 -0
- data/lib/{epp/epp_command/kono_epp_check_domains.rb → kono_epp_client/commands/check_domains.rb} +3 -1
- data/lib/kono_epp_client/commands/command.rb +15 -0
- data/lib/kono_epp_client/commands/create_contact.rb +89 -0
- data/lib/kono_epp_client/commands/create_domain.rb +45 -0
- data/lib/kono_epp_client/commands/delete_contact.rb +17 -0
- data/lib/kono_epp_client/commands/delete_domain.rb +16 -0
- data/lib/kono_epp_client/commands/hello.rb +15 -0
- data/lib/kono_epp_client/commands/info_contact.rb +17 -0
- data/lib/kono_epp_client/commands/info_domain.rb +16 -0
- data/lib/kono_epp_client/commands/login.rb +81 -0
- data/lib/kono_epp_client/commands/logout.rb +12 -0
- data/lib/kono_epp_client/commands/poll.rb +18 -0
- data/lib/kono_epp_client/commands/transfer_domain.rb +38 -0
- data/lib/kono_epp_client/commands/update_contact.rb +116 -0
- data/lib/kono_epp_client/commands/update_domain.rb +106 -0
- data/lib/kono_epp_client/exceptions/error_response.rb +19 -0
- data/lib/kono_epp_client/exceptions.rb +15 -0
- data/lib/kono_epp_client/requires_parameters.rb +16 -0
- data/lib/{epp → kono_epp_client}/server.rb +24 -24
- data/lib/kono_epp_client.rb +4 -16
- data/spec/{epp/epp_command/kono_epp_check_contacts_spec.rb → lib/commands/check_contacts_spec.rb} +1 -1
- data/spec/{epp/epp_command/kono_epp_check_domains_spec.rb → lib/commands/check_domains_spec.rb} +1 -1
- data/spec/{epp/kono_epp_command_spec.rb → lib/commands/command_spec.rb} +2 -2
- data/spec/{epp/epp_command/kono_epp_create_domain_spec.rb → lib/commands/create_domain_spec.rb} +2 -2
- data/spec/{epp/epp_command/kono_epp_transfer_domain_spec.rb → lib/commands/transfer_domain_spec.rb} +1 -1
- data/spec/{epp/epp_command/kono_epp_update_domain_spec.rb → lib/commands/update_domain_spec.rb} +2 -2
- metadata +75 -60
- data/lib/epp/epp_command/check_contacts.rb +0 -17
- data/lib/epp/epp_command/create_contact.rb +0 -87
- data/lib/epp/epp_command/create_domain.rb +0 -44
- data/lib/epp/epp_command/delete_contact.rb +0 -15
- data/lib/epp/epp_command/delete_domain.rb +0 -14
- data/lib/epp/epp_command/hello.rb +0 -13
- data/lib/epp/epp_command/info_contact.rb +0 -15
- data/lib/epp/epp_command/info_domain.rb +0 -14
- data/lib/epp/epp_command/login.rb +0 -79
- data/lib/epp/epp_command/logout.rb +0 -10
- data/lib/epp/epp_command/poll.rb +0 -16
- data/lib/epp/epp_command/transfer_domain.rb +0 -36
- data/lib/epp/epp_command/update_contact.rb +0 -115
- data/lib/epp/epp_command/update_domain.rb +0 -104
- data/lib/epp/epp_command.rb +0 -15
- data/lib/epp/exceptions.rb +0 -28
- data/lib/require_parameters.rb +0 -14
- /data/lib/{epp/transport/http.rb → kono_epp_client/transport/http_transport.rb} +0 -0
- /data/lib/{epp/transport/tcp.rb → kono_epp_client/transport/tcp_transport.rb} +0 -0
- /data/lib/{epp → kono_epp_client}/transport.rb +0 -0
- /data/spec/fixtures/snapshots/{kono_epp_check_contacts → kono_epp_client/commands/check_contacts}/_construct.xml.snap +0 -0
- /data/spec/fixtures/snapshots/{kono_epp_check_domains → kono_epp_client/commands/check_domains}/_construct.xml.snap +0 -0
- /data/spec/fixtures/snapshots/{kono_epp_create_domain → kono_epp_client/commands/create_domain}/_create.xml.snap +0 -0
- /data/spec/fixtures/snapshots/{kono_epp_transfer_domain → kono_epp_client/commands/transfer_domain}/_con_extension_construct.xml.snap +0 -0
- /data/spec/fixtures/snapshots/{kono_epp_transfer_domain → kono_epp_client/commands/transfer_domain}/_construct.xml.snap +0 -0
- /data/spec/fixtures/snapshots/{kono_epp_update_domain → kono_epp_client/commands/update_domain}/_restore_esiste_l'estensione_di_restore.xml.snap +0 -0
- /data/spec/fixtures/snapshots/{kono_epp_update_domain → kono_epp_client/commands/update_domain}/_update_auth_info_cambia_AUTH_INFO.xml.snap +0 -0
- /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
- /data/spec/fixtures/snapshots/{kono_epp_update_domain → kono_epp_client/commands/update_domain}/_update_contacts_cambia_ADMIN_TECH.xml.snap +0 -0
- /data/spec/fixtures/snapshots/{kono_epp_update_domain → kono_epp_client/commands/update_domain}/_update_nameservers_aggiunge_e_rimuove_ns.xml.snap +0 -0
- /data/spec/fixtures/snapshots/{kono_epp_update_domain → kono_epp_client/commands/update_domain}/_update_status_cambia_status.xml.snap +0 -0
- /data/spec/{epp → lib}/server_spec.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec30bc86e3cf93bf003d42f983ba5fb0cb770b9ff89699ee09b0b37e61ae7c45
|
4
|
+
data.tar.gz: 629805edb74d005f6c4c93927162d7aa34dfe62a491bca037722f90630433bf1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/kono_epp_client.gemspec
CHANGED
@@ -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"
|
data/lib/kono_epp_client/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
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
|
data/lib/{epp/epp_command/kono_epp_check_domains.rb → kono_epp_client/commands/check_domains.rb}
RENAMED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
module KonoEppClient::Commands
|
2
3
|
|
3
|
-
class
|
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
|