Skip to content

Commit 0e15caa

Browse files
committed
add GetApiHostnameURL to client
1 parent b8bc8c9 commit 0e15caa

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

client.go

+19-11
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ const DEFAULT_PAGE_LENGTH = 10
2525
const DEFAULT_MAX_DEPTH = 1
2626
const DEFAULT_BITBUCKET_API_BASE_URL = "https://api.bitbucket.org/2.0"
2727

28-
func apiBaseUrl() string {
28+
func apiBaseUrl() (*url.URL, error) {
2929
ev := os.Getenv("BITBUCKET_API_BASE_URL")
30-
if ev != "" {
31-
return ev
30+
if ev == "" {
31+
ev = DEFAULT_BITBUCKET_API_BASE_URL
3232
}
3333

34-
return DEFAULT_BITBUCKET_API_BASE_URL
34+
return url.Parse(ev)
3535
}
3636

3737
type Client struct {
@@ -43,7 +43,7 @@ type Client struct {
4343
Workspaces *Workspace
4444
Pagelen uint64
4545
MaxDepth uint64
46-
apiBaseURL string
46+
apiBaseURL *url.URL
4747

4848
HttpClient *http.Client
4949
}
@@ -135,7 +135,11 @@ func NewBasicAuth(u, p string) *Client {
135135
}
136136

137137
func injectClient(a *auth) *Client {
138-
c := &Client{Auth: a, Pagelen: DEFAULT_PAGE_LENGTH, MaxDepth: DEFAULT_MAX_DEPTH, apiBaseURL: apiBaseUrl()}
138+
bitbucketUrl, err := apiBaseUrl()
139+
if err != nil {
140+
log.Fatalf("invalid bitbucket url")
141+
}
142+
c := &Client{Auth: a, Pagelen: DEFAULT_PAGE_LENGTH, MaxDepth: DEFAULT_MAX_DEPTH, apiBaseURL: bitbucketUrl}
139143
c.Repositories = &Repositories{
140144
c: c,
141145
PullRequests: &PullRequests{c: c},
@@ -156,11 +160,15 @@ func injectClient(a *auth) *Client {
156160
}
157161

158162
func (c *Client) GetApiBaseURL() string {
159-
return c.apiBaseURL
163+
return fmt.Sprintf("%s%s", c.apiBaseURL.GetApiHostnameURL(), c.apiBaseURL.Path)
164+
}
165+
166+
func (c *Client) GetApiHostnameURL() string {
167+
return fmt.Sprintf("%s://%s", c.apiBaseURL.Scheme, c.apiBaseURL.Host)
160168
}
161169

162-
func (c *Client) SetApiBaseURL(urlStr string) {
163-
c.apiBaseURL = urlStr
170+
func (c *Client) SetApiBaseURL(urlStr url.URL) {
171+
c.apiBaseURL = &urlStr
164172
}
165173

166174
func (c *Client) executeRaw(method string, urlStr string, text string) (io.ReadCloser, error) {
@@ -378,7 +386,7 @@ func unexpectedHttpStatusCode(statusCode int) bool {
378386
func (c *Client) requestUrl(template string, args ...interface{}) string {
379387

380388
if len(args) == 1 && args[0] == "" {
381-
return c.apiBaseURL + template
389+
return c.GetApiBaseURL() + template
382390
}
383-
return c.apiBaseURL + fmt.Sprintf(template, args...)
391+
return c.GetApiBaseURL() + fmt.Sprintf(template, args...)
384392
}

0 commit comments

Comments
 (0)