mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 08:35:43 -06:00
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
|
package loki
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"io"
|
||
|
"net/http"
|
||
|
|
||
|
"github.com/grafana/grafana/pkg/infra/log"
|
||
|
)
|
||
|
|
||
|
type mockRequestCallback func(req *http.Request)
|
||
|
|
||
|
type mockedRoundTripper struct {
|
||
|
statusCode int
|
||
|
responseBytes []byte
|
||
|
contentType string
|
||
|
requestCallback mockRequestCallback
|
||
|
}
|
||
|
|
||
|
func (mockedRT *mockedRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
|
||
|
requestCallback := mockedRT.requestCallback
|
||
|
if requestCallback != nil {
|
||
|
requestCallback(req)
|
||
|
}
|
||
|
|
||
|
header := http.Header{}
|
||
|
header.Add("Content-Type", mockedRT.contentType)
|
||
|
return &http.Response{
|
||
|
StatusCode: mockedRT.statusCode,
|
||
|
Header: header,
|
||
|
Body: io.NopCloser(bytes.NewReader(mockedRT.responseBytes)),
|
||
|
}, nil
|
||
|
}
|
||
|
|
||
|
func makeMockedAPI(statusCode int, contentType string, responseBytes []byte, requestCallback mockRequestCallback) *LokiAPI {
|
||
|
client := http.Client{
|
||
|
Transport: &mockedRoundTripper{statusCode: statusCode, contentType: contentType, responseBytes: responseBytes, requestCallback: requestCallback},
|
||
|
}
|
||
|
|
||
|
return newLokiAPI(&client, "http://localhost:9999", log.New("test"), "")
|
||
|
}
|