diff --git a/ai/client.go b/ai/client.go index 586cd497..100cde8a 100644 --- a/ai/client.go +++ b/ai/client.go @@ -33,18 +33,18 @@ type Config struct { Region string Environment string OrganizationID string `Validate:"required"` - AnalyzeURL string + BaseURL string Service string `Validate:"required"` DebugLog string Retry int } -// A Client manages communication with HSDP AI Analyze API +// A Client manages communication with HSDP AI APIs type Client struct { // HTTP Client used to communicate with IAM API - iamClient *iam.Client - config *Config - analyzeURL *url.URL + iamClient *iam.Client + config *Config + baseURL *url.URL // User agent used when communicating with the HSDP Notification API UserAgent string @@ -65,7 +65,7 @@ func NewClient(iamClient *iam.Client, config *Config) (*Client, error) { doAutoconf(config) c := &Client{iamClient: iamClient, config: config, UserAgent: userAgent, validate: validator.New()} - if err := c.SetAnalyzeURL(config.AnalyzeURL); err != nil { + if err := c.SetBaseURL(config.BaseURL); err != nil { return nil, err } @@ -81,9 +81,9 @@ func doAutoconf(config *Config) { autoconf.WithRegion(config.Region), autoconf.WithEnv(config.Environment)) if err == nil { - analyzeService := c.Service(config.Service) - if analyzeService.URL != "" && config.AnalyzeURL == "" { - config.AnalyzeURL = analyzeService.URL + theService := c.Service(config.Service) + if theService.URL != "" && config.BaseURL == "" { + config.BaseURL = theService.URL } } } @@ -97,64 +97,64 @@ func (c *Client) Close() { } } -// GetAnalyzeURL returns the base CDL Store base URL as configured -func (c *Client) GetAnalyzeURL() string { - if c.analyzeURL == nil { +// GetBaseURL returns the base URL as configured +func (c *Client) GetBaseURL() string { + if c.baseURL == nil { return "" } - return c.analyzeURL.String() + return c.baseURL.String() } -// SetAnalyzeURL sets the Notification URL for API requests -func (c *Client) SetAnalyzeURL(urlStr string) error { +// SetBaseURL sets the base URL for API requests +func (c *Client) SetBaseURL(urlStr string) error { if urlStr == "" { - return ErrAnalyzeURLCannotBeEmpty + return ErrBaseURLCannotBeEmpty } // Make sure the given URL end with a slash if !strings.HasSuffix(urlStr, "/") { urlStr += "/" } var err error - c.analyzeURL, err = url.Parse(urlStr) + c.baseURL, err = url.Parse(urlStr) return err } // GetEndpointURL returns the FHIR Store Endpoint URL as configured func (c *Client) GetEndpointURL() string { - return c.GetAnalyzeURL() + path.Join("analyze", c.config.Service, c.config.OrganizationID) + return c.GetBaseURL() + path.Join("analyze", c.config.Service, c.config.OrganizationID) } // SetEndpointURL sets the endpoint URL for API requests to a custom endpoint. urlStr // should always be specified with a trailing slash. func (c *Client) SetEndpointURL(urlStr string) error { if urlStr == "" { - return ErrAnalyzeURLCannotBeEmpty + return ErrBaseURLCannotBeEmpty } // Make sure the given URL ends with a slash if !strings.HasSuffix(urlStr, "/") { urlStr += "/" } var err error - c.analyzeURL, err = url.Parse(urlStr) + c.baseURL, err = url.Parse(urlStr) if err != nil { return err } - parts := strings.Split(c.analyzeURL.Path, "/") + parts := strings.Split(c.baseURL.Path, "/") if len(parts) == 0 { - return ErrAnalyzeURLCannotBeEmpty + return ErrBaseURLCannotBeEmpty } if len(parts) < 5 { return ErrInvalidEndpointURL } c.config.OrganizationID = parts[len(parts)-2] - c.analyzeURL.Path = "/" + c.baseURL.Path = "/" return nil } func (c *Client) NewAIRequest(method, requestPath string, opt interface{}, options ...OptionFunc) (*http.Request, error) { - u := *c.analyzeURL + u := *c.baseURL // Set the encoded opaque data - u.Opaque = path.Join(c.analyzeURL.Path, "analyze", c.config.Service, c.config.OrganizationID, requestPath) + u.Opaque = path.Join(c.baseURL.Path, "analyze", c.config.Service, c.config.OrganizationID, requestPath) if opt != nil { q, err := query.Values(opt) diff --git a/ai/client_test.go b/ai/client_test.go index dd6499b8..40ff83a9 100644 --- a/ai/client_test.go +++ b/ai/client_test.go @@ -130,7 +130,7 @@ func setup(t *testing.T) func() { assert.Nil(t, err) aiClient, err = ai.NewClient(iamClient, &ai.Config{ - AnalyzeURL: serverAI.URL, + BaseURL: serverAI.URL, OrganizationID: aiTenantID, Service: "inference", }) @@ -169,7 +169,7 @@ func TestDebug(t *testing.T) { } aiClient, err = ai.NewClient(iamClient, &ai.Config{ - AnalyzeURL: serverAI.URL, + BaseURL: serverAI.URL, DebugLog: tempFile.Name(), Service: "inference", OrganizationID: "xxx", diff --git a/ai/errors.go b/ai/errors.go index 6ac2e45b..7f40361a 100644 --- a/ai/errors.go +++ b/ai/errors.go @@ -6,7 +6,7 @@ import ( // Errors var ( - ErrAnalyzeURLCannotBeEmpty = errors.New("base Inference URL cannot be empty") - ErrEmptyResult = errors.New("empty result") - ErrInvalidEndpointURL = errors.New("invalid endpoint URL") + ErrBaseURLCannotBeEmpty = errors.New("base URL cannot be empty") + ErrEmptyResult = errors.New("empty result") + ErrInvalidEndpointURL = errors.New("invalid endpoint URL") ) diff --git a/ai/inference/client_test.go b/ai/inference/client_test.go index 3704b0c3..1f23f2a5 100644 --- a/ai/inference/client_test.go +++ b/ai/inference/client_test.go @@ -132,7 +132,7 @@ func setup(t *testing.T) func() { assert.Nil(t, err) inferenceClient, err = inference.NewClient(iamClient, &ai.Config{ - AnalyzeURL: serverInference.URL, + BaseURL: serverInference.URL, OrganizationID: inferenceTenantID, }) if !assert.Nilf(t, err, "failed to create notificationClient: %v", err) { @@ -204,7 +204,7 @@ func TestDebug(t *testing.T) { } inferenceClient, err = inference.NewClient(iamClient, &ai.Config{ - AnalyzeURL: serverInference.URL, + BaseURL: serverInference.URL, DebugLog: tempFile.Name(), OrganizationID: "xxx", }) diff --git a/ai/training/client_test.go b/ai/training/client_test.go index 8739eef4..6816bbf1 100644 --- a/ai/training/client_test.go +++ b/ai/training/client_test.go @@ -132,7 +132,7 @@ func setup(t *testing.T) func() { assert.Nil(t, err) trainingClient, err = training.NewClient(iamClient, &ai.Config{ - AnalyzeURL: serverTraining.URL, + BaseURL: serverTraining.URL, OrganizationID: trainingTenantID, }) if !assert.Nilf(t, err, "failed to create notificationClient: %v", err) { @@ -204,7 +204,7 @@ func TestDebug(t *testing.T) { } trainingClient, err = training.NewClient(iamClient, &ai.Config{ - AnalyzeURL: serverTraining.URL, + BaseURL: serverTraining.URL, DebugLog: tmpfile.Name(), OrganizationID: "xxx", }) diff --git a/ai/workspace/client_test.go b/ai/workspace/client_test.go index f09e3c40..73f5411f 100644 --- a/ai/workspace/client_test.go +++ b/ai/workspace/client_test.go @@ -132,7 +132,7 @@ func setup(t *testing.T) func() { assert.Nil(t, err) workspaceClient, err = workspace.NewClient(iamClient, &ai.Config{ - AnalyzeURL: serverWorkspace.URL, + BaseURL: serverWorkspace.URL, OrganizationID: workspaceTenantID, }) if !assert.Nilf(t, err, "failed to create notificationClient: %v", err) { @@ -203,7 +203,7 @@ func TestDebug(t *testing.T) { } workspaceClient, err = workspace.NewClient(iamClient, &ai.Config{ - AnalyzeURL: serverWorkspace.URL, + BaseURL: serverWorkspace.URL, DebugLog: tmpfile.Name(), OrganizationID: "xxx", })