Updated list of commands to v4.3. Added groups & permissions. Added connections. Updated redemptions and actions to v4.3.
This commit is contained in:
		@@ -15,22 +15,22 @@ export async function GET(req: Request) {
 | 
			
		||||
 | 
			
		||||
        // Verify state against user id in user table.
 | 
			
		||||
        const user = await db.user.findFirst({
 | 
			
		||||
          where: {
 | 
			
		||||
            id: state
 | 
			
		||||
          }
 | 
			
		||||
            where: {
 | 
			
		||||
                id: state
 | 
			
		||||
            }
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        if (!user) {
 | 
			
		||||
          return new NextResponse("Bad Request", { status: 400 });
 | 
			
		||||
            return new NextResponse("Bad Request", { status: 400 });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Post to https://id.twitch.tv/oauth2/token
 | 
			
		||||
        const token: { access_token:string, expires_in:number, refresh_token:string, token_type:string, scope:string[] } = (await axios.post("https://id.twitch.tv/oauth2/token", {
 | 
			
		||||
        const token: { access_token: string, expires_in: number, refresh_token: string, token_type: string, scope: string[] } = (await axios.post("https://id.twitch.tv/oauth2/token", {
 | 
			
		||||
            client_id: process.env.TWITCH_BOT_CLIENT_ID,
 | 
			
		||||
            client_secret: process.env.TWITCH_BOT_CLIENT_SECRET,
 | 
			
		||||
            code: code,
 | 
			
		||||
            grant_type: "authorization_code",
 | 
			
		||||
            redirect_uri: "https://hermes.goblincaves.com/api/account/authorize"
 | 
			
		||||
            redirect_uri: "https://tomtospeech.com/api/account/authorize"
 | 
			
		||||
        })).data
 | 
			
		||||
 | 
			
		||||
        // Fetch values from token.
 | 
			
		||||
@@ -49,17 +49,17 @@ export async function GET(req: Request) {
 | 
			
		||||
        const broadcasterId = info.data.data[0]['id']
 | 
			
		||||
 | 
			
		||||
        await db.twitchConnection.create({
 | 
			
		||||
          data: {
 | 
			
		||||
            broadcasterId: broadcasterId,
 | 
			
		||||
            accessToken: access_token,
 | 
			
		||||
            refreshToken: refresh_token,
 | 
			
		||||
            userId: state
 | 
			
		||||
          }
 | 
			
		||||
            data: {
 | 
			
		||||
                broadcasterId: broadcasterId,
 | 
			
		||||
                accessToken: access_token,
 | 
			
		||||
                refreshToken: refresh_token,
 | 
			
		||||
                userId: state
 | 
			
		||||
            }
 | 
			
		||||
        })
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        return new NextResponse("", { status: 200 });
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.log("[ACCOUNT]", error);
 | 
			
		||||
        console.log("[ACCOUNT/AUTHORIZE]", error);
 | 
			
		||||
        return new NextResponse("Internal Error", { status: 500 });
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -39,7 +39,8 @@ export async function GET(req: Request) {
 | 
			
		||||
                    user_id: user.id,
 | 
			
		||||
                    access_token: data?.accessToken,
 | 
			
		||||
                    refresh_token: data?.refreshToken,
 | 
			
		||||
                    broadcaster_id: connection.broadcasterId
 | 
			
		||||
                    broadcaster_id: connection.broadcasterId,
 | 
			
		||||
                    expires_in
 | 
			
		||||
                }
 | 
			
		||||
                return NextResponse.json(dataFormatted, { status: 201 });
 | 
			
		||||
            }
 | 
			
		||||
@@ -75,7 +76,8 @@ export async function GET(req: Request) {
 | 
			
		||||
            user_id: user.id,
 | 
			
		||||
            access_token,
 | 
			
		||||
            refresh_token,
 | 
			
		||||
            broadcaster_id: connection.broadcasterId
 | 
			
		||||
            broadcaster_id: connection.broadcasterId,
 | 
			
		||||
            expires_in
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        return NextResponse.json(data)
 | 
			
		||||
 
 | 
			
		||||
@@ -18,16 +18,21 @@ export async function GET(req: Request) {
 | 
			
		||||
        if (!auth)
 | 
			
		||||
            return new NextResponse("Bad Request", { status: 400 })
 | 
			
		||||
 | 
			
		||||
        const redemptions = await axios.get("https://api.twitch.tv/helix/channel_points/custom_rewards?broadcaster_id=" + auth.broadcaster_id,
 | 
			
		||||
            {
 | 
			
		||||
                headers: {
 | 
			
		||||
                    "Client-Id": process.env.TWITCH_BOT_CLIENT_ID,
 | 
			
		||||
                    "Authorization": "Bearer " + auth.access_token
 | 
			
		||||
        try {
 | 
			
		||||
            const redemptions = await axios.get("https://api.twitch.tv/helix/channel_points/custom_rewards?broadcaster_id=" + auth.broadcaster_id,
 | 
			
		||||
                {
 | 
			
		||||
                    headers: {
 | 
			
		||||
                        "Client-Id": process.env.TWITCH_BOT_CLIENT_ID,
 | 
			
		||||
                        "Authorization": "Bearer " + auth.access_token
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        )
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
        return NextResponse.json(redemptions.data);
 | 
			
		||||
            return NextResponse.json(redemptions.data);
 | 
			
		||||
        } catch (error: any) {
 | 
			
		||||
            console.error('Fetching Twitch channel redemptions:', error.response.data)
 | 
			
		||||
        }
 | 
			
		||||
        return NextResponse.json([]);
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.log("[REDEMPTIONS/ACTIONS]", error);
 | 
			
		||||
        return new NextResponse("Internal Error", { status: 500 });
 | 
			
		||||
 
 | 
			
		||||
@@ -6,9 +6,16 @@ import fetchUser from "@/lib/fetch-user";
 | 
			
		||||
 | 
			
		||||
export async function GET(req: Request) {
 | 
			
		||||
    try {
 | 
			
		||||
      const user = await fetchUser(req)
 | 
			
		||||
      if (!user) return new NextResponse("Internal Error", { status: 401 })
 | 
			
		||||
      return NextResponse.json(user)
 | 
			
		||||
        const user = await fetchUser(req)
 | 
			
		||||
        if (!user) return new NextResponse("Internal Error", { status: 401 })
 | 
			
		||||
 | 
			
		||||
        const account = await db.account.findFirst({
 | 
			
		||||
            where: {
 | 
			
		||||
                userId: user.id
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        return NextResponse.json({ ... user, broadcasterId: account?.providerAccountId })
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.log("[ACCOUNT]", error);
 | 
			
		||||
        return new NextResponse("Internal Error", { status: 500 });
 | 
			
		||||
@@ -22,29 +29,29 @@ export async function POST(req: Request) {
 | 
			
		||||
        if (!user) {
 | 
			
		||||
            return new NextResponse("Internal Error", { status: 401 })
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        const exist = await db.user.findFirst({
 | 
			
		||||
          where: {
 | 
			
		||||
            name: user
 | 
			
		||||
          }
 | 
			
		||||
            where: {
 | 
			
		||||
                name: user
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
        if (exist) {
 | 
			
		||||
            return NextResponse.json({
 | 
			
		||||
              id: exist.id,
 | 
			
		||||
              username: exist.name
 | 
			
		||||
                id: exist.id,
 | 
			
		||||
                username: exist.name
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
        const newUser = await db.user.create({
 | 
			
		||||
          data: {
 | 
			
		||||
            name: user,
 | 
			
		||||
          }
 | 
			
		||||
            data: {
 | 
			
		||||
                name: user,
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        return NextResponse.json({
 | 
			
		||||
          id: newUser.id,
 | 
			
		||||
          username: newUser.name
 | 
			
		||||
            id: newUser.id,
 | 
			
		||||
            username: newUser.name
 | 
			
		||||
        });
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.log("[ACCOUNT]", error);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user