Documentation
ΒΆ
Overview ΒΆ
Example (Fasthttp_basicCall) ΒΆ
Example_fasthttp_basicCall demonstrates how to make a simple HTTP call using the FastHTTP adapter.
type RepoInfo struct {
ID int `json:"id"`
Name string `json:"name"`
}
// Create a mocked endpoint for the example
endpoint := NewEndpoint("GithubAPI").
Request(BaseURL("https://api.github.com")).
Response(
MockedRes(func(res Response) {
res.SetBody(io.NopCloser(strings.NewReader(`{"id": 12345, "name": "withttp"}`)))
res.SetStatus(http.StatusOK)
}),
)
call := NewCall[RepoInfo](NewMockHttpClientAdapter()).
URI("/repos/user/repo").
Method(http.MethodGet).
Header("User-Agent", "withttp-example", false).
ParseJSON().
ExpectedStatusCodes(http.StatusOK)
err := call.CallEndpoint(context.Background(), endpoint)
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("Repo ID: %d, Name: %s\n", call.BodyParsed.ID, call.BodyParsed.Name)
Output: Repo ID: 12345, Name: withttp
Example (Fasthttp_postRequest) ΒΆ
Example_fasthttp_postRequest demonstrates how to make a POST request with JSON body using FastHTTP.
type CreateRequest struct {
Title string `json:"title"`
Body string `json:"body"`
}
type CreateResponse struct {
ID int `json:"id"`
URL string `json:"url"`
}
// Create a mocked endpoint for the example
endpoint := NewEndpoint("API").
Request(BaseURL("https://api.example.com")).
Response(
MockedRes(func(res Response) {
res.SetBody(
io.NopCloser(
strings.NewReader(`{"id": 42, "url": "https://api.example.com/items/42"}`),
),
)
res.SetStatus(http.StatusCreated)
}),
)
payload := CreateRequest{
Title: "Example Item",
Body: "This is an example",
}
call := NewCall[CreateResponse](NewMockHttpClientAdapter()).
URI("/items").
Method(http.MethodPost).
ContentType(ContentTypeJSON).
Body(payload).
Header("Authorization", "Bearer token", true).
ParseJSON().
ExpectedStatusCodes(http.StatusCreated)
err := call.CallEndpoint(context.Background(), endpoint)
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("Created item ID: %d\n", call.BodyParsed.ID)
Output: Created item ID: 42
Example (Fasthttp_withHeaderFunc) ΒΆ
Example_fasthttp_withHeaderFunc demonstrates using header functions with FastHTTP.
type APIResponse struct {
Message string `json:"message"`
}
endpoint := NewEndpoint("API").
Request(BaseURL("https://api.example.com")).
Response(
MockedRes(func(res Response) {
res.SetBody(io.NopCloser(strings.NewReader(`{"message": "Hello"}`)))
res.SetStatus(http.StatusOK)
}),
)
call := NewCall[APIResponse](NewMockHttpClientAdapter()).
URI("/hello").
Method(http.MethodGet).
HeaderFunc(func() (key, value string, override bool) {
key = "X-Timestamp"
value = "2025-06-29T12:00:00Z"
override = true
return
}).
HeaderFunc(func() (key, value string, override bool) {
key = "X-Request-ID"
value = "req-12345"
override = true
return
}).
ParseJSON().
ExpectedStatusCodes(http.StatusOK)
err := call.CallEndpoint(context.Background(), endpoint)
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("Response: %s\n", call.BodyParsed.Message)
Output: Response: Hello
Example (MockEndpoint) ΒΆ
Example_mockEndpoint demonstrates how to create and use a mocked endpoint for testing.
type Order struct {
Amount float64 `json:"amount"`
Pair string `json:"pair"`
}
// Create a mocked endpoint that returns test data
mockEndpoint := NewEndpoint("MockExchange").
Request(BaseURL("http://example.com")).
Response(
MockedRes(func(res Response) {
res.SetBody(io.NopCloser(strings.NewReader(`{"amount": 100.5, "pair": "BTC/USD"}`)))
res.SetStatus(http.StatusOK)
}),
)
call := NewCall[Order](NewMockHttpClientAdapter()).
Method(http.MethodGet).
Header("Authorization", "Bearer token123", true).
ParseJSON().
ExpectedStatusCodes(http.StatusOK)
err := call.CallEndpoint(context.Background(), mockEndpoint)
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("Order amount: %.1f, Pair: %s\n", call.BodyParsed.Amount, call.BodyParsed.Pair)
Output: Order amount: 100.5, Pair: BTC/USD
Example (ParseCSV) ΒΆ
Example_parseCSV demonstrates parsing CSV response data.
type Repository struct {
Rank int
Name string
Stars int
}
csvData := `rank,name,stars
1,awesome-go,75000
2,gin,65000`
endpoint := NewEndpoint("RepoStats").
Request(BaseURL("https://api.example.com")).
Response(
MockedRes(func(res Response) {
res.SetBody(io.NopCloser(strings.NewReader(csvData)))
res.SetStatus(http.StatusOK)
}),
)
parser := csvparser.New[Repository](
csvparser.SeparatorComma,
csvparser.IntCol[Repository](
csvparser.QuoteNone,
nil,
func(x *Repository, rank int) { x.Rank = rank },
),
csvparser.StringCol[Repository](
csvparser.QuoteNone,
nil,
func(x *Repository, name string) { x.Name = name },
),
csvparser.IntCol[Repository](
csvparser.QuoteNone,
nil,
func(x *Repository, stars int) { x.Stars = stars },
),
)
call := NewCall[Repository](NewMockHttpClientAdapter()).
URI("/top-repos.csv").
Method(http.MethodGet).
ParseCSV(1, parser, func(repo Repository) bool { // skip 1 header line
fmt.Printf("Rank %d: %s (%d stars)\n", repo.Rank, repo.Name, repo.Stars)
return true // continue processing
}).
ExpectedStatusCodes(http.StatusOK)
err := call.CallEndpoint(context.Background(), endpoint)
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
Output: Rank 1: awesome-go (75000 stars) Rank 2: gin (65000 stars)
Example (ParseJSONEachRow) ΒΆ
Example_parseJSONEachRow demonstrates parsing JSON-each-row format responses.
type Trade struct {
Price float64 `json:"price"`
Volume float64 `json:"volume"`
}
mockData := `{"price": 50000.0, "volume": 1.5}
{"price": 51000.0, "volume": 0.8}`
mockEndpoint := NewEndpoint("TradesAPI").
Request(BaseURL("http://example.com")).
Response(
MockedRes(func(res Response) {
res.SetBody(io.NopCloser(strings.NewReader(mockData)))
res.SetStatus(http.StatusOK)
}),
)
var trades []Trade
call := NewCall[Trade](NewMockHttpClientAdapter()).
Method(http.MethodGet).
ParseJSONEachRow(func(trade Trade) bool {
trades = append(trades, trade)
return true // continue processing
}).
ExpectedStatusCodes(http.StatusOK)
err := call.CallEndpoint(context.Background(), mockEndpoint)
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("Processed %d trades\n", len(trades))
if len(trades) > 0 {
fmt.Printf("First trade: $%.0f, volume: %.1f\n", trades[0].Price, trades[0].Volume)
}
Output: Processed 2 trades First trade: $50000, volume: 1.5
Example (RequestStream_fromSlice) ΒΆ
Example_requestStream_fromSlice demonstrates streaming data from a slice to the server.
type DataPoint struct {
Timestamp int64 `json:"ts"`
Value float64 `json:"val"`
}
// Sample data to stream
data := []DataPoint{
{Timestamp: 1672531200, Value: 25.5},
{Timestamp: 1672531260, Value: 26.1},
{Timestamp: 1672531320, Value: 24.8},
}
stream := Slice[DataPoint](data)
mockEndpoint := NewEndpoint("DataIngestion").
Request(BaseURL("https://api.example.com")).
Response(
MockedRes(func(res Response) {
res.SetBody(io.NopCloser(strings.NewReader(`{"status": "received"}`)))
res.SetStatus(http.StatusOK)
}),
)
call := NewCall[any](NewMockHttpClientAdapter()).
URI("/data").
Method(http.MethodPost).
ContentType(ContentTypeJSONEachRow).
RequestStreamBody(
RequestStreamBody[any, DataPoint](stream),
).
ExpectedStatusCodes(http.StatusOK)
err := call.CallEndpoint(context.Background(), mockEndpoint)
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Println("Data streamed successfully")
Output: Data streamed successfully
Example (RequestStream_withSniffer) ΒΆ
Example_requestStream_withSniffer demonstrates streaming with request sniffing.
type Event struct {
Type string `json:"type"`
}
events := []Event{
{Type: "click"},
{Type: "view"},
}
stream := Slice[Event](events)
mockEndpoint := NewEndpoint("Analytics").
Request(BaseURL("https://api.example.com")).
Response(
MockedRes(func(res Response) {
res.SetBody(io.NopCloser(strings.NewReader(`{"processed": true}`)))
res.SetStatus(http.StatusOK)
}),
)
call := NewCall[any](NewMockHttpClientAdapter()).
URI("/events").
Method(http.MethodPost).
ContentType(ContentTypeJSONEachRow).
RequestSniffed(func(data []byte, err error) {
if err == nil {
// Simplify output to avoid JSON formatting issues
if strings.Contains(string(data), "click") {
fmt.Println("Sending click event")
} else if strings.Contains(string(data), "view") {
fmt.Println("Sending view event")
}
}
}).
RequestStreamBody(
RequestStreamBody[any, Event](stream),
).
ExpectedStatusCodes(http.StatusOK)
err := call.CallEndpoint(context.Background(), mockEndpoint)
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Println("Events processed")
Output: Sending click event Sending view event Events processed
Example (SingleCall) ΒΆ
Example_singleCall demonstrates making a simple HTTP GET request.
type RepoInfo struct {
ID int `json:"id"`
Name string `json:"name"`
}
// Create a mocked endpoint for the example
endpoint := NewEndpoint("GithubAPI").
Request(BaseURL("https://api.github.com")).
Response(
MockedRes(func(res Response) {
res.SetBody(io.NopCloser(strings.NewReader(`{"id": 12345, "name": "withttp"}`)))
res.SetStatus(http.StatusOK)
}),
)
call := NewCall[RepoInfo](NewMockHttpClientAdapter()).
URI("/repos/user/repo").
Method(http.MethodGet).
Header("User-Agent", "withttp-example", false).
ParseJSON().
ExpectedStatusCodes(http.StatusOK)
err := call.CallEndpoint(context.Background(), endpoint)
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("Repo ID: %d, Name: %s\n", call.BodyParsed.ID, call.BodyParsed.Name)
Output: Repo ID: 12345, Name: withttp
Example (SingleCall_directURL) ΒΆ
Example_singleCall_directURL demonstrates making a request directly to a URL without an endpoint.
type SimpleResponse struct {
Status string `json:"status"`
}
// For this example, we'll simulate a call but skip it in practice
// In real usage, you would just call without the skip
call := NewCall[SimpleResponse](NetHttp()).
URL("https://httpbin.org/json").
Method(http.MethodGet).
Header("User-Agent", "withttp-example", false).
ParseJSON().
ExpectedStatusCodes(http.StatusOK)
// For documentation purposes, we'll show what the call would look like
_ = call // Normally: err := call.Call(context.Background())
fmt.Println("This would make a direct HTTP call to the specified URL")
Output: This would make a direct HTTP call to the specified URL
Index ΒΆ
- Variables
- func B2S(data []byte) string
- func BtsIsset(bts []byte) bool
- func BytesEquals(a, b []byte) bool
- func ConfigureHeader(req Request, key, value string, override bool) error
- func ContentTypeCodec(c string) (codec.Codec, error)
- func CreateAuthorizationHeader(kind authHeaderKind, user, pass string) (string, error)
- func EncodeBody(payload any, contentType string) (bts []byte, err error)
- func EncodeStream[T any](ctx context.Context, r rangeable[T], req Request, encoder codec.Encoder, ...) (err error)
- func ReadJSON[T any](rc io.ReadCloser) (res T, err error)
- func ReadStream[T any](rc io.ReadCloser, factory StreamFactory[T], fn func(T) bool) (err error)
- func ReadStreamChan[T any](rc io.ReadCloser, factory StreamFactory[T], out chan<- T) (err error)
- func S2B(s string) []byte
- func StrIsset(s string) bool
- type CSVStream
- type Call
- func (c *Call[T]) Assert(fn func(req Response) error) *Call[T]
- func (c *Call[T]) BasicAuth(user, pass string) *Call[T]
- func (c *Call[T]) Body(payload any) *Call[T]
- func (c *Call[T]) BodyStream(rc io.ReadWriteCloser, bodySize int) *Call[T]
- func (c *Call[T]) Call(ctx context.Context) (err error)
- func (c *Call[T]) CallEndpoint(ctx context.Context, e *Endpoint) (err error)
- func (c *Call[T]) ContentLength(length int) *Call[T]
- func (c *Call[T]) ContentType(ct string) *Call[T]
- func (c *Call[T]) ExpectedStatusCodes(states ...int) *Call[T]
- func (c *Call[T]) Header(key, value string, override bool) *Call[T]
- func (c *Call[T]) HeaderFunc(fn func() (key, value string, override bool)) *Call[T]
- func (c *Call[T]) IgnoreResponseBody() *Call[T]
- func (c *Call[T]) Log(w io.Writer)
- func (c *Call[T]) Method(method string) *Call[T]
- func (c *Call[T]) ParseCSV(ignoreLines int, parser csvparser.Parser[T], fn func(T) bool) *Call[T]
- func (c *Call[T]) ParseJSON() *Call[T]
- func (c *Call[T]) ParseJSONEachRow(fn func(T) bool) *Call[T]
- func (c *Call[T]) ParseJSONEachRowChan(out chan<- T) *Call[T]
- func (c *Call[T]) ParseStream(factory StreamFactory[T], fn func(T) bool) *Call[T]
- func (c *Call[T]) ParseStreamChan(factory StreamFactory[T], ch chan<- T) *Call[T]
- func (c *Call[T]) Query(k, v string) *Call[T]
- func (c *Call[T]) RawBody(payload []byte) *Call[T]
- func (c *Call[T]) ReadBody() *Call[T]
- func (c *Call[T]) Request(opts ...ReqOption) *Call[T]
- func (c *Call[T]) RequestSniffed(fn func([]byte, error)) *Call[T]
- func (c *Call[T]) RequestStreamBody(opt StreamCallReqOptionFunc[T]) *Call[T]
- func (c *Call[T]) Response(opts ...ResOption) *Call[T]
- func (c *Call[T]) URI(raw string) *Call[T]
- func (c *Call[T]) URL(raw string) *Call[T]
- func (c *Call[T]) WithLogger(l logger) *Call[T]
- type CallReqOption
- type CallReqOptionFunc
- func BasicAuth[T any](user, pass string) CallReqOptionFunc[T]
- func Body[T any](payload any) CallReqOptionFunc[T]
- func BodyStream[T any](rc io.ReadWriteCloser, bodySize int) CallReqOptionFunc[T]
- func ContentType[T any](ct string) CallReqOptionFunc[T]
- func Header[T any](k, v string, override bool) CallReqOptionFunc[T]
- func HeaderFunc[T any](fn func() (string, string, bool)) CallReqOptionFunc[T]
- func Method[T any](method string) CallReqOptionFunc[T]
- func Query[T any](k, v string) CallReqOptionFunc[T]
- func RawBody[T any](payload []byte) CallReqOptionFunc[T]
- func RequestSniffer[T any](fn func([]byte, error)) CallReqOptionFunc[T]
- func URI[T any](raw string) CallReqOptionFunc[T]
- func URL[T any](raw string) CallReqOptionFunc[T]
- type CallResOption
- type CallResOptionFunc
- func Assertion[T any](fn func(res Response) error) CallResOptionFunc[T]
- func CloseBody[T any]() CallResOptionFunc[T]
- func ExpectedStatusCodes[T any](states ...int) CallResOptionFunc[T]
- func IgnoredBody[T any]() CallResOptionFunc[T]
- func ParseBodyRaw[T any]() CallResOptionFunc[T]
- func ParseJSON[T any]() CallResOptionFunc[T]
- func ParseStream[T any](factory StreamFactory[T], fn func(T) bool) CallResOptionFunc[T]
- func ParseStreamChan[T any](factory StreamFactory[T], out chan<- T) CallResOptionFunc[T]
- type Channel
- type Client
- type Endpoint
- type FastHttpHttpClientAdapter
- type JSONEachRowStream
- type MockEndpoint
- type MockHttpClientAdapter
- type NativeHttpClientAdapter
- type NewLineStream
- type ProxyStream
- type ReqOption
- type ReqOptionFunc
- type Request
- type ResOption
- type ResOptionFunc
- type Response
- type Slice
- type Stream
- type StreamCallReqOption
- type StreamCallReqOptionFunc
- type StreamFactory
- type StreamFactoryFunc
- type StreamFromReader
Examples ΒΆ
Constants ΒΆ
This section is empty.
Variables ΒΆ
var ( ContentTypeJSON string = "application/json" ContentTypeJSONEachRow string = "application/jsoneachrow" )
var ( ErrAssertion = errors.New("assertion was unmet") ErrUnexpectedStatusCode = errors.Wrap(ErrAssertion, "unexpected status code") ErrInsufficientParams = errors.New("insufficient params") )
var (
ErrUnknownContentType = errors.New("unknown content type")
)
Functions ΒΆ
func BytesEquals ΒΆ added in v0.3.0
func CreateAuthorizationHeader ΒΆ added in v0.5.0
func EncodeBody ΒΆ added in v0.2.0
func EncodeStream ΒΆ added in v0.3.0
func ReadStream ΒΆ
func ReadStream[T any](rc io.ReadCloser, factory StreamFactory[T], fn func(T) bool) (err error)
func ReadStreamChan ΒΆ
func ReadStreamChan[T any](rc io.ReadCloser, factory StreamFactory[T], out chan<- T) (err error)
Types ΒΆ
type CSVStream ΒΆ added in v0.6.0
type CSVStream[T any] struct { // contains filtered or unexported fields }
type Call ΒΆ
type Call[T any] struct { Req Request Res Response BodyRaw []byte BodyParsed T ReqContentType string ReqBodyRaw []byte ReqIsStream bool ReqStreamWriter func(ctx context.Context, c *Call[T], res Request, wg *sync.WaitGroup) error ReqStreamSniffer func([]byte, error) ReqShouldSniff bool // contains filtered or unexported fields }
func (*Call[T]) BasicAuth ΒΆ added in v0.8.0
func (c *Call[T]) BasicAuth(user, pass string) *Call[T]
func (*Call[T]) BodyStream ΒΆ added in v0.8.0
func (c *Call[T]) BodyStream(rc io.ReadWriteCloser, bodySize int) *Call[T]
BodyStream receives a stream of data to set on the request. Second parameter `bodySize` indicates the estimated content-length of this stream. Required when employing fasthttp http client.
func (*Call[T]) CallEndpoint ΒΆ added in v0.2.0
func (*Call[T]) ContentLength ΒΆ added in v0.8.0
func (c *Call[T]) ContentLength(length int) *Call[T]
func (*Call[T]) ContentType ΒΆ added in v0.8.0
func (c *Call[T]) ContentType(ct string) *Call[T]
func (*Call[T]) ExpectedStatusCodes ΒΆ added in v0.8.0
func (c *Call[T]) ExpectedStatusCodes(states ...int) *Call[T]
func (*Call[T]) HeaderFunc ΒΆ added in v0.8.0
func (*Call[T]) IgnoreResponseBody ΒΆ added in v0.8.0
func (c *Call[T]) IgnoreResponseBody() *Call[T]
func (*Call[T]) ParseJSONEachRow ΒΆ added in v0.8.0
func (c *Call[T]) ParseJSONEachRow(fn func(T) bool) *Call[T]
func (*Call[T]) ParseJSONEachRowChan ΒΆ added in v0.8.0
func (c *Call[T]) ParseJSONEachRowChan(out chan<- T) *Call[T]
func (*Call[T]) ParseStream ΒΆ added in v0.8.0
func (c *Call[T]) ParseStream(factory StreamFactory[T], fn func(T) bool) *Call[T]
func (*Call[T]) ParseStreamChan ΒΆ added in v0.8.0
func (c *Call[T]) ParseStreamChan(factory StreamFactory[T], ch chan<- T) *Call[T]
func (*Call[T]) RequestSniffed ΒΆ added in v0.8.0
func (*Call[T]) RequestStreamBody ΒΆ added in v0.8.0
func (c *Call[T]) RequestStreamBody(opt StreamCallReqOptionFunc[T]) *Call[T]
func (*Call[T]) WithLogger ΒΆ added in v0.7.0
func (c *Call[T]) WithLogger(l logger) *Call[T]
type CallReqOption ΒΆ added in v0.3.0
type CallReqOptionFunc ΒΆ added in v0.2.0
func BodyStream ΒΆ added in v0.8.0
func BodyStream[T any](rc io.ReadWriteCloser, bodySize int) CallReqOptionFunc[T]
func ContentType ΒΆ added in v0.2.0
func HeaderFunc ΒΆ added in v0.8.0
func RequestSniffer ΒΆ added in v0.8.0
type CallResOption ΒΆ
type CallResOptionFunc ΒΆ
func ExpectedStatusCodes ΒΆ added in v0.8.0
func IgnoredBody ΒΆ added in v0.8.0
func IgnoredBody[T any]() CallResOptionFunc[T]
func ParseBodyRaw ΒΆ added in v0.8.0
func ParseBodyRaw[T any]() CallResOptionFunc[T]
func ParseStream ΒΆ added in v0.8.0
func ParseStreamChan ΒΆ added in v0.8.0
func ParseStreamChan[T any](factory StreamFactory[T], out chan<- T) CallResOptionFunc[T]
type Endpoint ΒΆ
type Endpoint struct {
// contains filtered or unexported fields
}
func NewEndpoint ΒΆ
type FastHttpHttpClientAdapter ΒΆ
type FastHttpHttpClientAdapter struct {
// contains filtered or unexported fields
}
func Fasthttp ΒΆ added in v0.8.0
func Fasthttp() *FastHttpHttpClientAdapter
func FasthttpClient ΒΆ added in v0.8.0
func FasthttpClient(cli *fasthttp.Client) *FastHttpHttpClientAdapter
type JSONEachRowStream ΒΆ
type JSONEachRowStream[T any] struct { // contains filtered or unexported fields }
func (*JSONEachRowStream[T]) Data ΒΆ
func (s *JSONEachRowStream[T]) Data() T
func (*JSONEachRowStream[T]) Err ΒΆ
func (s *JSONEachRowStream[T]) Err() error
type MockEndpoint ΒΆ
type MockEndpoint struct{}
type MockHttpClientAdapter ΒΆ
type MockHttpClientAdapter struct{}
func NewMockHttpClientAdapter ΒΆ
func NewMockHttpClientAdapter() *MockHttpClientAdapter
type NativeHttpClientAdapter ΒΆ
type NativeHttpClientAdapter struct {
// contains filtered or unexported fields
}
func NetHttp ΒΆ added in v0.8.0
func NetHttp() *NativeHttpClientAdapter
func NetHttpClient ΒΆ added in v0.8.0
func NetHttpClient(cli *http.Client) *NativeHttpClientAdapter
type NewLineStream ΒΆ added in v0.4.0
type NewLineStream struct {
// contains filtered or unexported fields
}
type ProxyStream ΒΆ added in v0.4.0
type ProxyStream struct {
// contains filtered or unexported fields
}
type ReqOptionFunc ΒΆ
func (ReqOptionFunc) Configure ΒΆ
func (f ReqOptionFunc) Configure(req Request) error
type Request ΒΆ
type Request interface {
Method() string
SetMethod(string)
SetURL(*url.URL)
// SetBodyStream sets the stream of body data belonging to a request. bodySize parameter is needed
// when using fasthttp implementation.
SetBodyStream(rc io.ReadWriteCloser, bodySize int)
SetBody([]byte)
Body() []byte
BodyStream() io.ReadWriteCloser
URL() *url.URL
// contains filtered or unexported methods
}
type ResOptionFunc ΒΆ
func (ResOptionFunc) Parse ΒΆ
func (f ResOptionFunc) Parse(res Response) error
type Response ΒΆ
type Response interface {
Status() int
StatusText() string
Body() io.ReadCloser
SetBody(rc io.ReadCloser)
SetStatus(status int)
// contains filtered or unexported methods
}
type Stream ΒΆ
func NewCSVStream ΒΆ added in v0.6.0
type StreamCallReqOption ΒΆ added in v0.3.0
type StreamCallReqOption[T any] interface { CallReqOption[T] // contains filtered or unexported methods }
type StreamCallReqOptionFunc ΒΆ added in v0.3.0
func RequestStreamBody ΒΆ added in v0.8.0
func RequestStreamBody[T, U any](r rangeable[U]) StreamCallReqOptionFunc[T]
type StreamFactory ΒΆ
func NewCSVStreamFactory ΒΆ added in v0.6.0
func NewJSONEachRowStreamFactory ΒΆ
func NewJSONEachRowStreamFactory[T any]() StreamFactory[T]
func NewNewLineStreamFactory ΒΆ added in v0.4.0
func NewNewLineStreamFactory() StreamFactory[[]byte]