api/client.go (70 lines of code) (raw):
package api
import (
"unicode/utf8"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
"github.com/aliyun/credentials-go/credentials"
paifeaturestore "github.com/alibabacloud-go/paifeaturestore-20230621/v4/client"
)
var (
/*
*
defaultHttpClient = &http.Client{
Transport: &http.Transport{
DialContext: (&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
}).DialContext,
MaxIdleConns: 100,
MaxIdleConnsPerHost: 100,
MaxConnsPerHost: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
},
}
*
*/
)
// APIClient manages communication with the Pairec Experiment Restful Api API v1.0.0
// In most cases there should be only one, shared, APIClient.
type APIClient struct {
*paifeaturestore.Client
cfg *Configuration
common service // Reuse a single struct instead of allocating one for each service on the heap.
instanceId string
// API Services
FsProjectApi *FsProjectApiService
InstanceApi *InstanceApiService
DatasourceApi *DatasourceApiService
FeatureEntityApi *FeatureEntityApiService
FeatureViewApi *FeatureViewApiService
FsModelApi *FsModelApiService
}
type service struct {
client *APIClient
}
// NewAPIClient creates a new API client. Requires a userAgent string describing your application.
// optionally a custom http.Client to allow for advanced features such as caching.
func NewAPIClient(cfg *Configuration) (*APIClient, error) {
c := &APIClient{
cfg: cfg,
}
endpoint := cfg.GetDomain()
config := &openapi.Config{
AccessKeyId: &cfg.AccessKeyId,
AccessKeySecret: &cfg.AccessKeySecret,
Endpoint: &endpoint,
}
if cfg.Token != "" {
config.SecurityToken = &cfg.Token
}
var (
client *paifeaturestore.Client
err error
)
if cfg.AccessKeyId == "" || cfg.AccessKeySecret == "" {
credential, err1 := credentials.NewCredential(nil)
if err1 != nil {
return nil, err1
}
config.Credential = credential
client, err = paifeaturestore.NewClient(config)
} else {
client, err = paifeaturestore.NewClient(config)
}
if err != nil {
return nil, err
}
c.Client = client
c.common.client = c
// API Services
c.FsProjectApi = (*FsProjectApiService)(&c.common)
c.InstanceApi = (*InstanceApiService)(&c.common)
c.DatasourceApi = (*DatasourceApiService)(&c.common)
c.FeatureEntityApi = (*FeatureEntityApiService)(&c.common)
c.FeatureViewApi = (*FeatureViewApiService)(&c.common)
c.FsModelApi = (*FsModelApiService)(&c.common)
return c, nil
}
func (c *APIClient) GetConfig() *Configuration {
return c.cfg
}
func strlen(s string) int {
return utf8.RuneCountInString(s)
}