import { Jwt } from '..'
import { AuthService } from '../auth'
import { RefreshableJwt } from '../auth/types'
import { ICredential, CredentialType } from './credential'

export class GuestCredentials implements ICredential {
	readonly type: CredentialType.Guest
	private jwt?: Jwt

	getToken(): Jwt | RefreshableJwt {
		return this.jwt
	}

	async authorize(authService: AuthService): Promise<Jwt> {
		const jwt = await authService.guestLogin()
		this.jwt = jwt
		return jwt
	}

	async refreshToken(): Promise<Jwt> {
		// You can't refresh a guest token
		return this.jwt
	}
}
