Skip to content

Commit

Permalink
fix: improve error reporting from OpenAPI
Browse files Browse the repository at this point in the history
  • Loading branch information
aeneasr committed May 2, 2022
1 parent d11a9a9 commit 8a1009b
Show file tree
Hide file tree
Showing 6 changed files with 160 additions and 47 deletions.
4 changes: 3 additions & 1 deletion cmd/identities/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package identities
import (
"fmt"

"github.com/ory/x/cloudx"

"github.com/spf13/cobra"

"github.com/ory/kratos/cmd/cliclient"
Expand Down Expand Up @@ -46,7 +48,7 @@ func NewDeleteIdentityCmd(root *cobra.Command) *cobra.Command {
for _, a := range args {
_, err := c.V0alpha2Api.AdminDeleteIdentity(cmd.Context(), a).Execute()
if err != nil {
errs = append(errs, err)
errs = append(errs, cloudx.PrintOpenAPIError(cmd, err))
continue
}
deleted = append(deleted, a)
Expand Down
4 changes: 3 additions & 1 deletion cmd/identities/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package identities
import (
"fmt"

"github.com/ory/x/cloudx"

kratos "github.com/ory/kratos-client-go"
"github.com/ory/kratos/x"
"github.com/ory/x/cmdx"
Expand Down Expand Up @@ -69,7 +71,7 @@ func NewGetIdentityCmd(root *cobra.Command) *cobra.Command {
Execute()

if x.SDKError(err) != nil {
failed[id] = err
failed[id] = cloudx.PrintOpenAPIError(cmd, err)
continue
}

Expand Down
13 changes: 3 additions & 10 deletions cmd/identities/import.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package identities

import (
"context"
"encoding/json"
"fmt"
"net/http"

kratos "github.com/ory/kratos-client-go"

"github.com/ory/x/cloudx"
"github.com/ory/x/cmdx"

"github.com/spf13/cobra"
Expand Down Expand Up @@ -67,13 +66,6 @@ WARNING: Importing credentials is not yet supported.`,
}

for src, i := range is {
err = ValidateIdentity(cmd, src, i, func(ctx context.Context, id string) (map[string]interface{}, *http.Response, error) {
return c.V0alpha2Api.GetJsonSchema(ctx, id).Execute()
})
if err != nil {
return err
}

var params kratos.AdminCreateIdentityBody
err = json.Unmarshal([]byte(i), &params)
if err != nil {
Expand All @@ -83,11 +75,12 @@ WARNING: Importing credentials is not yet supported.`,

ident, _, err := c.V0alpha2Api.AdminCreateIdentity(cmd.Context()).AdminCreateIdentityBody(params).Execute()
if err != nil {
failed[src] = err
failed[src] = cloudx.PrintOpenAPIError(cmd, err)
} else {
imported = append(imported, *ident)
}
}

if len(imported) == 1 {
cmdx.PrintRow(cmd, (*outputIdentity)(&imported[0]))
} else {
Expand Down
5 changes: 3 additions & 2 deletions cmd/identities/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import (
"fmt"
"strconv"

"github.com/ory/x/cloudx"

"github.com/ory/x/cmdx"

"github.com/spf13/cobra"
Expand Down Expand Up @@ -63,8 +65,7 @@ func NewListIdentitiesCmd(root *cobra.Command) *cobra.Command {

identities, _, err := req.Execute()
if err != nil {
_, _ = fmt.Fprintf(cmd.ErrOrStderr(), "Could not list identities: %+v\n", err)
return cmdx.FailSilently(cmd)
return cloudx.PrintOpenAPIError(cmd, err)
}

cmdx.PrintTable(cmd, &outputIdentityCollection{
Expand Down
28 changes: 25 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ require (
github.com/ory/kratos-client-go v0.6.3-alpha.1
github.com/ory/mail/v3 v3.0.0
github.com/ory/nosurf v1.2.7
github.com/ory/x v0.0.375
github.com/ory/x v0.0.380
github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2
github.com/pkg/errors v0.9.1
github.com/pquerna/otp v1.3.0
Expand All @@ -100,7 +100,8 @@ require (

require (
cloud.google.com/go v0.99.0 // indirect
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 // indirect
github.com/DataDog/datadog-go v4.8.2+incompatible // indirect
github.com/Masterminds/goutils v1.1.0 // indirect
github.com/Masterminds/semver v1.5.0 // indirect
github.com/Masterminds/semver/v3 v3.1.1 // indirect
Expand Down Expand Up @@ -175,6 +176,7 @@ require (
github.com/gobuffalo/validate/v3 v3.3.1 // indirect
github.com/goccy/go-yaml v1.9.5 // indirect
github.com/gofrs/flock v0.8.1 // indirect
github.com/gofrs/uuid/v3 v3.1.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/glog v1.0.0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
Expand All @@ -190,6 +192,7 @@ require (
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-hclog v1.0.0 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
Expand All @@ -198,6 +201,7 @@ require (
github.com/hashicorp/serf v0.9.6 // indirect
github.com/huandu/xstrings v1.2.0 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/instana/go-sensor v1.41.1 // indirect
github.com/jackc/chunkreader/v2 v2.0.1 // indirect
github.com/jackc/pgconn v1.10.1 // indirect
github.com/jackc/pgio v1.0.0 // indirect
Expand Down Expand Up @@ -242,6 +246,11 @@ require (
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.0.2 // indirect
github.com/opencontainers/runc v1.0.2 // indirect
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 // indirect
github.com/openzipkin/zipkin-go v0.4.0 // indirect
github.com/ory/client-go v0.0.1-alpha.138 // indirect
github.com/ory/viper v1.7.5 // indirect
github.com/pborman/uuid v1.2.1 // indirect
github.com/pelletier/go-toml v1.9.4 // indirect
Expand All @@ -266,20 +275,27 @@ require (
github.com/spf13/cast v1.4.1 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/viper v1.10.0 // indirect
github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693 // indirect
github.com/subosito/gotenv v1.2.0 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.0 // indirect
github.com/timtadh/data-structures v0.5.3 // indirect
github.com/timtadh/lexmachine v0.2.2 // indirect
github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect
github.com/toqueteos/webbrowser v1.2.0 // indirect
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
github.com/urfave/cli v1.22.5 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect
github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c // indirect
go.elastic.co/apm v1.15.0 // indirect
go.elastic.co/apm/module/apmhttp v1.15.0 // indirect
go.elastic.co/apm/module/apmot v1.15.0 // indirect
go.elastic.co/fastjson v1.1.0 // indirect
go.etcd.io/bbolt v1.3.5 // indirect
go.etcd.io/etcd/api/v3 v3.5.1 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.5.1 // indirect
Expand All @@ -298,12 +314,17 @@ require (
go.opentelemetry.io/contrib/propagators/jaeger v1.4.0 // indirect
go.opentelemetry.io/contrib/samplers/jaegerremote v0.0.0-20220314184135-32895002a444 // indirect
go.opentelemetry.io/otel v1.6.3 // indirect
go.opentelemetry.io/otel/bridge/opentracing v1.6.3 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.5.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.3 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.6.3 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.6.3 // indirect
go.opentelemetry.io/otel/internal/metric v0.27.0 // indirect
go.opentelemetry.io/otel/metric v0.27.0 // indirect
go.opentelemetry.io/otel/sdk v1.6.3 // indirect
go.opentelemetry.io/otel/trace v1.6.3 // indirect
go.uber.org/atomic v1.9.0 // indirect
go.opentelemetry.io/proto/otlp v0.15.0 // indirect
go.uber.org/atomic v1.7.0 // indirect
go.uber.org/multierr v1.7.0 // indirect
go.uber.org/zap v1.17.0 // indirect
golang.org/x/mod v0.6.0-dev.0.20211013180041-c96bc1413d57 // indirect
Expand All @@ -316,6 +337,7 @@ require (
google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa // indirect
google.golang.org/grpc v1.45.0 // indirect
google.golang.org/protobuf v1.28.0 // indirect
gopkg.in/DataDog/dd-trace-go.v1 v1.38.0 // indirect
gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/cheggaaa/pb.v1 v1.0.28 // indirect
Expand Down
Loading

0 comments on commit 8a1009b

Please sign in to comment.