mirror of
https://codeberg.org/scip/esctl.git
synced 2026-08-24 20:04:19 +02:00
Compare commits
2 Commits
55a1005857
...
fix/es8-he
| Author | SHA1 | Date | |
|---|---|---|---|
| 734dea4dff | |||
| 5d7050018f |
2
go.mod
2
go.mod
@@ -14,7 +14,7 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
module codeberg.org/scip/esctl
|
||||
|
||||
go 1.26.4
|
||||
go 1.26
|
||||
|
||||
require (
|
||||
github.com/MichaelMure/go-term-markdown v0.1.4
|
||||
|
||||
@@ -189,6 +189,7 @@ func (cluster *Cluster) getDefaultOptions() []elasticsearch.Option {
|
||||
cluster.getTransport(),
|
||||
elastictransport.WithHeader(headers),
|
||||
),
|
||||
elasticsearch.WithCompatibilityMode(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,7 +204,9 @@ func (cluster *Cluster) getTransport() elastictransport.Option {
|
||||
)
|
||||
}
|
||||
|
||||
return elastictransport.WithTransport(transport)
|
||||
return elastictransport.WithTransport(
|
||||
&CompatibilityTransport{Transport: transport},
|
||||
)
|
||||
}
|
||||
|
||||
func (conf *Config) SetupES() error {
|
||||
|
||||
@@ -53,6 +53,11 @@ func (t *DebugTransport) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||
contentline = buf.String()
|
||||
}
|
||||
|
||||
if req.Header.Get("Accept") != "" {
|
||||
req.Header.Del("Accept")
|
||||
req.Header.Add("Accept", "application/json")
|
||||
}
|
||||
|
||||
slog.Info("req", "host", req.URL.Host, "uri", req.URL.Path,
|
||||
"body", content, "bodyline", contentline,
|
||||
"headers", req.Header,
|
||||
@@ -60,3 +65,21 @@ func (t *DebugTransport) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||
|
||||
return t.Transport.RoundTrip(req)
|
||||
}
|
||||
|
||||
// Fixes https://codeberg.org/scip/esctl/issues/79:
|
||||
// the API client has this Accept header hardcoded everywhere:
|
||||
// req.Header.Set("Accept", "application/vnd.elasticsearch+json;compatible-with=9")
|
||||
// While this works pretty well with ES9, it doesn't with ES8. So, we replace
|
||||
// this header with a new one without the compatibility part.
|
||||
type CompatibilityTransport struct {
|
||||
Transport http.RoundTripper
|
||||
}
|
||||
|
||||
func (t *CompatibilityTransport) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||
if req.Header.Get("Accept") != "" {
|
||||
req.Header.Del("Accept")
|
||||
req.Header.Add("Accept", "application/json")
|
||||
}
|
||||
|
||||
return t.Transport.RoundTrip(req)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user