summary refs log tree commit diff
path: root/src/util/connections/RefreshableConnection.ts
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2023-04-02 11:30:31 +1000
committerGitHub <noreply@github.com>2023-04-02 11:30:31 +1000
commit86ac90b1e4e83cb1f55c45055d9ab3a488fe67bd (patch)
tree83c97c8d7464bbfb0b1924597f1dde8c69528ba9 /src/util/connections/RefreshableConnection.ts
parentRemove ALL fosscord mentions (diff)
parentLess spammy user connection logs (diff)
downloadserver-86ac90b1e4e83cb1f55c45055d9ab3a488fe67bd.tar.xz
Merge pull request #1009 from Puyodead1/refactor/dev/connections
Connections Part 1
Diffstat (limited to 'src/util/connections/RefreshableConnection.ts')
-rw-r--r--src/util/connections/RefreshableConnection.ts30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/util/connections/RefreshableConnection.ts b/src/util/connections/RefreshableConnection.ts
new file mode 100644

index 00000000..87f5f6dd --- /dev/null +++ b/src/util/connections/RefreshableConnection.ts
@@ -0,0 +1,30 @@ +import { ConnectedAccount } from "../entities"; +import { ConnectedAccountCommonOAuthTokenResponse } from "../interfaces"; +import Connection from "./Connection"; + +/** + * A connection that can refresh its token. + */ +export default abstract class RefreshableConnection extends Connection { + refreshEnabled = true; + /** + * Refreshes the token for a connected account. + * @param connectedAccount The connected account to refresh + */ + abstract refreshToken( + connectedAccount: ConnectedAccount, + ): Promise<ConnectedAccountCommonOAuthTokenResponse>; + + /** + * Refreshes the token for a connected account and saves it to the database. + * @param connectedAccount The connected account to refresh + */ + async refresh( + connectedAccount: ConnectedAccount, + ): Promise<ConnectedAccountCommonOAuthTokenResponse> { + const tokenData = await this.refreshToken(connectedAccount); + connectedAccount.token_data = { ...tokenData, fetched_at: Date.now() }; + await connectedAccount.save(); + return tokenData; + } +}