mirror of
https://github.com/sst/opencode.git
synced 2025-07-07 16:14:59 +00:00
50 lines
2 KiB
Go
50 lines
2 KiB
Go
package opencode
|
|
|
|
import (
|
|
"github.com/sst/opencode-sdk-go/internal/param"
|
|
"io"
|
|
)
|
|
|
|
// F is a param field helper used to initialize a [param.Field] generic struct.
|
|
// This helps specify null, zero values, and overrides, as well as normal values.
|
|
// You can read more about this in our [README].
|
|
//
|
|
// [README]: https://pkg.go.dev/github.com/sst/opencode-sdk-go#readme-request-fields
|
|
func F[T any](value T) param.Field[T] { return param.Field[T]{Value: value, Present: true} }
|
|
|
|
// Null is a param field helper which explicitly sends null to the API.
|
|
func Null[T any]() param.Field[T] { return param.Field[T]{Null: true, Present: true} }
|
|
|
|
// Raw is a param field helper for specifying values for fields when the
|
|
// type you are looking to send is different from the type that is specified in
|
|
// the SDK. For example, if the type of the field is an integer, but you want
|
|
// to send a float, you could do that by setting the corresponding field with
|
|
// Raw[int](0.5).
|
|
func Raw[T any](value any) param.Field[T] { return param.Field[T]{Raw: value, Present: true} }
|
|
|
|
// Int is a param field helper which helps specify integers. This is
|
|
// particularly helpful when specifying integer constants for fields.
|
|
func Int(value int64) param.Field[int64] { return F(value) }
|
|
|
|
// String is a param field helper which helps specify strings.
|
|
func String(value string) param.Field[string] { return F(value) }
|
|
|
|
// Float is a param field helper which helps specify floats.
|
|
func Float(value float64) param.Field[float64] { return F(value) }
|
|
|
|
// Bool is a param field helper which helps specify bools.
|
|
func Bool(value bool) param.Field[bool] { return F(value) }
|
|
|
|
// FileParam is a param field helper which helps files with a mime content-type.
|
|
func FileParam(reader io.Reader, filename string, contentType string) param.Field[io.Reader] {
|
|
return F[io.Reader](&file{reader, filename, contentType})
|
|
}
|
|
|
|
type file struct {
|
|
io.Reader
|
|
name string
|
|
contentType string
|
|
}
|
|
|
|
func (f *file) ContentType() string { return f.contentType }
|
|
func (f *file) Filename() string { return f.name }
|