in whisk/client.go [121:192]
func NewClient(httpClient *http.Client, configInput *Config) (*Client, error) {
var config *Config
if configInput == nil {
defaultConfig, err := GetDefaultConfig()
if err != nil {
return nil, err
} else {
config = defaultConfig
}
} else {
config = configInput
}
if httpClient == nil {
httpClient = &http.Client{
Timeout: time.Second * DEFAULT_HTTP_TIMEOUT,
}
}
var err error
var errStr = ""
if len(config.Host) == 0 {
errStr = wski18n.T("Unable to create request URL, because OpenWhisk API host is missing")
} else if config.BaseURL == nil {
config.BaseURL, err = GetUrlBase(config.Host)
if err != nil {
Debug(DbgError, "Unable to create request URL, because the api host %s is invalid: %s\n", config.Host, err)
errStr = wski18n.T("Unable to create request URL, because the api host '{{.host}}' is invalid: {{.err}}",
map[string]interface{}{"host": config.Host, "err": err})
}
}
if len(errStr) != 0 {
werr := MakeWskError(errors.New(errStr), EXIT_CODE_ERR_GENERAL, DISPLAY_MSG, NO_DISPLAY_USAGE)
return nil, werr
}
if len(config.Namespace) == 0 {
config.Namespace = "_"
}
if len(config.Version) == 0 {
config.Version = "v1"
}
if len(config.UserAgent) == 0 {
config.UserAgent = "OpenWhisk-Go-Client " + runtime.GOOS + " " + runtime.GOARCH
}
c := &Client{
client: httpClient,
Config: config,
}
c.Sdks = &SdkService{client: c}
c.Triggers = &TriggerService{client: c}
c.Actions = &ActionService{client: c}
c.Rules = &RuleService{client: c}
c.Activations = &ActivationService{client: c}
c.Packages = &PackageService{client: c}
c.Namespaces = &NamespaceService{client: c}
c.Info = &InfoService{client: c}
c.Apis = &ApiService{client: c}
werr := c.LoadX509KeyPair()
if werr != nil {
return nil, werr
}
return c, nil
}