Skip to content

Commit 919703a

Browse files
feat(container): add support for domain (#1037)
Co-authored-by: Rémy Léone <[email protected]>
1 parent db7d403 commit 919703a

File tree

1 file changed

+286
-0
lines changed

1 file changed

+286
-0
lines changed

api/container/v1beta1/container_sdk.go

Lines changed: 286 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,46 @@ func (enum *CronStatus) UnmarshalJSON(data []byte) error {
205205
return nil
206206
}
207207

208+
type DomainStatus string
209+
210+
const (
211+
// DomainStatusUnknown is [insert doc].
212+
DomainStatusUnknown = DomainStatus("unknown")
213+
// DomainStatusReady is [insert doc].
214+
DomainStatusReady = DomainStatus("ready")
215+
// DomainStatusDeleting is [insert doc].
216+
DomainStatusDeleting = DomainStatus("deleting")
217+
// DomainStatusError is [insert doc].
218+
DomainStatusError = DomainStatus("error")
219+
// DomainStatusCreating is [insert doc].
220+
DomainStatusCreating = DomainStatus("creating")
221+
// DomainStatusPending is [insert doc].
222+
DomainStatusPending = DomainStatus("pending")
223+
)
224+
225+
func (enum DomainStatus) String() string {
226+
if enum == "" {
227+
// return default value if empty
228+
return "unknown"
229+
}
230+
return string(enum)
231+
}
232+
233+
func (enum DomainStatus) MarshalJSON() ([]byte, error) {
234+
return []byte(fmt.Sprintf(`"%s"`, enum)), nil
235+
}
236+
237+
func (enum *DomainStatus) UnmarshalJSON(data []byte) error {
238+
tmp := ""
239+
240+
if err := json.Unmarshal(data, &tmp); err != nil {
241+
return err
242+
}
243+
244+
*enum = DomainStatus(DomainStatus(tmp).String())
245+
return nil
246+
}
247+
208248
type ListContainersRequestOrderBy string
209249

210250
const (
@@ -273,6 +313,42 @@ func (enum *ListCronsRequestOrderBy) UnmarshalJSON(data []byte) error {
273313
return nil
274314
}
275315

316+
type ListDomainsRequestOrderBy string
317+
318+
const (
319+
// ListDomainsRequestOrderByCreatedAtAsc is [insert doc].
320+
ListDomainsRequestOrderByCreatedAtAsc = ListDomainsRequestOrderBy("created_at_asc")
321+
// ListDomainsRequestOrderByCreatedAtDesc is [insert doc].
322+
ListDomainsRequestOrderByCreatedAtDesc = ListDomainsRequestOrderBy("created_at_desc")
323+
// ListDomainsRequestOrderByHostnameAsc is [insert doc].
324+
ListDomainsRequestOrderByHostnameAsc = ListDomainsRequestOrderBy("hostname_asc")
325+
// ListDomainsRequestOrderByHostnameDesc is [insert doc].
326+
ListDomainsRequestOrderByHostnameDesc = ListDomainsRequestOrderBy("hostname_desc")
327+
)
328+
329+
func (enum ListDomainsRequestOrderBy) String() string {
330+
if enum == "" {
331+
// return default value if empty
332+
return "created_at_asc"
333+
}
334+
return string(enum)
335+
}
336+
337+
func (enum ListDomainsRequestOrderBy) MarshalJSON() ([]byte, error) {
338+
return []byte(fmt.Sprintf(`"%s"`, enum)), nil
339+
}
340+
341+
func (enum *ListDomainsRequestOrderBy) UnmarshalJSON(data []byte) error {
342+
tmp := ""
343+
344+
if err := json.Unmarshal(data, &tmp); err != nil {
345+
return err
346+
}
347+
348+
*enum = ListDomainsRequestOrderBy(ListDomainsRequestOrderBy(tmp).String())
349+
return nil
350+
}
351+
276352
type ListLogsRequestOrderBy string
277353

278354
const (
@@ -475,6 +551,23 @@ type Cron struct {
475551
Status CronStatus `json:"status"`
476552
}
477553

554+
// Domain: domain
555+
type Domain struct {
556+
ID string `json:"id"`
557+
558+
Hostname string `json:"hostname"`
559+
560+
ContainerID string `json:"container_id"`
561+
562+
URL string `json:"url"`
563+
// Status:
564+
//
565+
// Default value: unknown
566+
Status DomainStatus `json:"status"`
567+
568+
ErrorMessage *string `json:"error_message"`
569+
}
570+
478571
// ListContainersResponse: list containers response
479572
type ListContainersResponse struct {
480573
Containers []*Container `json:"containers"`
@@ -489,6 +582,13 @@ type ListCronsResponse struct {
489582
TotalCount uint32 `json:"total_count"`
490583
}
491584

585+
// ListDomainsResponse: list domains response
586+
type ListDomainsResponse struct {
587+
Domains []*Domain `json:"domains"`
588+
589+
TotalCount uint32 `json:"total_count"`
590+
}
591+
492592
// ListLogsResponse: list logs response
493593
type ListLogsResponse struct {
494594
Logs []*Log `json:"logs"`
@@ -1411,6 +1511,173 @@ func (s *API) ListLogs(req *ListLogsRequest, opts ...scw.RequestOption) (*ListLo
14111511
return &resp, nil
14121512
}
14131513

1514+
type ListDomainsRequest struct {
1515+
Region scw.Region `json:"-"`
1516+
1517+
Page *int32 `json:"-"`
1518+
1519+
PageSize *uint32 `json:"-"`
1520+
// OrderBy:
1521+
//
1522+
// Default value: created_at_asc
1523+
OrderBy ListDomainsRequestOrderBy `json:"-"`
1524+
1525+
ContainerID string `json:"-"`
1526+
}
1527+
1528+
func (s *API) ListDomains(req *ListDomainsRequest, opts ...scw.RequestOption) (*ListDomainsResponse, error) {
1529+
var err error
1530+
1531+
if req.Region == "" {
1532+
defaultRegion, _ := s.client.GetDefaultRegion()
1533+
req.Region = defaultRegion
1534+
}
1535+
1536+
defaultPageSize, exist := s.client.GetDefaultPageSize()
1537+
if (req.PageSize == nil || *req.PageSize == 0) && exist {
1538+
req.PageSize = &defaultPageSize
1539+
}
1540+
1541+
query := url.Values{}
1542+
parameter.AddToQuery(query, "page", req.Page)
1543+
parameter.AddToQuery(query, "page_size", req.PageSize)
1544+
parameter.AddToQuery(query, "order_by", req.OrderBy)
1545+
parameter.AddToQuery(query, "container_id", req.ContainerID)
1546+
1547+
if fmt.Sprint(req.Region) == "" {
1548+
return nil, errors.New("field Region cannot be empty in request")
1549+
}
1550+
1551+
scwReq := &scw.ScalewayRequest{
1552+
Method: "GET",
1553+
Path: "/containers/v1beta1/regions/" + fmt.Sprint(req.Region) + "/domains",
1554+
Query: query,
1555+
Headers: http.Header{},
1556+
}
1557+
1558+
var resp ListDomainsResponse
1559+
1560+
err = s.client.Do(scwReq, &resp, opts...)
1561+
if err != nil {
1562+
return nil, err
1563+
}
1564+
return &resp, nil
1565+
}
1566+
1567+
type GetDomainRequest struct {
1568+
Region scw.Region `json:"-"`
1569+
1570+
DomainID string `json:"-"`
1571+
}
1572+
1573+
func (s *API) GetDomain(req *GetDomainRequest, opts ...scw.RequestOption) (*Domain, error) {
1574+
var err error
1575+
1576+
if req.Region == "" {
1577+
defaultRegion, _ := s.client.GetDefaultRegion()
1578+
req.Region = defaultRegion
1579+
}
1580+
1581+
if fmt.Sprint(req.Region) == "" {
1582+
return nil, errors.New("field Region cannot be empty in request")
1583+
}
1584+
1585+
if fmt.Sprint(req.DomainID) == "" {
1586+
return nil, errors.New("field DomainID cannot be empty in request")
1587+
}
1588+
1589+
scwReq := &scw.ScalewayRequest{
1590+
Method: "GET",
1591+
Path: "/containers/v1beta1/regions/" + fmt.Sprint(req.Region) + "/domains/" + fmt.Sprint(req.DomainID) + "",
1592+
Headers: http.Header{},
1593+
}
1594+
1595+
var resp Domain
1596+
1597+
err = s.client.Do(scwReq, &resp, opts...)
1598+
if err != nil {
1599+
return nil, err
1600+
}
1601+
return &resp, nil
1602+
}
1603+
1604+
type CreateDomainRequest struct {
1605+
Region scw.Region `json:"-"`
1606+
1607+
Hostname string `json:"hostname"`
1608+
1609+
ContainerID string `json:"container_id"`
1610+
}
1611+
1612+
func (s *API) CreateDomain(req *CreateDomainRequest, opts ...scw.RequestOption) (*Domain, error) {
1613+
var err error
1614+
1615+
if req.Region == "" {
1616+
defaultRegion, _ := s.client.GetDefaultRegion()
1617+
req.Region = defaultRegion
1618+
}
1619+
1620+
if fmt.Sprint(req.Region) == "" {
1621+
return nil, errors.New("field Region cannot be empty in request")
1622+
}
1623+
1624+
scwReq := &scw.ScalewayRequest{
1625+
Method: "POST",
1626+
Path: "/containers/v1beta1/regions/" + fmt.Sprint(req.Region) + "/domains",
1627+
Headers: http.Header{},
1628+
}
1629+
1630+
err = scwReq.SetBody(req)
1631+
if err != nil {
1632+
return nil, err
1633+
}
1634+
1635+
var resp Domain
1636+
1637+
err = s.client.Do(scwReq, &resp, opts...)
1638+
if err != nil {
1639+
return nil, err
1640+
}
1641+
return &resp, nil
1642+
}
1643+
1644+
type DeleteDomainRequest struct {
1645+
Region scw.Region `json:"-"`
1646+
1647+
DomainID string `json:"-"`
1648+
}
1649+
1650+
func (s *API) DeleteDomain(req *DeleteDomainRequest, opts ...scw.RequestOption) (*Domain, error) {
1651+
var err error
1652+
1653+
if req.Region == "" {
1654+
defaultRegion, _ := s.client.GetDefaultRegion()
1655+
req.Region = defaultRegion
1656+
}
1657+
1658+
if fmt.Sprint(req.Region) == "" {
1659+
return nil, errors.New("field Region cannot be empty in request")
1660+
}
1661+
1662+
if fmt.Sprint(req.DomainID) == "" {
1663+
return nil, errors.New("field DomainID cannot be empty in request")
1664+
}
1665+
1666+
scwReq := &scw.ScalewayRequest{
1667+
Method: "DELETE",
1668+
Path: "/containers/v1beta1/regions/" + fmt.Sprint(req.Region) + "/domains/" + fmt.Sprint(req.DomainID) + "",
1669+
Headers: http.Header{},
1670+
}
1671+
1672+
var resp Domain
1673+
1674+
err = s.client.Do(scwReq, &resp, opts...)
1675+
if err != nil {
1676+
return nil, err
1677+
}
1678+
return &resp, nil
1679+
}
1680+
14141681
type IssueJWTRequest struct {
14151682
Region scw.Region `json:"-"`
14161683

@@ -1529,3 +1796,22 @@ func (r *ListLogsResponse) UnsafeAppend(res interface{}) (uint32, error) {
15291796
r.TotalCount += uint32(len(results.Logs))
15301797
return uint32(len(results.Logs)), nil
15311798
}
1799+
1800+
// UnsafeGetTotalCount should not be used
1801+
// Internal usage only
1802+
func (r *ListDomainsResponse) UnsafeGetTotalCount() uint32 {
1803+
return r.TotalCount
1804+
}
1805+
1806+
// UnsafeAppend should not be used
1807+
// Internal usage only
1808+
func (r *ListDomainsResponse) UnsafeAppend(res interface{}) (uint32, error) {
1809+
results, ok := res.(*ListDomainsResponse)
1810+
if !ok {
1811+
return 0, errors.New("%T type cannot be appended to type %T", res, r)
1812+
}
1813+
1814+
r.Domains = append(r.Domains, results.Domains...)
1815+
r.TotalCount += uint32(len(results.Domains))
1816+
return uint32(len(results.Domains)), nil
1817+
}

0 commit comments

Comments
 (0)