domain.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package api
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "net/http"
  7. "strings"
  8. "github.com/porter-dev/porter/internal/models"
  9. )
  10. type CreateDNSRecordRequest struct {
  11. ReleaseName string `json:"release_name"`
  12. }
  13. // CreateDNSRecordResponse is the DNS record that was created
  14. type CreateDNSRecordResponse models.DNSRecordExternal
  15. // CreateGithubAction creates a Github action with basic authentication
  16. func (c *Client) CreateDNSRecord(
  17. ctx context.Context,
  18. projectID, clusterID uint,
  19. createDNS *CreateDNSRecordRequest,
  20. ) (*CreateDNSRecordResponse, error) {
  21. data, err := json.Marshal(createDNS)
  22. if err != nil {
  23. return nil, err
  24. }
  25. req, err := http.NewRequest(
  26. "POST",
  27. fmt.Sprintf(
  28. "%s/projects/%d/k8s/subdomain?cluster_id=%d",
  29. c.BaseURL,
  30. projectID,
  31. clusterID,
  32. ),
  33. strings.NewReader(string(data)),
  34. )
  35. if err != nil {
  36. return nil, err
  37. }
  38. req = req.WithContext(ctx)
  39. res := &CreateDNSRecordResponse{}
  40. if httpErr, err := c.sendRequest(req, res, true); httpErr != nil || err != nil {
  41. if httpErr != nil {
  42. return nil, fmt.Errorf("code %d, errors %v", httpErr.Code, httpErr.Errors)
  43. }
  44. return nil, err
  45. }
  46. return res, nil
  47. }