Documentation ¶
Overview ¶
Package core contains functionality used by Go SDK's generated by the IBM OpenAPI 3 SDK Generator (openapi-sdkgen). Authenticators
The go-sdk-core project supports the following types of authentication:
Basic Authentication Bearer Token Identity and Access Management (IAM) Cloud Pak for Data No Authentication
The authentication types that are appropriate for a particular service may vary from service to service. Each authentication type is implemented as an Authenticator for consumption by a service. To read more about authenticators and how to use them see here: https://github.com/IBM/go-sdk-core/blob/main/Authentication.md
Services ¶
Services are the API clients generated by the IBM OpenAPI 3 SDK Generator. These services make use of the code within the core package BaseService instances to perform service operations.
Index ¶
- Constants
- Variables
- func BoolPtr(literal bool) *bool
- func ConvertSlice(slice interface{}) (s []string, err error)
- func DefaultHTTPClient() *http.Client
- func Float32Ptr(literal float32) *float32
- func Float64Ptr(literal float64) *float64
- func GetCurrentTime() int64
- func GetQueryParam(urlStr *string, param string) (*string, error)
- func GetServiceProperties(serviceName string) (serviceProps map[string]string, err error)
- func HasBadFirstOrLastChar(str string) bool
- func IBMCloudSDKBackoffPolicy(min, max time.Duration, attemptNum int, resp *http.Response) time.Duration
- func IBMCloudSDKRetryPolicy(ctx context.Context, resp *http.Response, err error) (bool, error)
- func Int64Ptr(literal int64) *int64
- func IsJSONMimeType(mimeType string) bool
- func IsJSONPatchMimeType(mimeType string) bool
- func IsNil(object interface{}) bool
- func NewGzipCompressionReader(uncompressedReader io.Reader) (io.Reader, error)
- func NewGzipDecompressionReader(compressedReader io.Reader) (io.Reader, error)
- func NewRetryableHTTPClient() *retryablehttp.Client
- func NormalizeDateTimeUTC(t time.Time) time.Time
- func ParseDate(dateString string) (fmtDate strfmt.Date, err error)
- func ParseDateTime(dateString string) (strfmt.DateTime, error)
- func PrettyPrint(result interface{}, resultName string)
- func SetLogger(logger Logger)
- func SetLoggingLevel(level LogLevel)
- func SliceContains(slice []string, contains string) bool
- func StringNilMapper(s *string) string
- func StringPtr(literal string) *string
- func SystemInfo() string
- func UUIDPtr(literal strfmt.UUID) *strfmt.UUID
- func UnmarshalFileWithMetadata(m map[string]json.RawMessage, result interface{}) (err error)
- func UnmarshalModel(rawInput interface{}, propertyName string, result interface{}, ...) (err error)
- func UnmarshalPrimitive(rawInput map[string]json.RawMessage, propertyName string, result interface{}) (err error)
- func UserHomeDir() string
- func ValidateNotNil(object interface{}, errorMsg string) error
- func ValidateStruct(param interface{}, paramName string) error
- type AuthenticationError
- type Authenticator
- type BaseService
- func (service *BaseService) Clone() *BaseService
- func (service *BaseService) ConfigureService(serviceName string) error
- func (service *BaseService) DisableRetries()
- func (service *BaseService) DisableSSLVerification()
- func (service *BaseService) EnableRetries(maxRetries int, maxRetryInterval time.Duration)
- func (service *BaseService) GetEnableGzipCompression() bool
- func (service *BaseService) GetServiceURL() string
- func (service *BaseService) IsSSLDisabled() bool
- func (service *BaseService) Request(req *http.Request, result interface{}) (detailedResponse *DetailedResponse, err error)
- func (service *BaseService) SetDefaultHeaders(headers http.Header)
- func (service *BaseService) SetEnableGzipCompression(enableGzip bool)
- func (service *BaseService) SetHTTPClient(client *http.Client)
- func (service *BaseService) SetServiceURL(url string) error
- func (service *BaseService) SetURL(url string) errordeprecated
- func (service *BaseService) SetUserAgent(userAgentString string)
- type BasicAuthenticator
- type BearerTokenAuthenticator
- type CloudPakForDataAuthenticator
- func NewCloudPakForDataAuthenticator(url string, username string, password string, disableSSLVerification bool, ...) (*CloudPakForDataAuthenticator, error)
- func NewCloudPakForDataAuthenticatorUsingAPIKey(url string, username string, apikey string, disableSSLVerification bool, ...) (*CloudPakForDataAuthenticator, error)
- func NewCloudPakForDataAuthenticatorUsingPassword(url string, username string, password string, disableSSLVerification bool, ...) (*CloudPakForDataAuthenticator, error)
- type DetailedResponse
- func (response *DetailedResponse) GetHeaders() http.Header
- func (response *DetailedResponse) GetRawResult() []byte
- func (response *DetailedResponse) GetResult() interface{}
- func (response *DetailedResponse) GetResultAsMap() (map[string]interface{}, bool)
- func (response *DetailedResponse) GetStatusCode() int
- func (response *DetailedResponse) String() string
- type Error
- type Errors
- type FileWithMetadata
- type FormData
- type IamAuthenticator
- type IamTokenServerResponse
- type LogLevel
- type Logger
- type ModelUnmarshaller
- type NoAuthAuthenticator
- type RequestBuilder
- func (requestBuilder *RequestBuilder) AddFormData(fieldName string, fileName string, contentType string, contents interface{}) *RequestBuilder
- func (requestBuilder *RequestBuilder) AddHeader(name string, value string) *RequestBuilder
- func (requestBuilder *RequestBuilder) AddQuery(name string, value string) *RequestBuilder
- func (requestBuilder *RequestBuilder) AddQuerySlice(param string, slice interface{}) (err error)
- func (requestBuilder *RequestBuilder) Build() (req *http.Request, err error)
- func (requestBuilder *RequestBuilder) ConstructHTTPURL(serviceURL string, pathSegments []string, pathParameters []string) (*RequestBuilder, error)
- func (requestBuilder *RequestBuilder) ResolveRequestURL(serviceURL string, path string, pathParams map[string]string) (*RequestBuilder, error)
- func (requestBuilder *RequestBuilder) SetBodyContent(contentType string, jsonContent interface{}, jsonPatchContent interface{}, ...) (builder *RequestBuilder, err error)
- func (requestBuilder *RequestBuilder) SetBodyContentForMultipart(contentType string, content interface{}, writer io.Writer) error
- func (requestBuilder *RequestBuilder) SetBodyContentJSON(bodyContent interface{}) (*RequestBuilder, error)
- func (requestBuilder *RequestBuilder) SetBodyContentStream(bodyContent io.Reader) (*RequestBuilder, error)
- func (requestBuilder *RequestBuilder) SetBodyContentString(bodyContent string) (*RequestBuilder, error)
- func (requestBuilder *RequestBuilder) WithContext(ctx context.Context) *RequestBuilder
- type SDKLoggerImpl
- func (l *SDKLoggerImpl) Debug(format string, inserts ...interface{})
- func (l *SDKLoggerImpl) Error(format string, inserts ...interface{})
- func (l *SDKLoggerImpl) GetLogLevel() LogLevel
- func (l *SDKLoggerImpl) Info(format string, inserts ...interface{})
- func (l *SDKLoggerImpl) IsLogLevelEnabled(level LogLevel) bool
- func (l *SDKLoggerImpl) Log(level LogLevel, format string, inserts ...interface{})
- func (l *SDKLoggerImpl) SetLogLevel(level LogLevel)
- func (l *SDKLoggerImpl) Warn(format string, inserts ...interface{})
- type ServiceOptions
Constants ¶
const ( // IBM_CREDENTIAL_FILE_ENVVAR is the environment key used to find the path to // a credentials file. IBM_CREDENTIAL_FILE_ENVVAR = "IBM_CREDENTIALS_FILE" // DEFAULT_CREDENTIAL_FILE_NAME is the default filename for a credentials file. // It is used when "IBM_CREDENTIALS_FILE" is not specified. The filename will // be searched for within the program's working directory, and then the OS's // current user directory. DEFAULT_CREDENTIAL_FILE_NAME = "ibm-credentials.env" )
const ( // Supported authentication types. AUTHTYPE_BASIC = "basic" AUTHTYPE_BEARER_TOKEN = "bearerToken" AUTHTYPE_NOAUTH = "noAuth" AUTHTYPE_IAM = "iam" AUTHTYPE_CP4D = "cp4d" // Service client properties. PROPNAME_SVC_URL = "URL" PROPNAME_SVC_DISABLE_SSL = "DISABLE_SSL" PROPNAME_SVC_ENABLE_GZIP = "ENABLE_GZIP" PROPNAME_SVC_ENABLE_RETRIES = "ENABLE_RETRIES" PROPNAME_SVC_MAX_RETRIES = "MAX_RETRIES" PROPNAME_SVC_RETRY_INTERVAL = "RETRY_INTERVAL" // Authenticator properties. PROPNAME_AUTH_TYPE = "AUTH_TYPE" PROPNAME_USERNAME = "USERNAME" PROPNAME_PASSWORD = "PASSWORD" PROPNAME_BEARER_TOKEN = "BEARER_TOKEN" PROPNAME_AUTH_URL = "AUTH_URL" PROPNAME_AUTH_DISABLE_SSL = "AUTH_DISABLE_SSL" PROPNAME_APIKEY = "APIKEY" PROPNAME_CLIENT_ID = "CLIENT_ID" PROPNAME_CLIENT_SECRET = "CLIENT_SECRET" PROPNAME_SCOPE = "SCOPE" // SSL error SSL_CERTIFICATION_ERROR = "x509: certificate" // Common error messages. ERRORMSG_PROP_MISSING = "The %s property is required but was not specified." ERRORMSG_PROP_INVALID = "The %s property is invalid. Please remove any surrounding {, }, or \" characters." ERRORMSG_EXCLUSIVE_PROPS_ERROR = "Exactly one of %s or %s must be specified." ERRORMSG_NO_AUTHENTICATOR = "Authentication information was not properly configured." ERRORMSG_AUTHTYPE_UNKNOWN = "Unrecognized authentication type: %s" ERRORMSG_PROPS_MAP_NIL = "The 'properties' map cannot be nil." ERRORMSG_SSL_VERIFICATION_FAILED = "The connection failed because the SSL certificate is not valid. To use a " + "self-signed certificate, disable verification of the server's SSL certificate " + "by invoking the DisableSSLVerification() function on your service instance " + "and/or use the DisableSSLVerification option of the authenticator." ERRORMSG_AUTHENTICATE_ERROR = "An error occurred while performing the 'authenticate' step: %s" ERRORMSG_READ_RESPONSE_BODY = "An error occurred while reading the response body: %s" ERRORMSG_UNEXPECTED_RESPONSE = "The response contained unexpected content" ERRORMSG_UNMARSHAL_RESPONSE_BODY = "An error occurred while unmarshalling the response body: %s" ERRORMSG_NIL_SLICE = "The 'slice' parameter cannot be nil" ERRORMSG_PARAM_NOT_SLICE = "The 'slice' parameter must be a slice" ERRORMSG_MARSHAL_SLICE = "An error occurred while marshalling the slice: %s" ERRORMSG_CONVERT_SLICE = "An error occurred while converting 'slice' to string slice" ERRORMSG_CREATE_RETRYABLE_REQ = "An error occurred while creating a retryable http Request: %s" ERRORMSG_UNEXPECTED_STATUS_CODE = "Unexpected HTTP status code %d (%s)" ERRORMSG_UNMARSHAL_AUTH_RESPONSE = "error unmarshalling authentication response: %s" )
const ( DEFAULT_IAM_URL = "https://iam.cloud.ibm.com" OPERATION_PATH = "/identity/token" DEFAULT_CONTENT_TYPE = "application/x-www-form-urlencoded" /* #nosec G101 */ REQUEST_TOKEN_GRANT_TYPE = "urn:ibm:params:oauth:grant-type:apikey" REQUEST_TOKEN_RESPONSE_TYPE = "cloud_iam" )
IamAuthenticator-related constants.
const ( POST = http.MethodPost GET = http.MethodGet DELETE = http.MethodDelete PUT = http.MethodPut PATCH = http.MethodPatch HEAD = http.MethodHead )
common HTTP methods
const ( Accept = "Accept" APPLICATION_JSON = "application/json" CONTENT_DISPOSITION = "Content-Disposition" CONTENT_ENCODING = "Content-Encoding" CONTENT_TYPE = "Content-Type" FORM_URL_ENCODED_HEADER = "application/x-www-form-urlencoded" ERRORMSG_SERVICE_URL_MISSING = "service URL is empty" ERRORMSG_SERVICE_URL_INVALID = "error parsing service URL: %s" ERRORMSG_PATH_PARAM_EMPTY = "path parameter '%s' is empty" )
common headers
Variables ¶
var Validate *validator.Validate
Validate is a shared validator instance used to perform validation of structs.
Functions ¶
func ConvertSlice ¶
ConvertSlice Marshals 'slice' to a json string, performs string manipulation on the resulting string, and converts the string to a '[]string'. If 'slice' is nil, not a 'slice' type, or an error occurred during conversion, an error will be returned
func DefaultHTTPClient ¶
DefaultHTTPClient returns a non-retryable http client with default configuration.
func Float32Ptr ¶
Float32Ptr returns a pointer to float32 literal.
func Float64Ptr ¶
Float64Ptr returns a pointer to float64 literal.
func GetQueryParam ¶ added in v5.2.0
return a pointer to the value of query parameter `param` from url, or nil when not found
func GetServiceProperties ¶
GetServiceProperties returns a map containing configuration properties for the specified service that are retrieved from external configuration sources in the following precedence order: 1) credential file 2) environment variables 3) VCAP_SERVICES
'serviceName' is used as a filter against the property names. For example, if serviceName is passed in as "my_service", then configuration properties whose names begin with "MY_SERVICE_" will be returned in the map.
func HasBadFirstOrLastChar ¶
HasBadFirstOrLastChar checks if the string starts with `{` or `"` or ends with `}` or `"`.
func IBMCloudSDKBackoffPolicy ¶
func IBMCloudSDKBackoffPolicy(min, max time.Duration, attemptNum int, resp *http.Response) time.Duration
IBMCloudSDKBackoffPolicy provides a default implementation of the Backoff interface associated with a retryablehttp.Client. This function will return the wait time to be associated with the next retry attempt.
func IBMCloudSDKRetryPolicy ¶
IBMCloudSDKRetryPolicy provides a default implementation of the CheckRetry interface associated with a retryablehttp.Client. This function will return true if the specified request/response should be retried.
func IsJSONMimeType ¶
IsJSONMimeType Returns true iff the specified mimeType value represents a "JSON" mimetype.
func IsJSONPatchMimeType ¶
IsJSONPatchMimeType returns true iff the specified mimeType value represents a "JSON Patch" mimetype.
func IsNil ¶
func IsNil(object interface{}) bool
IsNil checks if the specified object is nil or not.
func NewGzipCompressionReader ¶
NewGzipCompressionReader will return an io.Reader instance that will deliver the gzip-compressed version of the "uncompressedReader" argument. This function was inspired by this github gist:
https://gist.github.com/tomcatzh/cf8040820962e0f8c04700eb3b2f26be
func NewGzipDecompressionReader ¶
NewGzipDecompressionReader will return an io.Reader instance that will deliver the gzip-decompressed version of the "compressedReader" argument.
func NewRetryableHTTPClient ¶
func NewRetryableHTTPClient() *retryablehttp.Client
NewRetryableHTTPClient returns a new instance of go-retryablehttp.Client with a default configuration that supports Go SDK usage.
func NormalizeDateTimeUTC ¶
NormalizeDateTimeUTC normalizes t to reflect UTC timezone for marshaling
func ParseDate ¶ added in v5.1.0
ParseDate parses the specified RFC3339 full-date string (YYYY-MM-DD) and returns a strfmt.Date instance.
func ParseDateTime ¶ added in v5.1.0
ParseDateTime parses the specified date-time string and returns a strfmt.DateTime instance.
func PrettyPrint ¶
func PrettyPrint(result interface{}, resultName string)
PrettyPrint print pretty.
func SetLogger ¶
func SetLogger(logger Logger)
SetLogger sets the specified Logger instance as the logger to be used by the Go core library.
func SetLoggingLevel ¶
func SetLoggingLevel(level LogLevel)
SetLoggingLevel will enable the specified logging level in the Go core library.
func SliceContains ¶
SliceContains returns true iff "contains" is an element of "slice"
func StringNilMapper ¶
StringNilMapper de-references the parameter 's' and returns the result, or "" if 's' is nil.
func UnmarshalFileWithMetadata ¶ added in v5.4.0
func UnmarshalFileWithMetadata(m map[string]json.RawMessage, result interface{}) (err error)
UnmarshalFileWithMetadata unmarshals an instance of FileWithMetadata from the specified map of raw messages. The "data" field is assumed to be a string, the value of which is assumed to be a path to the file that contains the data intended for the FileWithMetadata struct.
func UnmarshalModel ¶
func UnmarshalModel(rawInput interface{}, propertyName string, result interface{}, unmarshaller ModelUnmarshaller) (err error)
UnmarshalModel unmarshals 'rawInput' into 'result' while using 'unmarshaller' to unmarshal model instances. This function is the single public interface to the various flavors of model-related unmarshal functions. The values passed in for the 'rawInput', 'propertyName' and 'result' fields will determine the function performed.
Parameters: rawInput: the unmarshal input source. The various types associated with this parameter are described below in "Usage Notes".
propertyName: an optional property name. If specified as "", then 'rawInput' is assumed to directly contain the input source to be used for the unmarshal operation. If propertyName is specified as a non-empty string, then 'rawInput' is assumed to be a map[string]json.RawMessage, and rawInput[propertyName] contains the input source to be unmarshalled.
result: the unmarshal destination. This should be passed in as one of the following types of values:
- **<model> (a ptr to a ptr to a <model> instance)
- *[]<model> (a ptr to a <model> slice)
- *[][]<model> (a ptr to a slice of <model> slices)
- *map[string]<model> (a ptr to a map of <model> instances)
- *map[string][]<model> (a ptr to a map of <model> slices)
unmarshaller: the unmarshaller function to be used to unmarshal each model instance
Usage Notes: if 'result' is a: | and propertyName is: | then 'rawInput' should be: -------------------+--------------------------+------------------------------------------------------------------ **Foo | == "" | a map[string]json.RawMessage which directly
| | contains an instance of model Foo (i.e. each map entry represents | | a property of Foo) | |
**Foo | != "" (e.g. "prop") | a map[string]json.RawMessage and rawInput["prop"]
| | should contain an instance of Foo (i.e. it can itself be | | unmarshalled into a map[string]json.RawMessage whose entries | | represent the properties of Foo)
-------------------+--------------------------+------------------------------------------------------------------ *[]Foo | == "" | a []json.RawMessage where each slice element contains
| | an instance of Foo (i.e. the json.RawMessage can be unmarshalled | | into a Foo instance) | |
*[]Foo | != "" (e.g. "prop") | a map[string]json.RawMessage and rawInput["prop"]
| | contains a []Foo (slice of Foo instances)
-------------------+--------------------------+------------------------------------------------------------------ *[][]Foo | == "" | a []json.RawMessage where each slice element contains
| | a []Foo (i.e. the json.RawMessage can be unmarshalled | | into a []Foo) | |
*[][]Foo | != "" (e.g. "prop") | a map[string]json.RawMessage and rawInput["prop"]
| | contains a [][]Foo (slice of Foo slices)
-------------------+--------------------------+------------------------------------------------------------------ *map[string]Foo | == "" | a map[string]json.RawMessage which directly contains the
| | map[string]Foo (i.e. the value within each entry in 'rawInput' | | contains an instance of Foo) | |
*map[string]Foo | != "" (e.g. "prop") | a map[string]json.RawMessage and rawInput["prop"]
| | contains an instance of map[string]Foo
-------------------+--------------------------+------------------------------------------------------------------ *map[string][]Foo | == "" | a map[string]json.RawMessage which directly contains the
| | map[string][]Foo (i.e. the value within each entry in 'rawInput' | | contains a []Foo)
*map[string][]Foo | != "" (e.g. "prop") | a map[string]json.RawMessage and rawInput["prop"]
| | contains an instance of map[string][]Foo
-------------------+--------------------------+------------------------------------------------------------------
func UnmarshalPrimitive ¶
func UnmarshalPrimitive(rawInput map[string]json.RawMessage, propertyName string, result interface{}) (err error)
UnmarshalPrimitive retrieves the specified property from 'rawInput', then unmarshals the resulting value into 'result'.
This function will typically be invoked from within a model's generated "Unmarshal<model>()" method to unmarshal a struct field (model property) involving a primitive type (a scalar value, a slice, a map of the primitive, etc.). In this context, "primitive" refers to a type other than a user-defined model type within an OpenAPI definition. The 'rawInput' parameter is expected to be a map that contains an instance of a user-defined model type.
Parameters:
rawInput: the unmarshal input source in the form of a map[string]json.RawMessage The value 'rawInput[propertyName]' must be a json.RawMessage that contains an instance of the type inferred from the value passed in as 'result'.
propertyName: the name of the property (map entry) to retrieve from 'rawInput'. This entry's value will be used as the unmarshal input source.
result: a pointer to the unmarshal destination. This could be any of the following:
- *<primitive-type>
- **<primitive-type>
- *[]<primitive-type>
- *[][]<primitive-type>
- *map[string]<primitive-type>
- *map[string][]<primitive-type>
- *[]map[string]<primitive-type>
- *[]map[string][]<primitive-type>
Where <primitive-type> could be any of the following:
- string, bool, []byte, int64, float32, float64, strfmt.Date, strfmt.DateTime, strfmt.UUID, interface{} (any), or map[string]interface{} (any object).
Example:
type MyStruct struct { Field1 *string, Field2 map[string]int64 }
myStruct := new(MyStruct) jsonString := `{ "field1": "value1", "field2": {"foo": 44, "bar": 74}}` var rawMessageMap map[string]json.RawMessage var err error err = UnmarshalPrimitive(rawMessageMap, "field1", &myStruct.Field1) err = UnmarshalPrimitive(rawMessageMap, "field2", &myString.Field2)
func ValidateNotNil ¶
ValidateNotNil returns the specified error if 'object' is nil, nil otherwise.
func ValidateStruct ¶
ValidateStruct validates 'param' (assumed to be a ptr to a struct) according to the annotations attached to its fields.
Types ¶
type AuthenticationError ¶
type AuthenticationError struct { Response *DetailedResponse Err error }
AuthenticationError describes the error returned when authentication fails
func NewAuthenticationError ¶
func NewAuthenticationError(response *DetailedResponse, err error) *AuthenticationError
func (*AuthenticationError) Error ¶
func (e *AuthenticationError) Error() string
type Authenticator ¶
type Authenticator interface { AuthenticationType() string Authenticate(*http.Request) error Validate() error }
Authenticator describes the set of methods implemented by each authenticator.
func GetAuthenticatorFromEnvironment ¶
func GetAuthenticatorFromEnvironment(credentialKey string) (authenticator Authenticator, err error)
GetAuthenticatorFromEnvironment instantiates an Authenticator using service properties retrieved from external config sources.
type BaseService ¶
type BaseService struct { // Configuration values for a service. Options *ServiceOptions // A set of "default" http headers to be included with each outbound request. DefaultHeaders http.Header // The HTTP Client used to send requests and receive responses. Client *http.Client // The value to be used for the "User-Agent" HTTP header that is added to each // outbound request. If this value is not set, then a default value will be // used for the header. UserAgent string }
BaseService implements the common functionality shared by generated services to manage requests and responses, authenticate outbound requests, etc.
func NewBaseService ¶
func NewBaseService(options *ServiceOptions) (*BaseService, error)
NewBaseService constructs a new instance of BaseService. Validation on input parameters and service options will be performed before instance creation.
func (*BaseService) Clone ¶
func (service *BaseService) Clone() *BaseService
Clone will return a copy of "service" suitable for use by a generated service instance to process requests.
func (*BaseService) ConfigureService ¶
func (service *BaseService) ConfigureService(serviceName string) error
ConfigureService updates the service with external configuration values.
func (*BaseService) DisableRetries ¶
func (service *BaseService) DisableRetries()
DisableRetries will disable automatic retries by constructing a new default (non-retryable) HTTP Client instance and setting it on the service.
func (*BaseService) DisableSSLVerification ¶
func (service *BaseService) DisableSSLVerification()
DisableSSLVerification skips SSL verification. This function sets a new http.Client instance on the service and configures it to bypass verification of server certificates and host names, making the client susceptible to "man-in-the-middle" attacks. This should be used only for testing.
func (*BaseService) EnableRetries ¶
func (service *BaseService) EnableRetries(maxRetries int, maxRetryInterval time.Duration)
EnableRetries will construct a "retryable" HTTP Client with the specified configuration, and then set it on the service instance. If maxRetries and/or maxRetryInterval are specified as 0, then default values are used instead.
func (*BaseService) GetEnableGzipCompression ¶
func (service *BaseService) GetEnableGzipCompression() bool
GetEnableGzipCompression returns the service's EnableGzipCompression field
func (*BaseService) GetServiceURL ¶
func (service *BaseService) GetServiceURL() string
GetServiceURL returns the service URL.
func (*BaseService) IsSSLDisabled ¶
func (service *BaseService) IsSSLDisabled() bool
IsSSLDisabled returns true if and only if the service's http.Client instance is configured to skip verification of server SSL certificates.
func (*BaseService) Request ¶
func (service *BaseService) Request(req *http.Request, result interface{}) (detailedResponse *DetailedResponse, err error)
Request invokes the specified HTTP request and returns the response.
Parameters: req: the http.Request object that holds the request information
result: a pointer to the operation result. This should be one of:
- *io.ReadCloser (for a byte-stream type response)
- *<primitive>, *[]<primitive>, *map[string]<primitive>
- *map[string]json.RawMessage, *[]json.RawMessage
Return values: detailedResponse: a DetailedResponse instance containing the status code, headers, etc.
err: a non-nil error object if an error occurred
func (*BaseService) SetDefaultHeaders ¶
func (service *BaseService) SetDefaultHeaders(headers http.Header)
SetDefaultHeaders sets HTTP headers to be sent in every request.
func (*BaseService) SetEnableGzipCompression ¶
func (service *BaseService) SetEnableGzipCompression(enableGzip bool)
SetEnableGzipCompression sets the service's EnableGzipCompression field
func (*BaseService) SetHTTPClient ¶
func (service *BaseService) SetHTTPClient(client *http.Client)
SetHTTPClient updates the client handling the requests.
func (*BaseService) SetServiceURL ¶
func (service *BaseService) SetServiceURL(url string) error
SetServiceURL sets the service URL.
func (*BaseService) SetURL
deprecated
func (service *BaseService) SetURL(url string) error
SetURL sets the service URL.
Deprecated: use SetServiceURL instead.
func (*BaseService) SetUserAgent ¶
func (service *BaseService) SetUserAgent(userAgentString string)
SetUserAgent sets the user agent value.
type BasicAuthenticator ¶
type BasicAuthenticator struct { // Username is the user-supplied basic auth username [required]. Username string // Password is the user-supplied basic auth password [required]. Password string }
BasicAuthenticator takes a user-supplied username and password, and adds them to requests via an Authorization header of the form:
Authorization: Basic <encoded username and password>
func NewBasicAuthenticator ¶
func NewBasicAuthenticator(username string, password string) (*BasicAuthenticator, error)
NewBasicAuthenticator constructs a new BasicAuthenticator instance.
func (*BasicAuthenticator) Authenticate ¶
func (this *BasicAuthenticator) Authenticate(request *http.Request) error
Authenticate adds basic authentication information to a request.
Basic Authorization will be added to the request's headers in the form:
Authorization: Basic <encoded username and password>
func (BasicAuthenticator) AuthenticationType ¶
func (BasicAuthenticator) AuthenticationType() string
AuthenticationType returns the authentication type for this authenticator.
func (BasicAuthenticator) Validate ¶
func (this BasicAuthenticator) Validate() error
Validate the authenticator's configuration.
Ensures the username and password are not Nil. Additionally, ensures they do not contain invalid characters.
type BearerTokenAuthenticator ¶
type BearerTokenAuthenticator struct { // The bearer token value to be used to authenticate request [required]. BearerToken string }
BearerTokenAuthenticator will take a user-supplied bearer token and adds it to requests via an Authorization header of the form:
Authorization: Bearer <bearer-token>
func NewBearerTokenAuthenticator ¶
func NewBearerTokenAuthenticator(bearerToken string) (*BearerTokenAuthenticator, error)
NewBearerTokenAuthenticator constructs a new BearerTokenAuthenticator instance.
func (*BearerTokenAuthenticator) Authenticate ¶
func (this *BearerTokenAuthenticator) Authenticate(request *http.Request) error
Authenticate adds bearer authentication information to the request.
The bearer token will be added to the request's headers in the form:
Authorization: Bearer <bearer-token>
func (BearerTokenAuthenticator) AuthenticationType ¶
func (BearerTokenAuthenticator) AuthenticationType() string
AuthenticationType returns the authentication type for this authenticator.
func (BearerTokenAuthenticator) Validate ¶
func (this BearerTokenAuthenticator) Validate() error
Validate the authenticator's configuration.
Ensures the bearer token is not Nil.
type CloudPakForDataAuthenticator ¶
type CloudPakForDataAuthenticator struct { // The URL representing the Cloud Pak for Data token service endpoint [required]. URL string // The username used to obtain a bearer token [required]. Username string // The password used to obtain a bearer token [required if APIKey not specified]. // One of Password or APIKey must be specified. Password string // The apikey used to obtain a bearer token [required if Password not specified]. // One of Password or APIKey must be specified. APIKey string // A flag that indicates whether verification of the server's SSL certificate // should be disabled; defaults to false [optional]. DisableSSLVerification bool // Default headers to be sent with every CP4D token request [optional]. Headers map[string]string // The http.Client object used to invoke token server requests [optional]. If // not specified, a suitable default Client will be constructed. Client *http.Client // contains filtered or unexported fields }
CloudPakForDataAuthenticator uses either a username/password pair or a username/apikey pair to obtain a suitable bearer token from the CP4D authentication service, and adds the bearer token to requests via an Authorization header of the form:
Authorization: Bearer <bearer-token>
func NewCloudPakForDataAuthenticator ¶
func NewCloudPakForDataAuthenticator(url string, username string, password string, disableSSLVerification bool, headers map[string]string) (*CloudPakForDataAuthenticator, error)
NewCloudPakForDataAuthenticator constructs a new CloudPakForDataAuthenticator instance from a username/password pair. This is the default way to create an authenticator and is a wrapper around the NewCloudPakForDataAuthenticatorUsingPassword() function
func NewCloudPakForDataAuthenticatorUsingAPIKey ¶
func NewCloudPakForDataAuthenticatorUsingAPIKey(url string, username string, apikey string, disableSSLVerification bool, headers map[string]string) (*CloudPakForDataAuthenticator, error)
NewCloudPakForDataAuthenticatorUsingAPIKey constructs a new CloudPakForDataAuthenticator instance from a username/apikey pair.
func NewCloudPakForDataAuthenticatorUsingPassword ¶
func NewCloudPakForDataAuthenticatorUsingPassword(url string, username string, password string, disableSSLVerification bool, headers map[string]string) (*CloudPakForDataAuthenticator, error)
NewCloudPakForDataAuthenticatorUsingPassword constructs a new CloudPakForDataAuthenticator instance from a username/password pair.
func (*CloudPakForDataAuthenticator) Authenticate ¶
func (authenticator *CloudPakForDataAuthenticator) Authenticate(request *http.Request) error
Authenticate adds the bearer token (obtained from the token server) to the specified request.
The CP4D bearer token will be added to the request's headers in the form:
Authorization: Bearer <bearer-token>
func (*CloudPakForDataAuthenticator) AuthenticationType ¶
func (*CloudPakForDataAuthenticator) AuthenticationType() string
AuthenticationType returns the authentication type for this authenticator.
func (*CloudPakForDataAuthenticator) Validate ¶
func (authenticator *CloudPakForDataAuthenticator) Validate() error
Validate the authenticator's configuration.
Ensures the username, password, and url are not Nil. Additionally, ensures they do not contain invalid characters.
type DetailedResponse ¶
type DetailedResponse struct { // The HTTP status code associated with the response. StatusCode int // The HTTP headers contained in the response. Headers http.Header // Result - this field will contain the result of the operation (obtained from the response body). // // If the operation was successful and the response body contains a JSON response, it is un-marshalled // into an object of the appropriate type (defined by the particular operation), and the Result field will contain // this response object. If there was an error while un-marshalling the JSON response body, then the RawResult field // will be set to the byte array containing the response body. // // Alternatively, if the generated SDK code passes in a result object which is an io.ReadCloser instance, // the JSON un-marshalling step is bypassed and the response body is simply returned in the Result field. // This scenario would occur in a situation where the SDK would like to provide a streaming model for large JSON // objects. // // If the operation was successful and the response body contains a non-JSON response, // the Result field will be an instance of io.ReadCloser that can be used by generated SDK code // (or the application) to read the response data. // // If the operation was unsuccessful and the response body contains a JSON error response, // this field will contain an instance of map[string]interface{} which is the result of un-marshalling the // response body as a "generic" JSON object. // If the JSON response for an unsuccessful operation could not be properly un-marshalled, then the // RawResult field will contain the raw response body. Result interface{} // This field will contain the raw response body as a byte array under these conditions: // 1) there was a problem un-marshalling a JSON response body - // either for a successful or unsuccessful operation. // 2) the operation was unsuccessful, and the response body contains a non-JSON response. RawResult []byte }
DetailedResponse holds the response information received from the server.
func (*DetailedResponse) GetHeaders ¶
func (response *DetailedResponse) GetHeaders() http.Header
GetHeaders returns the headers
func (*DetailedResponse) GetRawResult ¶
func (response *DetailedResponse) GetRawResult() []byte
GetRawResult returns the raw response body as a byte array.
func (*DetailedResponse) GetResult ¶
func (response *DetailedResponse) GetResult() interface{}
GetResult returns the result from the service
func (*DetailedResponse) GetResultAsMap ¶
func (response *DetailedResponse) GetResultAsMap() (map[string]interface{}, bool)
GetResultAsMap returns the result as a map (generic JSON object), if the DetailedResponse.Result field contains an instance of a map.
func (*DetailedResponse) GetStatusCode ¶
func (response *DetailedResponse) GetStatusCode() int
GetStatusCode returns the HTTP status code
func (*DetailedResponse) String ¶
func (response *DetailedResponse) String() string
type Error ¶
type Error struct {
Message string `json:"message,omitempty"`
}
Error is a struct used to represent a single error received in an operation response.
type Errors ¶
type Errors struct {
Errors []Error `json:"errors,omitempty"`
}
Errors is a struct used to hold an array of errors received in an operation response.
type FileWithMetadata ¶ added in v5.4.0
type FileWithMetadata struct { // The data / content for the file. Data io.ReadCloser `json:"data" validate:"required"` // The filename of the file. Filename *string `json:"filename,omitempty"` // The content type of the file. ContentType *string `json:"content_type,omitempty"` }
FileWithMetadata : A file with its associated metadata.
func NewFileWithMetadata ¶ added in v5.4.0
func NewFileWithMetadata(data io.ReadCloser) (model *FileWithMetadata, err error)
NewFileWithMetadata : Instantiate FileWithMetadata (Generic Model Constructor)
type FormData ¶
type FormData struct {
// contains filtered or unexported fields
}
FormData stores information for form data.
type IamAuthenticator ¶
type IamAuthenticator struct { // The apikey used to fetch the bearer token from the IAM token server // [required]. ApiKey string // The URL representing the IAM token server's endpoint; If not specified, // a suitable default value will be used [optional]. URL string // If neither field is specified, then no Authorization header will be sent // with token server requests [optional]. These fields are optional, but must // be specified together. ClientId string // If neither field is specified, then no Authorization header will be sent // with token server requests [optional]. These fields are optional, but must // be specified together. ClientSecret string // A flag that indicates whether verification of the server's SSL certificate // should be disabled; defaults to false [optional]. DisableSSLVerification bool // [Optional] The "scope" to use when fetching the bearer token from the // IAM token server. This can be used to obtain an access token // with a specific scope. Scope string // [Optional] A set of key/value pairs that will be sent as HTTP headers in requests // made to the token server. Headers map[string]string // [Optional] The http.Client object used to invoke token server requests. // If not specified by the user, a suitable default Client will be constructed. Client *http.Client // contains filtered or unexported fields }
IamAuthenticator uses an apikey to obtain a suitable bearer token value, and adds the bearer token to requests via an Authorization header of the form:
Authorization: Bearer <bearer-token>
func NewIamAuthenticator ¶
func NewIamAuthenticator(apikey string, url string, clientId string, clientSecret string, disableSSLVerification bool, headers map[string]string) (*IamAuthenticator, error)
NewIamAuthenticator constructs a new IamAuthenticator instance.
func (*IamAuthenticator) Authenticate ¶
func (authenticator *IamAuthenticator) Authenticate(request *http.Request) error
Authenticate adds IAM authentication information to the request.
The IAM bearer token will be added to the request's headers in the form:
Authorization: Bearer <bearer-token>
func (*IamAuthenticator) AuthenticationType ¶
func (*IamAuthenticator) AuthenticationType() string
AuthenticationType returns the authentication type for this authenticator.
func (*IamAuthenticator) RequestToken ¶
func (authenticator *IamAuthenticator) RequestToken() (*IamTokenServerResponse, error)
RequestToken fetches a new access token from the token server.
func (*IamAuthenticator) Validate ¶
func (this *IamAuthenticator) Validate() error
Validate the authenticator's configuration.
Ensures the ApiKey is valid, and the ClientId and ClientSecret pair are mutually inclusive.
type IamTokenServerResponse ¶
type IamTokenServerResponse struct { AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` TokenType string `json:"token_type"` ExpiresIn int64 `json:"expires_in"` Expiration int64 `json:"expiration"` }
IamTokenServerResponse : This struct models a response received from the token server.
type Logger ¶
type Logger interface { Log(level LogLevel, format string, inserts ...interface{}) Error(format string, inserts ...interface{}) Warn(format string, inserts ...interface{}) Info(format string, inserts ...interface{}) Debug(format string, inserts ...interface{}) SetLogLevel(level LogLevel) GetLogLevel() LogLevel IsLogLevelEnabled(level LogLevel) bool }
Logger is the logging interface implemented and used by the Go core library. Users of the library can supply their own implementation by calling SetLogger().
type ModelUnmarshaller ¶
type ModelUnmarshaller func(rawInput map[string]json.RawMessage, result interface{}) error
ModelUnmarshaller defines the interface for a generated Unmarshal<model>() function, which is used by the various "UnmarshalModel" functions below to unmarshal an instance of the user-defined model type.
Parameters: rawInput: a map[string]json.RawMessage that is assumed to contain an instance of the model type.
result: the unmarshal destination. This should be a **<model> (i.e. a ptr to a ptr to a model instance). A new instance of the model is constructed by the unmarshaller function and is returned through the ptr passed in as 'result'.
type NoAuthAuthenticator ¶
type NoAuthAuthenticator struct { }
NoAuthAuthenticator is simply a placeholder implementation of the Authenticator interface that performs no authentication. This might be useful in testing/debugging situations.
func NewNoAuthAuthenticator ¶
func NewNoAuthAuthenticator() (*NoAuthAuthenticator, error)
func (*NoAuthAuthenticator) Authenticate ¶
func (this *NoAuthAuthenticator) Authenticate(request *http.Request) error
func (NoAuthAuthenticator) AuthenticationType ¶
func (NoAuthAuthenticator) AuthenticationType() string
func (NoAuthAuthenticator) Validate ¶
func (NoAuthAuthenticator) Validate() error
type RequestBuilder ¶
type RequestBuilder struct { Method string URL *url.URL Header http.Header Body io.Reader Query map[string][]string Form map[string][]FormData // EnableGzipCompression indicates whether or not request bodies // should be gzip-compressed. // This field has no effect on response bodies. // If enabled, the Body field will be gzip-compressed and // the "Content-Encoding" header will be added to the request with the // value "gzip". EnableGzipCompression bool // contains filtered or unexported fields }
RequestBuilder is used to build an HTTP Request instance.
func NewRequestBuilder ¶
func NewRequestBuilder(method string) *RequestBuilder
NewRequestBuilder initiates a new request.
func (*RequestBuilder) AddFormData ¶
func (requestBuilder *RequestBuilder) AddFormData(fieldName string, fileName string, contentType string, contents interface{}) *RequestBuilder
AddFormData adds a new mime part (constructed from the input parameters) to the request's multi-part form.
func (*RequestBuilder) AddHeader ¶
func (requestBuilder *RequestBuilder) AddHeader(name string, value string) *RequestBuilder
AddHeader adds a header name and value to the request.
func (*RequestBuilder) AddQuery ¶
func (requestBuilder *RequestBuilder) AddQuery(name string, value string) *RequestBuilder
AddQuery adds a query parameter name and value to the request.
func (*RequestBuilder) AddQuerySlice ¶
func (requestBuilder *RequestBuilder) AddQuerySlice(param string, slice interface{}) (err error)
AddQuerySlice converts the passed in slice 'slice' by calling the ConverSlice method, and adds the converted slice to the request's query string. An error is returned when conversion fails.
func (*RequestBuilder) Build ¶
func (requestBuilder *RequestBuilder) Build() (req *http.Request, err error)
Build builds an HTTP Request object from this RequestBuilder instance.
func (*RequestBuilder) ConstructHTTPURL ¶
func (requestBuilder *RequestBuilder) ConstructHTTPURL(serviceURL string, pathSegments []string, pathParameters []string) (*RequestBuilder, error)
ConstructHTTPURL creates a properly-encoded URL with path parameters. This function returns an error if the serviceURL is "" or is an invalid URL string (e.g. ":<badscheme>").
func (*RequestBuilder) ResolveRequestURL ¶
func (requestBuilder *RequestBuilder) ResolveRequestURL(serviceURL string, path string, pathParams map[string]string) (*RequestBuilder, error)
ResolveRequestURL creates a properly-encoded URL with path params. This function returns an error if the serviceURL is "" or is an invalid URL string (e.g. ":<badscheme>"). Parameters: serviceURL - the base URL associated with the service endpoint (e.g. "https://myservice.cloud.ibm.com") path - the unresolved path string (e.g. "/resource/{resource_id}/type/{type_id}") pathParams - a map containing the path params, keyed by the path param base name (e.g. {"type_id": "type-1", "resource_id": "res-123-456-789-abc"}) The resulting request URL: "https://myservice.cloud.ibm.com/resource/res-123-456-789-abc/type/type-1"
func (*RequestBuilder) SetBodyContent ¶
func (requestBuilder *RequestBuilder) SetBodyContent(contentType string, jsonContent interface{}, jsonPatchContent interface{}, nonJSONContent interface{}) (builder *RequestBuilder, err error)
SetBodyContent sets the body content from one of three different sources.
func (*RequestBuilder) SetBodyContentForMultipart ¶
func (requestBuilder *RequestBuilder) SetBodyContentForMultipart(contentType string, content interface{}, writer io.Writer) error
SetBodyContentForMultipart sets the body content for a part in a multi-part form.
func (*RequestBuilder) SetBodyContentJSON ¶
func (requestBuilder *RequestBuilder) SetBodyContentJSON(bodyContent interface{}) (*RequestBuilder, error)
SetBodyContentJSON sets the body content from a JSON structure.
func (*RequestBuilder) SetBodyContentStream ¶
func (requestBuilder *RequestBuilder) SetBodyContentStream(bodyContent io.Reader) (*RequestBuilder, error)
SetBodyContentStream sets the body content from an io.Reader instance.
func (*RequestBuilder) SetBodyContentString ¶
func (requestBuilder *RequestBuilder) SetBodyContentString(bodyContent string) (*RequestBuilder, error)
SetBodyContentString sets the body content from a string.
func (*RequestBuilder) WithContext ¶
func (requestBuilder *RequestBuilder) WithContext(ctx context.Context) *RequestBuilder
WithContext sets "ctx" as the Context to be associated with the http.Request instance that will be constructed by the Build() method.
type SDKLoggerImpl ¶
type SDKLoggerImpl struct {
// contains filtered or unexported fields
}
SDKLoggerImpl is the Go core's implementation of the Logger interface. This logger contains two instances of Go's log.Logger interface which are used to perform message logging. "infoLogger" is used to log info/warn/debug messages. If specified as nil, then a default log.Logger instance that uses stdout will be created and used for "infoLogger". "errorLogger" is used to log error messages. If specified as nil, then a default log.Logger instance that uses stderr will be created and used for "errorLogger".
func NewLogger ¶
NewLogger constructs an SDKLoggerImpl instance with the specified logging level enabled. The "infoLogger" parameter is the log.Logger instance to be used to log info/warn/debug messages. If specified as nil, then a default log.Logger instance that writes messages to "stdout" will be used. The "errorLogger" parameter is the log.Logger instance to be used to log error messages. If specified as nil, then a default log.Logger instance that writes messages to "stderr" will be used.
func (*SDKLoggerImpl) Debug ¶
func (l *SDKLoggerImpl) Debug(format string, inserts ...interface{})
Debug logs a message at level "Debug"
func (*SDKLoggerImpl) Error ¶
func (l *SDKLoggerImpl) Error(format string, inserts ...interface{})
Error logs a message at level "Error"
func (*SDKLoggerImpl) GetLogLevel ¶
func (l *SDKLoggerImpl) GetLogLevel() LogLevel
GetLogLevel sets level to be the current logging level
func (*SDKLoggerImpl) Info ¶
func (l *SDKLoggerImpl) Info(format string, inserts ...interface{})
Info logs a message at level "Info"
func (*SDKLoggerImpl) IsLogLevelEnabled ¶
func (l *SDKLoggerImpl) IsLogLevelEnabled(level LogLevel) bool
IsLogLevelEnabled returns true iff the logger's current logging level indicates that 'level' is enabled.
func (*SDKLoggerImpl) Log ¶
func (l *SDKLoggerImpl) Log(level LogLevel, format string, inserts ...interface{})
Log will log the specified message on the appropriate log.Logger instance if "level" is currently enabled.
func (*SDKLoggerImpl) SetLogLevel ¶
func (l *SDKLoggerImpl) SetLogLevel(level LogLevel)
SetLogLevel sets level to be the current logging level
func (*SDKLoggerImpl) Warn ¶
func (l *SDKLoggerImpl) Warn(format string, inserts ...interface{})
Warn logs a message at level "Warn"
type ServiceOptions ¶
type ServiceOptions struct { // This is the base URL associated with the service instance. This value will // be combined with the paths for each operation to form the request URL // [required]. URL string // Authenticator holds the authenticator implementation to be used by the // service instance to authenticate outbound requests, typically by adding the // HTTP "Authorization" header. Authenticator Authenticator // EnableGzipCompression indicates whether or not request bodies // should be gzip-compressed. // This field has no effect on response bodies. // If enabled, the Body field will be gzip-compressed and // the "Content-Encoding" header will be added to the request with the // value "gzip". EnableGzipCompression bool }
ServiceOptions is a struct of configuration values for a service.
Source Files ¶
- authenticator.go
- authenticator_factory.go
- base_service.go
- basic_authenticator.go
- bearer_token_authenticator.go
- config_utils.go
- constants.go
- cp4d_authenticator.go
- datetime.go
- detailed_response.go
- doc.go
- file_with_metadata.go
- gzip.go
- iam_authenticator.go
- jwt_utils.go
- log.go
- noauth_authenticator.go
- request_builder.go
- unmarshal_v2.go
- utils.go
- version.go