1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
/**
* Go SDK for OpenFGA
*
* API version: 1.x
* Website: https://openfga.dev
* Documentation: https://openfga.dev/docs
* Support: https://openfga.dev/community
* License: [Apache-2.0](https://github.com/openfga/go-sdk/blob/main/LICENSE)
*
* NOTE: This file was auto generated by OpenAPI Generator (https://openapi-generator.tech). DO NOT EDIT.
*/
package openfga
import (
"net/http"
"github.com/openfga/go-sdk/credentials"
"github.com/openfga/go-sdk/telemetry"
)
const (
SdkVersion = "0.6.5"
defaultUserAgent = "openfga-sdk go/0.6.5"
)
// RetryParams configures configuration for retry in case of HTTP too many request
type RetryParams struct {
MaxRetry int `json:"maxRetry,omitempty"`
MinWaitInMs int `json:"minWaitInMs,omitempty"`
}
// Configuration stores the configuration of the API client
type Configuration struct {
// ApiScheme - defines the scheme for the API: http or https
// Deprecated: use ApiUrl instead of ApiScheme and ApiHost
ApiScheme string `json:"api_scheme,omitempty"`
// ApiHost - defines the host for the API without the scheme e.g. (api.fga.example)
// Deprecated: use ApiUrl instead of ApiScheme and ApiHost
ApiHost string `json:"api_host,omitempty"`
ApiUrl string `json:"api_url,omitempty"`
Credentials *credentials.Credentials `json:"credentials,omitempty"`
DefaultHeaders map[string]string `json:"default_headers,omitempty"`
UserAgent string `json:"user_agent,omitempty"`
Debug bool `json:"debug,omitempty"`
HTTPClient *http.Client
RetryParams *RetryParams
Telemetry *telemetry.Configuration `json:"telemetry,omitempty"`
}
// DefaultRetryParams returns the default retry parameters
func DefaultRetryParams() *RetryParams {
return &RetryParams{
MaxRetry: 3,
MinWaitInMs: 100,
}
}
func GetSdkUserAgent() string {
return defaultUserAgent
}
// NewConfiguration returns a new Configuration object
func NewConfiguration(config Configuration) (*Configuration, error) {
apiUrl := config.ApiUrl
apiScheme := config.ApiScheme
if apiScheme == "" {
apiScheme = "https"
}
if apiUrl == "" {
// If api url is not provided, fall back to deprecated config fields
apiUrl = apiScheme + "://" + config.ApiHost
}
cfg := &Configuration{
ApiUrl: apiUrl,
Credentials: config.Credentials,
DefaultHeaders: config.DefaultHeaders,
UserAgent: config.UserAgent,
Debug: config.Debug,
HTTPClient: config.HTTPClient,
RetryParams: config.RetryParams,
Telemetry: config.Telemetry,
}
if cfg.UserAgent == "" {
cfg.UserAgent = GetSdkUserAgent()
}
if cfg.DefaultHeaders == nil {
cfg.DefaultHeaders = make(map[string]string)
}
if cfg.Telemetry == nil {
cfg.Telemetry = telemetry.DefaultTelemetryConfiguration()
}
err := cfg.ValidateConfig()
if err != nil {
return nil, err
}
return cfg, nil
}
// AddDefaultHeader adds a new HTTP header to the default header in the request
func (c *Configuration) AddDefaultHeader(key string, value string) {
c.DefaultHeaders[key] = value
}
// ValidateConfig ensures that the given configuration is valid
func (c *Configuration) ValidateConfig() error {
if c.ApiUrl == "" {
return reportError("Configuration.ApiUrl is required")
}
if !IsWellFormedUri(c.ApiUrl) {
return reportError("Configuration.ApiUrl (%s) does not form a valid uri", c.ApiUrl)
}
if c.Credentials != nil {
if err := c.Credentials.ValidateCredentialsConfig(); err != nil {
return reportError("Credentials are invalid: %v", err)
}
}
if c.RetryParams != nil && c.RetryParams.MaxRetry > 15 {
return reportError("Configuration.RetryParams.MaxRetry exceeds maximum allowed limit of 15")
}
return nil
}
|