Escape-Technologies / graphman

Quikly scaffold a postman collection for a GraphQL API. Compatible with Postman & Insomnia.
MIT License
240 stars 12 forks source link

feat: improve error message when the request fails #29

Closed jmfayard closed 1 year ago

jmfayard commented 1 year ago

Hello, graphman worked with my local backend, nice <3

I tried to do that

# create a new token
$ open https://github.com/settings/tokens/new
$ export GITHUB_TOKEN="xxxxxxxx"
# works for me
$ curl -H "Authorization: bearer $GITHUB_TOKEN" https://api.github.com/graphql
$ alias graphman="deno  run  https://deno.land/x/graphman@v1.0.3/src/index.ts"
$ graphman https://api.github.com/graphql --auth="bearer $GTHUB_TOKEN"
Creating the postman collection for https://api.github.com/graphql
⚠️  ️Deno requests net access to "api.github.com". Run again with --allow-net to bypass this prompt.
   Allow? [y/n (y = yes allow, n = no deny)]  y
error: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading '__schema')
  const queryTypeName = introspectionQuery.__schema.queryType
                                           ^
    at createPostmanCollection (https://deno.land/x/graphman@v1.0.3/src/lib.ts:308:44)
    at async https://deno.land/x/graphman@v1.0.3/src/index.ts:38:20

Reference: https://docs.github.com/en/graphql/guides/forming-calls-with-graphql#communicating-with-graphql

EDIT:

The actual issue is the lack of a good error message when the http call fails

As it turns out it was a typo (thanks for the comments)

$ graphman https://api.github.com/graphql --auth="bearer $GITHUB_TOKEN"
Collection saved at ./out/api.github.com-GraphMan.postman_collection.json
Import it in postman and complete the queries ! 🚀
nohehf commented 1 year ago

Thanks for reporting, will investigate ASAP!

nullswan commented 1 year ago
https://api.github.com/graphql --auth="bearer $GTHUB_TOKEN"

Hello @jmfayard,

On my end everything is working properly, can you take away my doubt and re-try with a correct environment variable ? I suspect a typo error as $GTHUB_TOKEN is missing a I.

@nohehf, maybe it miss a bit of feedback whenever the request failed to get a correct introspection. - Here it would deny the request for invalid auth. I suggest that you print the response received on 401, 500 etc, as well as when the payload is a valid graphql payload and contains an error key.

nohehf commented 1 year ago

Oh yes, thanks @c3b5aw it must be a typo. You're right, we should raise a special error for this. I'll make sure to do it in the refactor #2

jmfayard commented 1 year ago

@c3b5aw @nohehf it was indeed a typo and the issue is the cryptic error message, I updated the ticket.

Another question: could you clarify in the README how to bypass those warnings?

It was unclear to me where to put the arguments, I'm not familiar with deno.

⚠️  ️Deno requests net access to "api.github.com". Run again with --allow-net to bypass this prompt.
   Allow? [y/n (y = yes allow, n = no deny)]  y
⚠️  ️Deno requests read access to "./out/". Run again with --allow-read to bypass this prompt.
   Allow? [y/n (y = yes allow, n = no deny)]  y
⚠️  ️Deno requests write access to "./out/api.github.com-GraphMan.postman_collection.json". Run again with --allow-write to bypass this prompt.
   Allow? [y/n (y = yes allow, n = no deny)]  y
Collection saved at ./out/api.github.com-GraphMan.postman_collection.json
nohehf commented 1 year ago

Nice! It's deno run --allow-net --allow-read ...: https://deno.land/manual/getting_started/command_line_interface

nohehf commented 1 year ago

Hey @jmfayard, this is merged !

jmfayard commented 1 year ago

😲👋