Cancel le reward fulfill + Refresh token dans DB

This commit is contained in:
Zachary Guénot
2023-06-14 18:43:11 +02:00
parent 1478d6ded3
commit bcb1427148
4 changed files with 62 additions and 8 deletions

View File

@@ -1,8 +1,9 @@
require('dotenv').config()
const validateToken = require('./validateToken')
const refreshToken = require('./refreshToken')
const writeEnv = require('./writeEnv')
const dbRefreshToken = require('./dbRefreshToken')
const validateToken = require('./validateToken')
const refreshToken = require('./refreshToken')
const writeEnv = require('./writeEnv')
let client_id = process.env.TWITCH_APP_ID
let client_secret = process.env.TWITCH_APP_SECRET
@@ -12,7 +13,10 @@ module.exports = checkChannel = (async (channel_access_token) => {
// Check if channel_access_token is valid
if (!await validateToken(channel_access_token)) {
result = await refreshToken(client_id, client_secret, process.env.TWITCH_CHANNEL_REFRESH_TOKEN)
let channel_refresh_token = await dbRefreshToken('get', 'channel')
if (channel_refresh_token.error) return channel_refresh_token.error
result = await refreshToken(client_id, client_secret, channel_refresh_token)
if (result.status) return result = ['no_refresh', result.message]
else {
@@ -20,6 +24,8 @@ module.exports = checkChannel = (async (channel_access_token) => {
writeEnv('TWITCH_CHANNEL_ACCESS_TOKEN', channel_access_token)
writeEnv('TWITCH_CHANNEL_REFRESH_TOKEN', channel_refresh_token)
await dbRefreshToken('update', 'channel', channel_refresh_token)
let channel_name = await getUserInfo(client_id, channel_access_token, 'login')
writeEnv('TWITCH_CHANNEL_NAME', channel_name)
}

View File

@@ -1,8 +1,9 @@
require('dotenv').config()
const validateToken = require('./validateToken')
const refreshToken = require('./refreshToken')
const writeEnv = require('./writeEnv')
const dbRefreshToken = require('./dbRefreshToken')
const validateToken = require('./validateToken')
const refreshToken = require('./refreshToken')
const writeEnv = require('./writeEnv')
let client_id = process.env.TWITCH_APP_ID
let client_secret = process.env.TWITCH_APP_SECRET
@@ -12,7 +13,10 @@ module.exports = checkUser = (async (user_access_token) => {
// Check if user_access_token is valid
if (!await validateToken(user_access_token)) {
result = await refreshToken(client_id, client_secret, process.env.TWITCH_USER_REFRESH_TOKEN)
let user_refresh_token = await dbRefreshToken('get', 'user')
if (user_refresh_token.error) return user_refresh_token.error
result = await refreshToken(client_id, client_secret, user_refresh_token)
if (result.status) return result = ['no_refresh', result.message]
else {
@@ -20,6 +24,8 @@ module.exports = checkUser = (async (user_access_token) => {
writeEnv('TWITCH_USER_ACCESS_TOKEN', user_access_token)
writeEnv('TWITCH_USER_REFRESH_TOKEN', user_refresh_token)
await dbRefreshToken('update', 'user', user_refresh_token)
let user_name = await getUserInfo(client_id, user_access_token, 'login')
writeEnv('TWITCH_USER_NAME', user_name)
}

40
utils/dbRefreshToken.js Normal file
View File

@@ -0,0 +1,40 @@
const mysql = require('mysql2/promise')
require('dotenv').config()
module.exports = dbRefreshToken = (async (action, type, token) => {
// Create a connection to the MySQL database
const connection = await mysql.createConnection({
host: process.env.MYSQL_HOST,
port: process.env.MYSQL_PORT,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE
})
if (action === 'get') {
// Get the refresh token from the database
let results = await connection.query('SELECT value FROM env WHERE refresh_token = ?', [type])
.then(async ([rows, fields]) => { return rows[0].value })
.catch(error => { console.error(error) })
// Terminate the connection to the database
await connection.end()
if (!results) return { error: "Can't get the refresh token !" }
return results
}
else if (action === 'update') {
// Update the refresh token in the database
let results = await connection.query('UPDATE env SET value = ? WHERE refresh_token = ?', [token, type])
.then(async ([rows, fields]) => { return rows })
.catch(error => { console.error(error) })
// Terminate the connection to the database
await connection.end()
if (!results) return { error: "Can't update the refresh token !" }
return results
}
return result
})

View File

@@ -40,6 +40,7 @@ module.exports = rewardRedemption = (async (viewer_id, viewer_name, client_id, a
// Fullfil the reward redemption
if (result.status === 'insert_entry' || result.status === 'update_entry') {
/*
await axios.patch(`https://api.twitch.tv/helix/channel_points/custom_rewards/redemptions?id=${id}&broadcaster_id=${broadcaster_id}&reward_id=${reward_id}`, {
status: 'FULFILLED'
}, {
@@ -51,6 +52,7 @@ module.exports = rewardRedemption = (async (viewer_id, viewer_name, client_id, a
}).then(response => {
//return response.data.data[0].status
}).catch(error => { console.error(error.response.data) })
*/
}
return result