@uppy/companion
Version:
OAuth helper and remote fetcher for Uppy's (https://uppy.io) extensible file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Dropbox and Google Drive, S3 and more :dog:
27 lines (21 loc) • 684 B
JavaScript
import crypto from 'node:crypto'
import { decrypt, encrypt } from './utils.js'
export const encodeState = (state, secret) => {
const encodedState = Buffer.from(JSON.stringify(state)).toString('base64')
return encrypt(encodedState, secret)
}
export const decodeState = (state, secret) => {
const encodedState = decrypt(state, secret)
return JSON.parse(atob(encodedState))
}
export const generateState = () => {
return {
id: crypto.randomBytes(10).toString('hex'),
}
}
export const getFromState = (state, name, secret) => {
return decodeState(state, secret)[name]
}
export const getGrantDynamicFromRequest = (req) => {
return req.session.grant?.dynamic ?? {}
}