shurcooL / githubv4

Package githubv4 is a client library for accessing GitHub GraphQL API v4 (https://docs.github.com/en/graphql).
MIT License
1.11k stars 89 forks source link

Parse 502 status code response as a GraphQL response. #38

Open dmitshur opened 5 years ago

dmitshur commented 5 years ago

As reported by @cjwagner in https://github.com/shurcooL/graphql/issues/29#issuecomment-424103540 and recently reproduced by me, GitHub GraphQL API v4 can return a response with status code 502 that includes a valid GraphQL response:

{
    "data":"null",
    "errors":[
        {
            "message":"Something went wrong while executing your query. This may be the result of a timeout, or it could be a GitHub bug. Please include `8FF2:721B:31D84D5:6EF58BD:5BCF3079` when reporting this issue."
        }
    ]
}

(I'm a little surprised and concerned that data field is a string "null" rather than a JSON null value. It's still valid JSON, but... According to GraphQL spec, "If an error was encountered during the execution that prevented a valid response, the data entry in the response should be null.")

We can parse it as such, instead of returning a generic "non-200 OK status code" error:

image

This may depend on shurcooL/graphql#5 being resolved, or maybe there's a shorter path to getting this done.

dmitshur commented 4 years ago

Another use case is for detecting when a rate limit is hit. According to https://github.com/shurcooL/githubv4/issues/57#issue-569538004, GitHub returns HTTP 429 status code in those cases.

MichaelMure commented 4 years ago

According to #57 (comment), GitHub returns HTTP 429 status code in those cases.

I actually don't know, it's just what I expected to happen.