Skip to content

Commit 76b63cd

Browse files
authored
feat: adds check_domain_availability endpoint (#17)
1 parent b80dee7 commit 76b63cd

2 files changed

Lines changed: 53 additions & 2 deletions

File tree

hostingde/domain/domain.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
from typing import Optional, List
1+
from typing import Optional, List, Union
22

3+
from hostingde.domain.requests.check_availability import CheckAvailabilityRequest, CheckAvailabilityResponse
34
from hostingde.domain.requests.register_domain import RegisterDomainRequest
45
from hostingde.paginator import HostingDePaginator
56
from hostingde.hostingde import HostingDeCore
@@ -49,6 +50,21 @@ def jobs_find(
4950

5051
return self._iter(uri, Job, filter, limit, sort)
5152

53+
def check_domain_name_availability(self, domain_names: Union[str, List[str]]) -> List[CheckAvailabilityResponse]:
54+
uri = self.build_uri('domainStatus')
55+
56+
if type(domain_names) == str:
57+
domain_names = [domain_names]
58+
59+
response = self._request(
60+
uri,
61+
CheckAvailabilityRequest(domain_names=domain_names)
62+
)
63+
64+
data = response.json().get('responses', [])
65+
66+
return list(map(lambda x: self._instance(CheckAvailabilityResponse, x), data))
67+
5268
def list_domains(
5369
self,
5470
limit: Optional[int] = None,
@@ -129,4 +145,4 @@ def register_domain(
129145
if not asynchronous and domain.id is not None:
130146
JobWaiter(self, domain.id, 'domainCreate').wait()
131147

132-
return domain
148+
return domain
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from dataclasses import dataclass
2+
from enum import Enum
3+
from typing import List, Optional
4+
5+
from marshmallow_enum import EnumField
6+
7+
from hostingde.model import Model
8+
9+
10+
class CheckAvailabilityStatus(Enum):
11+
alreadyRegistered = 'alreadyRegistered'
12+
registered = 'registered'
13+
nameContainsForbiddenCharacter = 'nameContainsForbiddenCharacter'
14+
available = 'available'
15+
suffixDoesNotExist = 'suffixDoesNotExist'
16+
suffixCannotBeRegistered = 'suffixCannotBeRegistered'
17+
canNotCheck = 'canNotCheck'
18+
unknown = 'unknown'
19+
20+
21+
@dataclass
22+
class CheckAvailabilityRequest(Model):
23+
domain_names: List[str]
24+
25+
26+
@dataclass
27+
class CheckAvailabilityResponse(Model):
28+
def __init__(self, **kwargs):
29+
super().__init__(**kwargs)
30+
31+
domain_name: str
32+
domain_name_unicode: str
33+
domain_suffix: str
34+
transfer_method: Optional[str]
35+
status: CheckAvailabilityStatus = EnumField(CheckAvailabilityStatus)

0 commit comments

Comments
 (0)