forked from TrueCloudLab/lego
vscale: getting sub-domain (#805)
This commit is contained in:
parent
6cb9b249d2
commit
7f6b708439
1 changed files with 13 additions and 3 deletions
|
@ -6,6 +6,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Domain represents domain name.
|
// Domain represents domain name.
|
||||||
|
@ -65,7 +66,9 @@ func NewClient(opts ClientOpts) *Client {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetDomainByName gets Domain object by its name.
|
// GetDomainByName gets Domain object by its name. If `domainName` level > 2 and there is
|
||||||
|
// no such domain on the account - it'll recursively search for the first
|
||||||
|
// which is exists in Vscale Domains API.
|
||||||
func (c *Client) GetDomainByName(domainName string) (*Domain, error) {
|
func (c *Client) GetDomainByName(domainName string) (*Domain, error) {
|
||||||
uri := fmt.Sprintf("/%s", domainName)
|
uri := fmt.Sprintf("/%s", domainName)
|
||||||
req, err := c.newRequest(http.MethodGet, uri, nil)
|
req, err := c.newRequest(http.MethodGet, uri, nil)
|
||||||
|
@ -74,10 +77,17 @@ func (c *Client) GetDomainByName(domainName string) (*Domain, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
domain := &Domain{}
|
domain := &Domain{}
|
||||||
_, err = c.do(req, domain)
|
resp, err := c.do(req, domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
switch {
|
||||||
|
case resp.StatusCode == http.StatusNotFound && strings.Count(domainName, ".") > 1:
|
||||||
|
// Look up for the next sub domain
|
||||||
|
subIndex := strings.Index(domainName, ".")
|
||||||
|
return c.GetDomainByName(domainName[subIndex+1:])
|
||||||
|
default:
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return domain, nil
|
return domain, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue