@@ -2,6 +2,7 @@ package handlers
22
33import (
44 "encoding/json"
5+ "errors"
56 "fmt"
67 "log/slog"
78 "net/http"
@@ -58,18 +59,19 @@ func (h APIHandler) Bind(w http.ResponseWriter, req *http.Request) {
5859
5960 binding , err := h .serviceBroker .Bind (req .Context (), instanceID , bindingID , details , asyncAllowed )
6061 if err != nil {
61- switch err := err .(type ) {
62- case * apiresponses.FailureResponse :
63- statusCode := err .ValidatedStatusCode (slog .New (logger ))
64- errorResponse := err .ErrorResponse ()
65- if err == apiresponses .ErrInstanceDoesNotExist {
62+ var apiErr * apiresponses.FailureResponse
63+ switch {
64+ case errors .As (err , & apiErr ):
65+ statusCode := apiErr .ValidatedStatusCode (slog .New (logger ))
66+ errorResponse := apiErr .ErrorResponse ()
67+ if errors .Is (apiErr , apiresponses .ErrInstanceDoesNotExist ) {
6668 // work around ErrInstanceDoesNotExist having different pre-refactor behaviour to other actions
6769 errorResponse = apiresponses.ErrorResponse {
68- Description : err .Error (),
70+ Description : apiErr .Error (),
6971 }
7072 statusCode = http .StatusNotFound
7173 }
72- logger .Error (err .LoggerAction (), err )
74+ logger .Error (apiErr .LoggerAction (), err )
7375 h .respond (w , statusCode , requestId , errorResponse )
7476 default :
7577 logger .Error (unknownErrorKey , err )
0 commit comments