|
1 | | -const express = require('express'); |
2 | 1 | const axios = require('axios'); |
3 | | -const router = express.Router(); |
4 | 2 | const { |
5 | | - decodeToken, |
6 | | - checkIfTokenSent, |
7 | | - checkIfTokenValid, |
8 | | -} = require('./token-functions.js'); |
9 | | -const { |
10 | | - OK, |
11 | | - UNAUTHORIZED, |
12 | | - FORBIDDEN, |
13 | 3 | SERVER_ERROR, |
14 | 4 | } = require('../../util/constants.js').STATUS_CODES; |
15 | 5 | const logger = require('../../util/logger.js'); |
16 | | -const { Cleezy } = require('../../config/config.json'); |
17 | | -const membershipState = require('../../util/constants.js').MEMBERSHIP_STATE; |
18 | | -const { ENABLED } = Cleezy; |
19 | 6 |
|
20 | 7 | let CLEEZY_URL = process.env.CLEEZY_URL |
21 | 8 | || 'http://localhost:8000'; |
22 | 9 | let URL_SHORTENER_BASE_URL = |
23 | 10 | process.env.NODE_ENV === 'production' ? 'https://sce.sjsu.edu/s/' : 'http://localhost:8000/find/'; |
24 | 11 |
|
25 | 12 | const searchCleezyUrls = async (req) => { |
26 | | - if(!ENABLED || !req.body.query) { |
27 | | - return { status: OK, data: [] }; |
28 | | - } |
29 | | - |
30 | | - if (!checkIfTokenSent(req)) { |
31 | | - return { status: FORBIDDEN, data: [] }; |
32 | | - } else if (!checkIfTokenValid(req, membershipState.OFFICER)) { |
33 | | - return { status: UNAUTHORIZED, data: [] }; |
34 | | - } |
35 | | - |
| 13 | + const { page = 0, search, sortColumn = 'created_at', sortOrder = 'DESC', limit } = req.query; |
36 | 14 | try { |
37 | | - const cleezyQuery = req.body.query.replace(/[^a-zA-Z0-9]/g, ''); |
| 15 | + const cleezyQuery = search?.replace(/[^a-zA-Z0-9]/g, ''); |
38 | 16 | const cleezyRes = await axios.get(CLEEZY_URL + '/list', { |
39 | 17 | params: { |
40 | | - search: cleezyQuery |
| 18 | + page, |
| 19 | + ...(cleezyQuery !== undefined && { search: cleezyQuery }), |
| 20 | + // eslint-disable-next-line camelcase |
| 21 | + sort_by: sortColumn, |
| 22 | + order: sortOrder, |
41 | 23 | } |
42 | 24 | }); |
43 | | - const cleezyData = cleezyRes.data?.data |
44 | | - .slice(0, 5) |
| 25 | + const { data = [], total, rows_per_page: rowsPerPage } = cleezyRes.data; |
| 26 | + const cleezyData = data |
| 27 | + .slice(0, limit) |
45 | 28 | .map(e => { |
46 | 29 | const u = new URL(e.alias, URL_SHORTENER_BASE_URL); |
47 | 30 | return { ...e, link: u.href }; |
48 | 31 | }); |
49 | 32 |
|
50 | | - return { status: OK, data: cleezyData }; |
| 33 | + return { data: cleezyData, total, rowsPerPage }; |
51 | 34 | } catch (err) { |
52 | | - logger.error('cleezy search urls had an error', err); |
53 | | - return { status: SERVER_ERROR, data: [] }; |
| 35 | + logger.error('cleezyHelpers had an error', err); |
| 36 | + if (err.response && err.response.data) { |
| 37 | + return { |
| 38 | + status: err.response.status, |
| 39 | + error: err.response.data |
| 40 | + }; |
| 41 | + } else { |
| 42 | + return { |
| 43 | + status: SERVER_ERROR, |
| 44 | + error: 'Failed to list URLs in cleezyHelpers' |
| 45 | + }; |
| 46 | + } |
54 | 47 | } |
55 | 48 | }; |
56 | 49 |
|
|
0 commit comments