Lua Requires Chilkat v11.0.0+
Lua
RDAP Domain Lookup using rdap.org
See more HTTP Misc Examples
Demonstrates doing an RDAP domain lookup using the rdap.org public RDAP server.Chilkat Lua Downloads
local chilkat = require("chilkat")
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
local http = chilkat.Http.new()
-- Send HTTP requests to https://rdap.org/<type>/<object>, where <type> is the object type (one of domain, ip, autnum, entity etc)
-- and <object> is the object identifier (eg example.com, 192.168.0.1, 64496, etc).
-- For example, here's a lookup for "oracle.com"
local sbResponse = chilkat.StringBuilder.new()
local success = http:quick_get_sb("https://rdap.org/domain/oracle.com", sbResponse)
if not success then
print(http.last_error_text)
return
end
local statusCode = http.last_status
if statusCode ~= 200 then
print("Error response:")
print(sbResponse:get_as_string())
print("status code: " .. statusCode)
return
end
-- Load the JSON response and examine..
-- Use this online tool to generate parsing code from sample JSON:
-- Generate Parsing Code from JSON
local json = chilkat.JsonObject.new()
json:load_sb(sbResponse)
json.emit_compact = false
print(json:emit())
-- Here's a sample response, and the parsing code generated from the above online tool follows..
-- {
-- "objectClassName": "domain",
-- "handle": "607513_DOMAIN_COM-VRSN",
-- "ldhName": "ORACLE.COM",
-- "links": [
-- {
-- "value": "https:\/\/rdap.verisign.com\/com\/v1\/domain\/ORACLE.COM",
-- "rel": "self",
-- "href": "https:\/\/rdap.verisign.com\/com\/v1\/domain\/ORACLE.COM",
-- "type": "application\/rdap+json"
-- },
-- {
-- "value": "https:\/\/rdap.markmonitor.com\/rdap\/domain\/ORACLE.COM",
-- "rel": "related",
-- "href": "https:\/\/rdap.markmonitor.com\/rdap\/domain\/ORACLE.COM",
-- "type": "application\/rdap+json"
-- }
-- ],
-- "status": [
-- "client delete prohibited",
-- "client transfer prohibited",
-- "client update prohibited",
-- "server delete prohibited",
-- "server transfer prohibited",
-- "server update prohibited"
-- ],
-- "entities": [
-- {
-- "objectClassName": "entity",
-- "handle": "292",
-- "roles": [
-- "registrar"
-- ],
-- "publicIds": [
-- {
-- "type": "IANA Registrar ID",
-- "identifier": "292"
-- }
-- ],
-- "vcardArray": [
-- "vcard",
-- [
-- [
-- "version",
-- {},
-- "text",
-- "4.0"
-- ],
-- [
-- "fn",
-- {},
-- "text",
-- "MarkMonitor Inc."
-- ]
-- ]
-- ],
-- "entities": [
-- {
-- "objectClassName": "entity",
-- "roles": [
-- "abuse"
-- ],
-- "vcardArray": [
-- "vcard",
-- [
-- [
-- "version",
-- {},
-- "text",
-- "4.0"
-- ],
-- [
-- "fn",
-- {},
-- "text",
-- ""
-- ],
-- [
-- "tel",
-- {
-- "type": "voice"
-- },
-- "uri",
-- "tel:+1.2086851750"
-- ],
-- [
-- "email",
-- {},
-- "text",
-- "abusecomplaints@markmonitor.com"
-- ]
-- ]
-- ]
-- }
-- ]
-- }
-- ],
-- "events": [
-- {
-- "eventAction": "registration",
-- "eventDate": "1988-12-02T05:00:00Z"
-- },
-- {
-- "eventAction": "expiration",
-- "eventDate": "2025-12-01T05:00:00Z"
-- },
-- {
-- "eventAction": "last changed",
-- "eventDate": "2024-10-30T09:32:52Z"
-- },
-- {
-- "eventAction": "last update of RDAP database",
-- "eventDate": "2024-11-26T14:11:14Z"
-- }
-- ],
-- "secureDNS": {
-- "delegationSigned": false
-- },
-- "nameservers": [
-- {
-- "objectClassName": "nameserver",
-- "ldhName": "A1-160.AKAM.NET"
-- },
-- {
-- "objectClassName": "nameserver",
-- "ldhName": "A11-66.AKAM.NET"
-- },
-- {
-- "objectClassName": "nameserver",
-- "ldhName": "A13-65.AKAM.NET"
-- },
-- {
-- "objectClassName": "nameserver",
-- "ldhName": "A18-67.AKAM.NET"
-- },
-- {
-- "objectClassName": "nameserver",
-- "ldhName": "NS1.P201.DNS.ORACLECLOUD.NET"
-- },
-- {
-- "objectClassName": "nameserver",
-- "ldhName": "NS2.P201.DNS.ORACLECLOUD.NET"
-- },
-- {
-- "objectClassName": "nameserver",
-- "ldhName": "NS3.P201.DNS.ORACLECLOUD.NET"
-- },
-- {
-- "objectClassName": "nameserver",
-- "ldhName": "NS4.P201.DNS.ORACLECLOUD.NET"
-- }
-- ],
-- "rdapConformance": [
-- "rdap_level_0",
-- "icann_rdap_technical_implementation_guide_0",
-- "icann_rdap_response_profile_0"
-- ],
-- "notices": [
-- {
-- "title": "Terms of Use",
-- "description": [
-- "Service subject to Terms of Use."
-- ],
-- "links": [
-- {
-- "href": "https:\/\/www.verisign.com\/domain-names\/registration-data-access-protocol\/terms-service\/index.xhtml",
-- "type": "text\/html"
-- }
-- ]
-- },
-- {
-- "title": "Status Codes",
-- "description": [
-- "For more information on domain status codes, please visit https:\/\/icann.org\/epp"
-- ],
-- "links": [
-- {
-- "href": "https:\/\/icann.org\/epp",
-- "type": "text\/html"
-- }
-- ]
-- },
-- {
-- "title": "RDDS Inaccuracy Complaint Form",
-- "description": [
-- "URL of the ICANN RDDS Inaccuracy Complaint Form: https:\/\/icann.org\/wicf"
-- ],
-- "links": [
-- {
-- "href": "https:\/\/icann.org\/wicf",
-- "type": "text\/html"
-- }
-- ]
-- }
-- ]
-- }
local value = ""
local rel = ""
local href = ""
local v_type = ""
local strVal = ""
local j = 0
local count_j = 0
local identifier = ""
local k = 0
local count_k = 0
local json1 = chilkat.JsonObject.new()
local i1 = 0
local count_i1 = 0
local j1 = 0
local count_j1 = 0
local eventAction = ""
local eventDate = ""
local title = ""
local objectClassName = json:string_of("objectClassName")
local handle = json:string_of("handle")
local ldhName = json:string_of("ldhName")
local DelegationSigned = json:bool_of("secureDNS.delegationSigned")
local i = 0
local count_i = json:size_of_array("links")
while i < count_i do
json.i = i
value = json:string_of("links[i].value")
rel = json:string_of("links[i].rel")
href = json:string_of("links[i].href")
v_type = json:string_of("links[i].type")
i = i + 1
end
i = 0
count_i = json:size_of_array("status")
while i < count_i do
json.i = i
strVal = json:string_of("status[i]")
i = i + 1
end
i = 0
count_i = json:size_of_array("entities")
while i < count_i do
json.i = i
objectClassName = json:string_of("entities[i].objectClassName")
handle = json:string_of("entities[i].handle")
j = 0
count_j = json:size_of_array("entities[i].roles")
while j < count_j do
json.j = j
strVal = json:string_of("entities[i].roles[j]")
j = j + 1
end
j = 0
count_j = json:size_of_array("entities[i].publicIds")
while j < count_j do
json.j = j
v_type = json:string_of("entities[i].publicIds[j].type")
identifier = json:string_of("entities[i].publicIds[j].identifier")
j = j + 1
end
j = 0
count_j = json:size_of_array("entities[i].vcardArray")
while j < count_j do
json.j = j
strVal = json:string_of("entities[i].vcardArray[j]")
k = 0
count_k = json:size_of_array("entities[i].vcardArray[j]")
while k < count_k do
json.k = k
json:object_of2("entities[i].vcardArray[j][k]", json1)
i1 = 0
count_i1 = json1:size_of_array("")
while i1 < count_i1 do
json1.i = i1
strVal = json1:string_of("[i]")
i1 = i1 + 1
end
k = k + 1
end
j = j + 1
end
j = 0
count_j = json:size_of_array("entities[i].entities")
while j < count_j do
json.j = j
objectClassName = json:string_of("entities[i].entities[j].objectClassName")
k = 0
count_k = json:size_of_array("entities[i].entities[j].roles")
while k < count_k do
json.k = k
strVal = json:string_of("entities[i].entities[j].roles[k]")
k = k + 1
end
k = 0
count_k = json:size_of_array("entities[i].entities[j].vcardArray")
while k < count_k do
json.k = k
strVal = json:string_of("entities[i].entities[j].vcardArray[k]")
json:object_of2("entities[i].entities[j].vcardArray[k]", json1)
i1 = 0
count_i1 = json1:size_of_array("")
while i1 < count_i1 do
json1.i = i1
j1 = 0
count_j1 = json1:size_of_array("[i]")
while j1 < count_j1 do
json1.j = j1
strVal = json1:string_of("[i][j]")
j1 = j1 + 1
end
i1 = i1 + 1
end
k = k + 1
end
j = j + 1
end
i = i + 1
end
i = 0
count_i = json:size_of_array("events")
while i < count_i do
json.i = i
eventAction = json:string_of("events[i].eventAction")
eventDate = json:string_of("events[i].eventDate")
i = i + 1
end
i = 0
count_i = json:size_of_array("nameservers")
while i < count_i do
json.i = i
objectClassName = json:string_of("nameservers[i].objectClassName")
ldhName = json:string_of("nameservers[i].ldhName")
i = i + 1
end
i = 0
count_i = json:size_of_array("rdapConformance")
while i < count_i do
json.i = i
strVal = json:string_of("rdapConformance[i]")
i = i + 1
end
i = 0
count_i = json:size_of_array("notices")
while i < count_i do
json.i = i
title = json:string_of("notices[i].title")
j = 0
count_j = json:size_of_array("notices[i].description")
while j < count_j do
json.j = j
strVal = json:string_of("notices[i].description[j]")
j = j + 1
end
j = 0
count_j = json:size_of_array("notices[i].links")
while j < count_j do
json.j = j
href = json:string_of("notices[i].links[j].href")
v_type = json:string_of("notices[i].links[j].type")
j = j + 1
end
i = i + 1
end