-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathconfiguration.go
135 lines (110 loc) · 3.68 KB
/
configuration.go
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
/**
* 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/internal/utils/retryutils"
"github.com/openfga/go-sdk/telemetry"
)
const (
SdkVersion = "0.7.1"
defaultUserAgent = "openfga-sdk go/0.7.1"
)
// RetryParams provides configuration for retries in case of server errors
type RetryParams = retryutils.RetryParams
// 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"`
}
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()
}
retryParams, err := retryutils.NewRetryParams(cfg.RetryParams)
if err != nil {
return nil, err
}
cfg.RetryParams = retryParams
if err := cfg.ValidateConfig(); err != nil {
return nil, err
}
return cfg, nil
}
// GetRetryParams
func (c *Configuration) GetRetryParams() RetryParams {
return retryutils.GetRetryParamsOrDefault(c.RetryParams)
}
// 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 err := c.RetryParams.Validate(); err != nil {
return err
}
return nil
}