spookvooper-api/src/modules/Auth.ts

65 lines
1.9 KiB
TypeScript

// SpookVooper API - modules/Auth.ts
// Written by Bryce Bauer and Brendan Lane - https://github.com/bluebeargreen-2 and https://brndnln.dev/
import axios from 'axios'
import { AuthConfig } from './types/Types'
const authURL = 'https://spookvooper.com/oauth2'
class Auth {
private appsecret: string
private code: string
private appid: string
public urlReturn: string
constructor (config: AuthConfig) {
if (config.clientid === undefined || config.clientsecret === undefined) {
throw new Error('The parans \'clientid\' and \'clientsecret\' must be defined')
}
this.appid = config.clientid
this.appsecret = config.clientsecret
}
public get clientsecret (): string {
return this.appsecret
}
public set clientsecret (clientsecret: string) {
this.appsecret = clientsecret
}
public get authcode (): string {
return this.code
}
public set authcode (authcode: string) {
this.code = authcode
}
public get clientid (): string {
return this.appid
}
public set clientid (clientid: string) {
this.appid = clientid
}
public genLink (redirect: string, scope: string, state?: string): string {
if (redirect === undefined || scope === undefined) {
throw new Error('Arguments \'redirect\' and \'scope\' are required')
} else if (state === undefined) {
state = ''
this.urlReturn = `${authURL}/authorize?response_type=code&client_id=${this.clientid}&redirect_uri=${redirect}&scope=${scope}&state=${state}`
this.urlReturn = this.urlReturn.split(' ').join('%20')
return this.urlReturn
} else {
this.urlReturn = `${authURL}/authorize?response_type=code&client_id=${this.clientid}&redirect_uri=${redirect}&scope=${scope}&state=${state}`
this.urlReturn = this.urlReturn.split(' ').join('%20')
return this.urlReturn
}
}
}
export default Auth