{"id":18364277,"url":"https://github.com/gbxyz/perl-net-rdap","last_synced_at":"2025-04-06T15:32:26.963Z","repository":{"id":163894908,"uuid":"620343202","full_name":"gbxyz/perl-net-rdap","owner":"gbxyz","description":"Net::RDAP - an interface to the Registration Data Access Protocol.","archived":false,"fork":false,"pushed_at":"2025-04-03T11:01:13.000Z","size":322,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-03T12:20:04.442Z","etag":null,"topics":["perl","perl-module","rdap","rdap-client","rdap-protocol"],"latest_commit_sha":null,"homepage":"https://metacpan.org/pod/Net::RDAP","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gbxyz.png","metadata":{"files":{"readme":"README.md","changelog":"Changes","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-28T13:51:46.000Z","updated_at":"2025-04-03T11:00:45.000Z","dependencies_parsed_at":"2024-05-30T11:18:28.070Z","dependency_job_id":"bcc51c6c-c0fe-4930-9122-d1f7b2c16d77","html_url":"https://github.com/gbxyz/perl-net-rdap","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbxyz%2Fperl-net-rdap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbxyz%2Fperl-net-rdap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbxyz%2Fperl-net-rdap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbxyz%2Fperl-net-rdap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gbxyz","download_url":"https://codeload.github.com/gbxyz/perl-net-rdap/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247503037,"owners_count":20949370,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["perl","perl-module","rdap","rdap-client","rdap-protocol"],"created_at":"2024-11-05T23:09:44.762Z","updated_at":"2025-04-06T15:32:26.956Z","avatar_url":"https://github.com/gbxyz.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NAME\n\n[Net::RDAP](https://metacpan.org/pod/Net%3A%3ARDAP) - an interface to the Registration Data Access Protocol (RDAP).\n\n# SYNOPSIS\n\n    use Net::RDAP;\n\n    my $rdap = Net::RDAP-\u003enew;\n\n    #\n    # traditional lookup:\n    #\n\n    # get domain info:\n    $object = $rdap-\u003edomain('example.com');\n\n    # get info about IP addresses/ranges:\n    $object = $rdap-\u003eip('192.168.0.1');\n    $object = $rdap-\u003eip('2001:DB8::/32');\n\n    # get info about AS numbers:\n    $object = $rdap-\u003eautnum(65536);\n\n    #\n    # search functions:\n    #\n\n    my $server = Net::RDAP::Service-\u003enew(\"https://www.example.com/rdap\");\n\n    # search for domains by name:\n    my $result = $server-\u003edomains('name' =\u003e 'ex*mple.com');\n\n    # search for entities by name:\n    my $result = $server-\u003eentities('fn' =\u003e 'J*n Doe');\n\n    # search for nameservers by IP address:\n    my $result = $server-\u003enameservers('ip' =\u003e '192.168.56.101');\n\n# DESCRIPTION\n\n[Net::RDAP](https://metacpan.org/pod/Net%3A%3ARDAP) provides an interface to the Registration Data Access\nProtocol (RDAP).\n\nRDAP is replacing Whois as the preferred way of obtainining information\nabout Internet resources (IP addresses, autonymous system numbers, and\ndomain names). As of writing, RDAP is fully supported by Regional\nInternet Registries (who are responsible for the allocation of IP\naddresses and AS numbers) and generic TLD operators (e.g. .com, .org,\n.xyz) but is still being rolled out among country-code registries.\n\n[Net::RDAP](https://metacpan.org/pod/Net%3A%3ARDAP) does all the hard work of determining the correct\nserver to query ([Net::RDAP::Registry](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3ARegistry) is an interface to the\nIANA registry of RDAP services), querying the server ([Net::RDAP::UA](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AUA)\nis an RDAP HTTP user agent), and parsing the response\n([Net::RDAP::Object](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AObject) and its submodules provide access to the data\nreturned by the server). As such, it provides a single unified\ninterface to information about all unique Internet identifiers.\n\nIf you want a command-line RDAP client, see [App::rdapper](https://metacpan.org/pod/App%3A%3Ardapper).\n\n# METHODS\n\n## Constructor\n\n    $rdap = Net::RDAP-\u003enew(%OPTIONS);\n\nConstructor method, returns a new object. `%OPTIONS` is optional, but\nmay contain any of the following options:\n\n- `use_cache` - if set to a true value, copies of RDAP responses are\nstored on disk, and are updated if the copy on the server is more up-to-date.\nThis behaviour is disabled by default and must be explicitly enabled.\n**Note:** this setting controls whether [Net::RDAP](https://metacpan.org/pod/Net%3A%3ARDAP) caches RDAP records;\nit doesn't control caching of IANA registries by [Net::RDAP::Registry](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3ARegistry)\nand [Net::RDAP::Values](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AValues).\n- `cache_ttl` - if set, specifies how long after a record has\nbeen cached before [Net::RDAP](https://metacpan.org/pod/Net%3A%3ARDAP) asks the server for any update. By\ndefault this is one hour (3600 seconds).\n\n## Domain Lookup\n\n    $object = $rdap-\u003edomain($domain);\n\nThis method returns a [Net::RDAP::Object::Domain](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AObject%3A%3ADomain) object containing\ninformation about the domain name referenced by `$domain`.\n\n`$domain` must be either a string or a [Net::DNS::Domain](https://metacpan.org/pod/Net%3A%3ADNS%3A%3ADomain) object containing a\nfully-qualified domain name. The domain may be either a \"forward\" domain\n(such as `example.com`) or a \"reverse\" domain (such as `168.192.in-addr.arpa`).\n\nIf there was an error, this method will return a [Net::RDAP::Error](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AError).\n\n### Note on Internationalised Domain Names (IDNs)\n\nDomain names which contain characters other than those from the ASCII-compatible\nrange must be encoded into \"A-label\" (or \"Punycode\") format before being passed\nto [Net::DNS::Domain](https://metacpan.org/pod/Net%3A%3ADNS%3A%3ADomain). You can use [Net::LibIDN](https://metacpan.org/pod/Net%3A%3ALibIDN) or [Net::LibIDN2](https://metacpan.org/pod/Net%3A%3ALibIDN2) to\nperform this encoding:\n\n    use Net::LibIDN;\n\n    my $name = \"espécime.com\";\n\n    my $domain = $rdap-\u003edomain(idn_to_ascii($name, 'UTF-8'));\n\n## IP Lookup\n\n    $object = $rdap-\u003eip($ip);\n\nThis method returns a [Net::RDAP::Object::IPNetwork](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AObject%3A%3AIPNetwork) object containing\ninformation about the resource referenced by `$ip`.\n\n`$ip` must be either a string or a [Net::IP](https://metacpan.org/pod/Net%3A%3AIP) object, and can represent any\nof the following:\n\n- An IPv4 address (e.g. `192.168.0.1`);\n- An IPv4 CIDR range (e.g. `192.168.0.1/16`);\n- An IPv6 address (e.g. `2001:DB8::42:1`);\n- An IPv6 CIDR range (e.g. `2001:DB8::/32`).\n\nIf there was an error, this method will return a [Net::RDAP::Error](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AError).\n\n## AS Number Lookup\n\n    $object = $rdap-\u003eautnum($autnum);\n\nThis method returns a [Net::RDAP::Object::Autnum](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AObject%3A%3AAutnum) object containing\ninformation about the autonymous system referenced by `$autnum`.\n\n`$autnum` must be a a literal integer AS number or a [Net::ASN](https://metacpan.org/pod/Net%3A%3AASN) object.\n\nIf there was an error, this method will return a [Net::RDAP::Error](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AError).\n\n## Entity Lookup\n\n    $entity = $rdap-\u003eentity($handle);\n\nThis method returns a [Net::RDAP::Object::Entity](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AObject%3A%3AEntity) object containing\ninformation about the entity referenced by `$handle`, which must be\na string containing a \"tagged\" handle, such as `ABC123-EXAMPLE`, as\nper [RFC 8521](https://www.rfc-editor.org/rfc/rfc8521.html).\n\n## Determining object existence\n\n    $exists = $rdap-\u003eexists($object);\n\nThis method returns a boolean indicating whether `$object` (which\nmust be a [Net::DNS::Domain](https://metacpan.org/pod/Net%3A%3ADNS%3A%3ADomain), [Net::IP](https://metacpan.org/pod/Net%3A%3AIP) or [Net::ASN](https://metacpan.org/pod/Net%3A%3AASN)) exists. This\nis determined by performing an HTTP `HEAD` request and inspecting the\nresulting HTTP status code.\n\n**Note**: the non-existence of an object does not indicate whether that\nobject is available for registration.\n\nIf there was an error, or no RDAP server is available for the specified\nobject, this method will return a [Net::RDAP::Error](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AError).\n\n## Directly Fetching Known Resources\n\n    $object = $rdap-\u003efetch($thing, %OPTIONS);\n\nThis method retrieves the resource identified by `$thing`, which must\nbe either a [URI](https://metacpan.org/pod/URI) or [Net::RDAP::Link](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3ALink) object, and returns a\n[Net::RDAP::Object](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AObject) object (assuming that the server returns a valid\nRDAP response). This method is used internally by [Net::RDAP](https://metacpan.org/pod/Net%3A%3ARDAP) but is\nalso available for when you want to directly fetch a resource without\nusing the IANA registry.\n\n`%OPTIONS` is an optional hash containing additional options for\nthe query. The following options are supported:\n\n- `user` and `pass`: if provided, they will be sent to the\nserver in an HTTP Basic Authorization header field.\n- `class_override`: allows you to set or override the\n`objectClassName` property in RDAP responses.\n\n## Performing Searches\n\n    my $svc = Net::RDAP::Service-\u003enew('https://www.example.com/rdap');\n\n    # $result is a Net::RDAP::SearchResult\n    my $result = $svc-\u003edomains('name' =\u003e 'ex*mple.com');\n\nRDAP supports a limited search capability, but you need to know in advance which\nRDAP server you want to send the search query to.\n\nThe [Net::RDAP::Service](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AService) class allows you to prepare and submit search queries\nto specific RDAP servers. For more information, please see the documentation for\nthat module.\n\n## RDAP User Agent\n\n    # access the user agent\n    $ua = $rdap-\u003eua;\n\n    # specify a cookie jar\n    $rdap-\u003eua-\u003ecookie_jar('/tmp/cookies.txt');\n\n    # specify a proxy\n    $rdap-\u003eua-\u003eproxy([qw(http https)], 'https://proxy.example.com');\n\nYou can access the [Net::RDAP::UA](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AUA) object used to communicate with RDAP\nservers using the `ua()` method. This allows you to configure additional\nHTTP features such as a file to store cookies, proxies, custom user-agent\nstrings, etc.\n\n# HOW TO CONTRIBUTE\n\n[Net::RDAP](https://metacpan.org/pod/Net%3A%3ARDAP) is a work-in-progress; if you would like to help, the\nproject is hosted here:\n\n- [https://github.com/gbxyz/perl-net-rdap](https://github.com/gbxyz/perl-net-rdap)\n\n# DISTRIBUTION\n\nThe [Net::RDAP](https://metacpan.org/pod/Net%3A%3ARDAP) CPAN distribution contains a large number of\nRDAP-related modules that all work together. They are:\n\n- [Net::RDAP::Base](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3ABase)\n    - [Net::RDAP::Event](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AEvent)\n    - [Net::RDAP::ID](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AID)\n    - [Net::RDAP::Object](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AObject)\n        - [Net::RDAP::Error](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AError)\n        - [Net::RDAP::Help](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AHelp)\n        - [Net::RDAP::Object::Autnum](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AObject%3A%3AAutnum)\n        - [Net::RDAP::Object::Domain](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AObject%3A%3ADomain)\n        - [Net::RDAP::Object::Entity](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AObject%3A%3AEntity)\n        - [Net::RDAP::Object::IPNetwork](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AObject%3A%3AIPNetwork)\n        - [Net::RDAP::Object::Nameserver](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AObject%3A%3ANameserver)\n        - [Net::RDAP::SearchResult](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3ASearchResult)\n    - [Net::RDAP::Remark](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3ARemark)\n        - [Net::RDAP::Notice](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3ANotice)\n- [Net::RDAP::EPPStatusMap](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AEPPStatusMap)\n- [Net::RDAP::JCard](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AJCard)\n    - [Net::RDAP::JCard::Property](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AJCard%3A%3AProperty)\n    - [Net::RDAP::JCard::Address](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AJCard%3A%3AAddress)\n- [Net::RDAP::Registry](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3ARegistry)\n- [Net::RDAP::Registry::IANARegistry](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3ARegistry%3A%3AIANARegistry)\n- [Net::RDAP::Registry::IANARegistry::Service](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3ARegistry%3A%3AIANARegistry%3A%3AService)\n- [Net::RDAP::Service](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AService)\n- [Net::RDAP::Link](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3ALink)\n- [Net::RDAP::UA](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AUA)\n- [Net::RDAP::Values](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AValues)\n- [Net::RDAP::Variant](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AVariant)\n- [Net::RDAP::VariantName](https://metacpan.org/pod/Net%3A%3ARDAP%3A%3AVariantName)\n\n# REFERENCES\n\n- [https://tools.ietf.org/html/rfc7480](https://tools.ietf.org/html/rfc7480) - HTTP Usage in the Registration\nData Access Protocol (RDAP)\n- [https://tools.ietf.org/html/rfc7481](https://tools.ietf.org/html/rfc7481) - Security Services for the\nRegistration Data Access Protocol (RDAP)\n- [https://tools.ietf.org/html/rfc9082](https://tools.ietf.org/html/rfc9082) - Registration Data Access\nProtocol (RDAP) Query Format\n- [https://tools.ietf.org/html/rfc9083](https://tools.ietf.org/html/rfc9083) - JSON Responses for the\nRegistration Data Access Protocol (RDAP)\n- [https://tools.ietf.org/html/rfc9224](https://tools.ietf.org/html/rfc9224) - Finding the Authoritative\nRegistration Data (RDAP) Service\n- [https://tools.ietf.org/html/rfc8056](https://tools.ietf.org/html/rfc8056) - Extensible Provisioning\nProtocol (EPP) and Registration Data Access Protocol (RDAP) Status Mapping\n- [https://tools.ietf.org/html/rfc8288](https://tools.ietf.org/html/rfc8288) -  Web Linking\n- [https://tools.ietf.org/html/rfc8521](https://tools.ietf.org/html/rfc8521) -  Registration Data Access\nProtocol (RDAP) Object Tagging\n- [https://tools.ietf.org/html/rfc9536](https://tools.ietf.org/html/rfc9536) -  Registration Data Access\nProtocol (RDAP) Reverse Search\n- [https://tools.ietf.org/html/rfc9537](https://tools.ietf.org/html/rfc9537) -  Redacted Fields in the\nRegistration Data Access Protocol (RDAP) Response\n\n# COPYRIGHT\n\nCopyright 2018-2023 CentralNic Ltd, 2024-2025 Gavin Brown. For licensing information,\nplease see the `LICENSE` file in the [Net::RDAP](https://metacpan.org/pod/Net%3A%3ARDAP) distribution.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgbxyz%2Fperl-net-rdap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgbxyz%2Fperl-net-rdap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgbxyz%2Fperl-net-rdap/lists"}