Skip to content

Commit 0915fdc

Browse files
committed
clean up express route definitions
1 parent 0f882b9 commit 0915fdc

13 files changed

Lines changed: 179 additions & 107 deletions

File tree

api/src/index.js

Lines changed: 17 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -14,65 +14,24 @@ import config from '../../config'
1414
import validateConfig from './utils/validateConfig'
1515
import createTrackerRoute from './tracker/routes'
1616
import auth from './middleware/auth'
17+
import {
18+
accountRoutes,
19+
userRoutes,
20+
torrentRoutes,
21+
announcementRoutes,
22+
reportRoutes,
23+
adminRoutes,
24+
requestRoutes,
25+
} from './routes'
1726
import {
1827
register,
1928
login,
20-
generateInvite,
21-
fetchInvites,
22-
changePassword,
2329
initiatePasswordReset,
2430
finalisePasswordReset,
25-
fetchUser,
26-
getUserStats,
27-
getUserRole,
28-
getUserVerifiedEmailStatus,
2931
verifyUserEmail,
30-
banUser,
31-
unbanUser,
32-
buyItems,
33-
generateTotpSecret,
34-
enableTotp,
35-
disableTotp,
3632
} from './controllers/user'
37-
import {
38-
uploadTorrent,
39-
downloadTorrent,
40-
fetchTorrent,
41-
deleteTorrent,
42-
addComment as addCommentTorrent,
43-
listLatest,
44-
searchTorrents,
45-
addVote,
46-
removeVote,
47-
toggleFreeleech,
48-
} from './controllers/torrent'
49-
import {
50-
createAnnouncement,
51-
fetchAnnouncement,
52-
getAnnouncements,
53-
getPinnedAnnouncements,
54-
deleteAnnouncement,
55-
pinAnnouncement,
56-
editAnnouncement,
57-
addComment as addCommentAnnouncement,
58-
} from './controllers/announcement'
59-
import {
60-
createReport,
61-
fetchReport,
62-
getReports,
63-
setReportResolved,
64-
getStats,
65-
} from './controllers/moderation'
33+
import { downloadTorrent } from './controllers/torrent'
6634
import { rssFeed } from './controllers/rss'
67-
import {
68-
createRequest,
69-
getRequests,
70-
fetchRequest,
71-
deleteRequest,
72-
addComment as addCommentRequest,
73-
addCandidate,
74-
acceptCandidate,
75-
} from './controllers/request'
7635
import createAdminUser from './setup/createAdminUser'
7736

7837
let mail
@@ -184,7 +143,6 @@ validateConfig(config).then(() => {
184143
app.use(cookieParser())
185144
app.use(cors())
186145

187-
// root
188146
app.get('/', (req, res) =>
189147
res.send(`■ sqtracker running: ${process.env.SQ_SITE_NAME}`).status(200)
190148
)
@@ -205,57 +163,13 @@ validateConfig(config).then(() => {
205163
// everything from here on requires user auth
206164
app.use(auth)
207165

208-
// user/account routes
209-
app.get('/account/invites', fetchInvites)
210-
app.post('/account/generate-invite', generateInvite)
211-
app.post('/account/change-password', changePassword)
212-
app.get('/account/get-stats', getUserStats)
213-
app.get('/account/get-role', getUserRole)
214-
app.get('/account/get-verified', getUserVerifiedEmailStatus)
215-
app.post('/account/buy', buyItems)
216-
app.get('/user/:username', fetchUser(tracker))
217-
app.post('/user/ban/:username', banUser)
218-
app.post('/user/unban/:username', unbanUser)
219-
app.get('/account/totp/generate', generateTotpSecret)
220-
app.post('/account/totp/enable', enableTotp)
221-
app.post('/account/totp/disable', disableTotp)
222-
223-
// torrent routes
224-
app.post('/torrent/upload', uploadTorrent)
225-
app.get('/torrent/info/:infoHash', fetchTorrent(tracker))
226-
app.delete('/torrent/delete/:infoHash', deleteTorrent)
227-
app.post('/torrent/comment/:infoHash', addCommentTorrent)
228-
app.post('/torrent/vote/:infoHash/:vote', addVote)
229-
app.post('/torrent/unvote/:infoHash/:vote', removeVote)
230-
app.post('/torrent/report/:infoHash', createReport)
231-
app.post('/torrent/toggle-freeleech/:infoHash', toggleFreeleech)
232-
app.get('/torrents/latest', listLatest(tracker))
233-
app.get('/torrents/search', searchTorrents(tracker))
234-
235-
// announcement routes
236-
app.post('/announcements/new', createAnnouncement)
237-
app.get('/announcements/pinned', getPinnedAnnouncements)
238-
app.get('/announcements/:slug', fetchAnnouncement)
239-
app.get('/announcements/page/:page', getAnnouncements)
240-
app.delete('/announcements/:slug', deleteAnnouncement)
241-
app.post('/announcements/pin/:announcementId/:action', pinAnnouncement)
242-
app.post('/announcements/edit/:announcementId', editAnnouncement)
243-
app.post('/announcements/comment/:announcementId', addCommentAnnouncement)
244-
245-
// moderation routes
246-
app.get('/reports/page/:page', getReports)
247-
app.post('/reports/resolve/:reportId', setReportResolved)
248-
app.get('/reports/:reportId', fetchReport)
249-
app.get('/admin/stats', getStats(tracker))
250-
251-
// request routes
252-
app.post('/requests/new', createRequest)
253-
app.get('/requests/page/:page', getRequests)
254-
app.get('/requests/:index', fetchRequest)
255-
app.delete('/requests/:index', deleteRequest)
256-
app.post('/requests/comment/:requestId', addCommentRequest)
257-
app.post('/requests/suggest/:requestId', addCandidate)
258-
app.post('/requests/accept/:requestId', acceptCandidate)
166+
app.use('/account', accountRoutes())
167+
app.use('/user', userRoutes(tracker))
168+
app.use('/torrent', torrentRoutes(tracker))
169+
app.use('/announcements', announcementRoutes())
170+
app.use('/reports', reportRoutes())
171+
app.use('/admin', adminRoutes(tracker))
172+
app.use('/requests', requestRoutes())
259173

260174
const port = process.env.SQ_PORT || 3001
261175
app.listen(port, () => {

api/src/routes/account.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import express from 'express'
2+
import {
3+
fetchInvites,
4+
generateInvite,
5+
changePassword,
6+
getUserStats,
7+
getUserRole,
8+
getUserVerifiedEmailStatus,
9+
buyItems,
10+
generateTotpSecret,
11+
enableTotp,
12+
disableTotp,
13+
} from '../controllers/user'
14+
15+
const router = express.Router()
16+
17+
export default () => {
18+
router.get('/invites', fetchInvites)
19+
router.post('/generate-invite', generateInvite)
20+
router.post('/change-password', changePassword)
21+
router.get('/get-stats', getUserStats)
22+
router.get('/get-role', getUserRole)
23+
router.get('/get-verified', getUserVerifiedEmailStatus)
24+
router.post('/buy', buyItems)
25+
router.get('/totp/generate', generateTotpSecret)
26+
router.post('/totp/enable', enableTotp)
27+
router.post('/totp/disable', disableTotp)
28+
return router
29+
}

api/src/routes/admin.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import express from 'express'
2+
import { getStats } from '../controllers/moderation'
3+
4+
const router = express.Router()
5+
6+
export default (tracker) => {
7+
router.get('/stats', getStats(tracker))
8+
return router
9+
}

api/src/routes/announcement.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import express from 'express'
2+
import {
3+
addComment,
4+
createAnnouncement,
5+
deleteAnnouncement,
6+
editAnnouncement,
7+
fetchAnnouncement,
8+
getAnnouncements,
9+
getPinnedAnnouncements,
10+
pinAnnouncement,
11+
} from '../controllers/announcement'
12+
13+
const router = express.Router()
14+
15+
export default () => {
16+
router.post('/new', createAnnouncement)
17+
router.get('/pinned', getPinnedAnnouncements)
18+
router.get('/:slug', fetchAnnouncement)
19+
router.get('/page/:page', getAnnouncements)
20+
router.delete('/:slug', deleteAnnouncement)
21+
router.post('/pin/:announcementId/:action', pinAnnouncement)
22+
router.post('/edit/:announcementId', editAnnouncement)
23+
router.post('/comment/:announcementId', addComment)
24+
return router
25+
}

api/src/routes/index.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import accountRoutes from './account'
2+
import userRoutes from './user'
3+
import torrentRoutes from './torrent'
4+
import announcementRoutes from './announcement'
5+
import reportRoutes from './report'
6+
import adminRoutes from './admin'
7+
import requestRoutes from './request'
8+
9+
export {
10+
accountRoutes,
11+
userRoutes,
12+
torrentRoutes,
13+
announcementRoutes,
14+
reportRoutes,
15+
adminRoutes,
16+
requestRoutes,
17+
}

api/src/routes/report.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import express from 'express'
2+
import {
3+
fetchReport,
4+
getReports,
5+
setReportResolved,
6+
} from '../controllers/moderation'
7+
8+
const router = express.Router()
9+
10+
export default () => {
11+
router.get('/page/:page', getReports)
12+
router.post('/resolve/:reportId', setReportResolved)
13+
router.get('/:reportId', fetchReport)
14+
return router
15+
}

api/src/routes/request.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import express from 'express'
2+
import {
3+
acceptCandidate,
4+
addCandidate,
5+
addComment as addCommentRequest,
6+
createRequest,
7+
deleteRequest,
8+
fetchRequest,
9+
getRequests,
10+
} from '../controllers/request'
11+
12+
const router = express.Router()
13+
14+
export default () => {
15+
router.post('/new', createRequest)
16+
router.get('/page/:page', getRequests)
17+
router.get('/:index', fetchRequest)
18+
router.delete('/:index', deleteRequest)
19+
router.post('/comment/:requestId', addCommentRequest)
20+
router.post('/suggest/:requestId', addCandidate)
21+
router.post('/accept/:requestId', acceptCandidate)
22+
return router
23+
}

api/src/routes/torrent.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import express from 'express'
2+
import {
3+
addComment as addCommentTorrent,
4+
addVote,
5+
deleteTorrent,
6+
fetchTorrent,
7+
listLatest,
8+
removeVote,
9+
searchTorrents,
10+
toggleFreeleech,
11+
uploadTorrent,
12+
} from '../controllers/torrent'
13+
import { createReport } from '../controllers/moderation'
14+
15+
const router = express.Router()
16+
17+
export default (tracker) => {
18+
router.post('/upload', uploadTorrent)
19+
router.get('/info/:infoHash', fetchTorrent(tracker))
20+
router.delete('/delete/:infoHash', deleteTorrent)
21+
router.post('/comment/:infoHash', addCommentTorrent)
22+
router.post('/vote/:infoHash/:vote', addVote)
23+
router.post('/unvote/:infoHash/:vote', removeVote)
24+
router.post('/report/:infoHash', createReport)
25+
router.post('/toggle-freeleech/:infoHash', toggleFreeleech)
26+
router.get('/latest', listLatest(tracker))
27+
router.get('/search', searchTorrents(tracker))
28+
return router
29+
}

api/src/routes/user.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import express from 'express'
2+
import { banUser, fetchUser, unbanUser } from '../controllers/user'
3+
4+
const router = express.Router()
5+
6+
export default (tracker) => {
7+
router.get('/:username', fetchUser(tracker))
8+
router.post('/ban/:username', banUser)
9+
router.post('/unban/:username', unbanUser)
10+
return router
11+
}

client/pages/categories/[category].js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export const getServerSideProps = withAuthServerSideProps(
5757

5858
try {
5959
const searchRes = await fetch(
60-
`${SQ_API_URL}/torrents/search?${qs.stringify(params)}`,
60+
`${SQ_API_URL}/torrent/search?${qs.stringify(params)}`,
6161
{
6262
headers: fetchHeaders,
6363
}

0 commit comments

Comments
 (0)