package keycloak import ( "errors" "net/http" "github.com/Nerzal/gocloak/v13" ) type Config struct { Env string AuthServerAddr string Realm string ClientId string ClientSecret string } func New(c *Config) (*Client, error) { cli := &Client{ client: gocloak.NewClient(c.AuthServerAddr), jwtManager: NewJWTManager(), env: c.Env, realm: c.Realm, clientId: c.ClientId, clientSecret: c.ClientSecret, } return cli, nil } func (k *Client) handleError(err error) error { var apiErr *gocloak.APIError if !errors.As(err, &apiErr) { return ErrInternal } switch apiErr.Code { case http.StatusNotFound: return ErrRealmClientNotFound case http.StatusUnauthorized: return ErrRealmClientUnauthorized case http.StatusConflict: return ErrAlreadyExists case http.StatusBadRequest: return ErrBadRequest default: return ErrInternal } }