From 779a2ee67209b2d69ccf584f2228ad3594814243 Mon Sep 17 00:00:00 2001 From: James Houlahan Date: Tue, 13 Dec 2022 01:20:31 +0100 Subject: [PATCH] feat(GODT-2181): Implement GetDomains --- manager_domains.go | 15 +++++++++++++++ server/domains.go | 15 +++++++++++++++ server/router.go | 5 +++++ server/server_test.go | 8 ++++++++ 4 files changed, 43 insertions(+) create mode 100644 manager_domains.go create mode 100644 server/domains.go diff --git a/manager_domains.go b/manager_domains.go new file mode 100644 index 0000000..19d921a --- /dev/null +++ b/manager_domains.go @@ -0,0 +1,15 @@ +package proton + +import "context" + +func (m *Manager) GetDomains(ctx context.Context) ([]string, error) { + var res struct { + Domains []string + } + + if _, err := m.r(ctx).SetResult(&res).Get("/core/v4/domains/available"); err != nil { + return nil, err + } + + return res.Domains, nil +} diff --git a/server/domains.go b/server/domains.go new file mode 100644 index 0000000..9280e3e --- /dev/null +++ b/server/domains.go @@ -0,0 +1,15 @@ +package server + +import ( + "net/http" + + "github.com/gin-gonic/gin" +) + +func (s *Server) handleGetDomainsAvailable() gin.HandlerFunc { + return func(c *gin.Context) { + c.JSON(http.StatusOK, gin.H{ + "Domains": []string{s.domain}, + }) + } +} diff --git a/server/router.go b/server/router.go index 9a37746..c83cadb 100644 --- a/server/router.go +++ b/server/router.go @@ -30,6 +30,11 @@ func initRouter(s *Server) { auth.POST("/refresh", s.handlePostAuthRefresh()) } + // Domains routes don't need authentication. + if domains := core.Group("/domains"); domains != nil { + domains.GET("/available", s.handleGetDomainsAvailable()) + } + // Reporting a bug is also possible without authentication. if reports := core.Group("/reports"); reports != nil { reports.POST("/bug", s.handlePostReportBug()) diff --git a/server/server_test.go b/server/server_test.go index 5d05495..237eca3 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -1662,6 +1662,14 @@ func TestServer_AddressOrder(t *testing.T) { }) } +func TestServer_Domains(t *testing.T) { + withServer(t, func(ctx context.Context, s *Server, m *proton.Manager) { + domains, err := m.GetDomains(ctx) + require.NoError(t, err) + require.Equal(t, []string{s.GetDomain()}, domains) + }) +} + func withServer(t *testing.T, fn func(ctx context.Context, s *Server, m *proton.Manager), opts ...Option) { ctx, cancel := context.WithCancel(context.Background()) defer cancel()