mirror of https://github.com/usememos/memos
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
755 B
Go
35 lines
755 B
Go
package audiollm
|
|
|
|
import (
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
const defaultHTTPTimeout = 2 * time.Minute
|
|
|
|
// Options is the resolved option set passed to provider implementations.
|
|
type Options struct {
|
|
HTTPClient *http.Client
|
|
}
|
|
|
|
// ModelOption customizes a Model.
|
|
type ModelOption func(*Options)
|
|
|
|
// WithHTTPClient overrides the HTTP client used by the model.
|
|
func WithHTTPClient(client *http.Client) ModelOption {
|
|
return func(o *Options) {
|
|
if client != nil {
|
|
o.HTTPClient = client
|
|
}
|
|
}
|
|
}
|
|
|
|
// ApplyOptions resolves a ModelOption slice into Options with defaults.
|
|
func ApplyOptions(opts []ModelOption) Options {
|
|
resolved := Options{HTTPClient: &http.Client{Timeout: defaultHTTPTimeout}}
|
|
for _, apply := range opts {
|
|
apply(&resolved)
|
|
}
|
|
return resolved
|
|
}
|