index.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. const express = require('express')
  2. // the ../../../packages is just to use the local version
  3. // instead of the npm version—in a real app use `require('@uppy/companion')`
  4. const uppy = require('../../../packages/@uppy/companion')
  5. const bodyParser = require('body-parser')
  6. const session = require('express-session')
  7. const app = express()
  8. app.use(bodyParser.json())
  9. app.use(session({
  10. secret: 'some-secret',
  11. resave: true,
  12. saveUninitialized: true
  13. }))
  14. app.use((req, res, next) => {
  15. res.setHeader('Access-Control-Allow-Origin', req.headers.origin || '*')
  16. res.setHeader(
  17. 'Access-Control-Allow-Methods',
  18. 'GET, POST, OPTIONS, PUT, PATCH, DELETE'
  19. )
  20. res.setHeader(
  21. 'Access-Control-Allow-Headers',
  22. 'Authorization, Origin, Content-Type, Accept'
  23. )
  24. next()
  25. })
  26. // Routes
  27. app.get('/', (req, res) => {
  28. res.setHeader('Content-Type', 'text/plain')
  29. res.send('Welcome to my uppy companion service')
  30. })
  31. // initialize uppy
  32. const uppyOptions = {
  33. providerOptions: {
  34. google: {
  35. key: 'your google key',
  36. secret: 'your google secret'
  37. }
  38. },
  39. customProviders: {
  40. mycustomprovider: {
  41. config: {
  42. // your oauth handlers
  43. authorize_url: 'http://localhost:3020/oauth/authorize',
  44. access_url: 'http://localhost:3020/oauth/token',
  45. oauth: 2,
  46. key: '***',
  47. secret: '**',
  48. scope: ['read', 'write']
  49. },
  50. // you provider module
  51. module: require('./customprovider')
  52. }
  53. },
  54. server: {
  55. host: 'localhost:3020',
  56. protocol: 'http'
  57. },
  58. filePath: './output',
  59. secret: 'some-secret',
  60. debug: true
  61. }
  62. app.get('/oauth/authorize', (req, res) => {
  63. // skips the default oauth process.
  64. // ideally this endpoint should handle the actual oauth process
  65. res.redirect(`http://localhost:3020/mycustomprovider/callback?state=${req.query.state}&access_token=randombytes`)
  66. })
  67. app.use(uppy.app(uppyOptions))
  68. // handle 404
  69. app.use((req, res, next) => {
  70. return res.status(404).json({ message: 'Not Found' })
  71. })
  72. // handle server errors
  73. app.use((err, req, res, next) => {
  74. console.error('\x1b[31m', err.stack, '\x1b[0m')
  75. res.status(err.status || 500).json({ message: err.message, error: err })
  76. })
  77. uppy.socket(app.listen(3020), uppyOptions)
  78. console.log('Welcome to Companion!')
  79. console.log(`Listening on http://0.0.0.0:${3020}`)