1

On my website, I have tried to implement a way to test to see if a users Github webhooks are set up properly. However, when I send the POST request to test the hooks, it returns a 422 error. I'm not sure why that comes up since the POST function I use is just copy pasted from all my other POST/GET functions to Github. Below I have shown the relevant code.

My getHook function does work and returns the list of hooks that user has.

const [ hookIds, setHookIds] = useState([]);

    const handleGet = () => {
        getHook(token, project[0], project[1]).then((m) => {
            console.log(m);
            setHookIds(m);
        });
    }

    const handleTest = () => {
        for (var i = 0; i < hookIds.length; i ++) {
            testHook(token, project[0], project[1], hookIds[i]['id']).then((m) => {
                console.log(m);
            });
        }
    }


export var getHook = async (access_token, name, creator) => {
    console.log("get hooks for user: " + creator + " and repo: " + name)
    return axios.get("https://api.github.com/repos/" + creator + "/" + name + "/hooks",  
        {
            headers: {
            'Accept': 'application/vnd.github.v3+json',
            'Authorization': 'token ' + access_token
            }
        })
    .then(response => {
        console.log("axios gets: " + response.data)
        return response.data;
    })
}

export var testHook = async (access_token, name, creator, hookid) => {
    console.log("test hook for user: " + creator + " and repo: " + name + "and hook id: " + hookid)
    return axios.post("https://api.github.com/repos/" + creator + "/" + name + "/hooks/" + hookid + "/tests",  
        {
            headers: {
            'Accept': 'application/vnd.github.v3+json',
            'Authorization': 'token ' + access_token
            }
        })
    .then(response => {
        console.log("axios gets: " + response.data)
        return response.data;
    })
}
DevLoverUmar
  • 11,809
  • 11
  • 68
  • 98
Adam Lau
  • 153
  • 2
  • 10

1 Answers1

0

Add a catch block on axios call as

export var testHook = async (access_token, name, creator, hookid) => {
    console.log("test hook for user: " + creator + " and repo: " + name + "and hook id: " + hookid)
    return axios.post("https://api.github.com/repos/" + creator + "/" + name + "/hooks/" + hookid + "/tests",  
        {
            headers: {
            'Accept': 'application/vnd.github.v3+json',
            'Authorization': 'token ' + access_token
            }
        })
    .then(response => {
        console.log("axios gets: " + response.data)
        return response.data;
    }).catch(err => {
    console.log(err.response.data)
})

}

For more details, check this.

DevLoverUmar
  • 11,809
  • 11
  • 68
  • 98