twitch-graphql
Version:
A graphql wrapper for the Twitch API.
44 lines (38 loc) • 1.38 kB
text/typescript
import { createModule, gql } from 'graphql-modules'
import { PubSubRedemptionMessage } from 'twitch-pubsub-client'
import { ApiClient } from 'twitch'
import RefreshToken from '../helpers/RefreshToken'
export const RedemptionUserLinkResolvers = {
Redemption: {
user: async (
redemption: PubSubRedemptionMessage,
_args: any,
{ user_id, secret, refresh_token }: GraphQLModules.Context
) => {
const authProvider = await RefreshToken(user_id, secret, refresh_token)
const twitchClient = new ApiClient({ authProvider, preAuth: true })
return twitchClient.helix.users.getUserById(redemption.userId)
},
channelRedeemedAt: async (
redemption: PubSubRedemptionMessage,
_args: any,
{ user_id, secret, refresh_token }: GraphQLModules.Context
) => {
const authProvider = await RefreshToken(user_id, secret, refresh_token)
const twitchClient = new ApiClient({ authProvider, preAuth: true })
return twitchClient.helix.users.getUserById(redemption.channelId)
},
},
}
export const RedemptionUserLinkSchema = gql`
extend type Redemption {
user: User
channelRedeemedAt: User
}
`
export const RedemptionUserLinkModule = createModule({
id: `redemption-pubsub-user-link-module`,
dirname: __dirname,
typeDefs: RedemptionUserLinkSchema,
resolvers: RedemptionUserLinkResolvers,
})