64 lines
2.2 KiB
JavaScript
64 lines
2.2 KiB
JavaScript
import { FlowsController } from '../controllers/flows.mjs'
|
|
|
|
const Flow = new FlowsController()
|
|
const jwt = ['jwt', { session: false }]
|
|
const bsc = ['basic', { session: false }]
|
|
|
|
export function flowsRoutes(tools) {
|
|
const { app, passport } = tools
|
|
|
|
// Send a translator invite
|
|
app.post('/flows/translator-invite/jwt', passport.authenticate(...jwt), (req, res) =>
|
|
Flow.sendTranslatorInvite(req, res, tools)
|
|
)
|
|
app.post('/flows/translator-invite/key', passport.authenticate(...bsc), (req, res) =>
|
|
Flow.sendTranslatorInvite(req, res, tools)
|
|
)
|
|
|
|
// Send a language suggestion (to add a new language)
|
|
app.post('/flows/language-suggestion/jwt', passport.authenticate(...jwt), (req, res) =>
|
|
Flow.sendLanguageSuggestion(req, res, tools)
|
|
)
|
|
app.post('/flows/language-suggestion/key', passport.authenticate(...bsc), (req, res) =>
|
|
Flow.sendLanguageSuggestion(req, res, tools)
|
|
)
|
|
|
|
// Upload an image
|
|
app.post('/images/jwt', passport.authenticate(...jwt), (req, res) =>
|
|
Flow.uploadImage(req, res, tools)
|
|
)
|
|
app.post('/images/key', passport.authenticate(...bsc), (req, res) =>
|
|
Flow.uploadImage(req, res, tools)
|
|
)
|
|
|
|
// Remove an image
|
|
app.delete('/images/:id/jwt', passport.authenticate(...jwt), (req, res) =>
|
|
Flow.removeImage(req, res, tools)
|
|
)
|
|
app.delete('/images/:id/key', passport.authenticate(...bsc), (req, res) =>
|
|
Flow.removeImage(req, res, tools)
|
|
)
|
|
|
|
// Submit a pull request for a new showcase or blog post
|
|
for (const type of ['blog', 'showcase']) {
|
|
app.post(`/flows/pr/${type}/jwt`, passport.authenticate(...jwt), (req, res) =>
|
|
Flow.createPostPr(req, res, tools, type)
|
|
)
|
|
app.post(`/flows/pr/${type}/key`, passport.authenticate(...bsc), (req, res) =>
|
|
Flow.createPostPr(req, res, tools, type)
|
|
)
|
|
}
|
|
|
|
// Create Issue - No auth needed
|
|
app.post('/issues', (req, res) => Flow.createIssue(req, res, tools))
|
|
|
|
// See if a showcase or blog slug is available
|
|
for (const type of ['showcase', 'blog']) {
|
|
app.get(`/slugs/${type}/:slug/jwt`, passport.authenticate(...jwt), (req, res) =>
|
|
Flow.isSlugAvailable(req, res, tools, type)
|
|
)
|
|
app.get(`/slugs/${type}/:slug/key`, passport.authenticate(...bsc), (req, res) =>
|
|
Flow.isSlugAvailable(req, res, tools, type)
|
|
)
|
|
}
|
|
}
|