Compare commits

...

2 Commits

Author SHA1 Message Date
734dea4dff fix go version 2026-07-08 09:30:33 +02:00
5d7050018f fix #79: remove compatibility header 2026-07-08 09:28:28 +02:00
3 changed files with 28 additions and 2 deletions

2
go.mod
View File

@@ -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

View File

@@ -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 {

View File

@@ -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)
}