Skip to content

Commit 55a53dc

Browse files
committed
cleezy.js post '/list' calls cleezyHelpers.js instead. cleezyHelpers.js supports limit record returns
1 parent 4f2b1a4 commit 55a53dc

File tree

3 files changed

+36
-58
lines changed

3 files changed

+36
-58
lines changed

api/main_endpoints/routes/Cleezy.js

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const {
1414
const logger = require('../../util/logger');
1515
const { Cleezy } = require('../../config/config.json');
1616
const { ENABLED } = Cleezy;
17+
const cleezyHelpers = require('../util/cleezyHelpers.js');
1718

1819
let CLEEZY_URL = process.env.CLEEZY_URL
1920
|| 'http://localhost:8000';
@@ -26,28 +27,14 @@ router.get('/list', async (req, res) => {
2627
disabled: true
2728
});
2829
}
29-
const { page = 0, search, sortColumn = 'created_at', sortOrder = 'DESC'} = req.query;
3030
if (!checkIfTokenSent(req)) {
3131
return res.sendStatus(FORBIDDEN);
3232
} else if (!await decodeToken(req)) {
3333
return res.sendStatus(UNAUTHORIZED);
3434
}
3535
try {
36-
const response = await axios.get(CLEEZY_URL + '/list', {
37-
params: {
38-
page,
39-
...(search !== undefined && { search }),
40-
// eslint-disable-next-line camelcase
41-
sort_by: sortColumn,
42-
order: sortOrder
43-
},
44-
});
45-
const { data = [], total, rows_per_page: rowsPerPage } = response.data;
46-
const returnData = data.map(element => {
47-
const u = new URL(element.alias, URL_SHORTENER_BASE_URL);
48-
return { ...element, link: u.href };
49-
});
50-
res.json({ data: returnData, total, rowsPerPage });
36+
const returnData = await cleezyHelpers.searchCleezyUrls(req);
37+
res.json(returnData);
5138
} catch (err) {
5239
logger.error('/listAll had an error', err);
5340
if (err.response && err.response.data) {

api/main_endpoints/routes/ShortcutSearch.js

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const logger = require('../../util/logger');
1818
const { Cleezy } = require('../../config/config.json');
1919
const { ENABLED } = Cleezy;
2020
const cleezy = require('../util/cleezyHelpers.js');
21+
const MAX_RESULT = 5;
2122

2223
// Search for all members using either first name, last name or email
2324
// Search for all cleezy urls using either alias or url
@@ -106,7 +107,7 @@ router.post('/', async function(req, res) {
106107

107108
// Find user and sort results based on best match of full name or email
108109
try{
109-
const users = await User.find(maybeOr, { password: 0 }).limit(5);
110+
const users = await User.find(maybeOr, { password: 0 }).limit(MAX_RESULT);
110111
users.sort(sortByMatch(req.body.query));
111112

112113
// Short circuit if cleezy is disabled
@@ -117,17 +118,14 @@ router.post('/', async function(req, res) {
117118
});
118119
}
119120

120-
const cleezyRes = await cleezy.searchCleezyUrls(req);
121-
if (cleezyRes.status !== OK) {
122-
logger.warn('Cleezy search failed', {
123-
status: cleezyRes.status
124-
});
125-
126-
return res.status(OK).send({
127-
cleezyStatus: cleezyRes.status,
128-
items: { users }
129-
});
130-
}
121+
const cleezyReq = {
122+
query: {
123+
search: req.body.query,
124+
page: 0,
125+
limit: MAX_RESULT,
126+
}
127+
};
128+
const cleezyRes = await cleezy.searchCleezyUrls(cleezyReq);
131129

132130
return res.status(OK).send({
133131
items: {

api/main_endpoints/util/cleezyHelpers.js

Lines changed: 23 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,49 @@
1-
const express = require('express');
21
const axios = require('axios');
3-
const router = express.Router();
42
const {
5-
decodeToken,
6-
checkIfTokenSent,
7-
checkIfTokenValid,
8-
} = require('./token-functions.js');
9-
const {
10-
OK,
11-
UNAUTHORIZED,
12-
FORBIDDEN,
133
SERVER_ERROR,
144
} = require('../../util/constants.js').STATUS_CODES;
155
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;
196

207
let CLEEZY_URL = process.env.CLEEZY_URL
218
|| 'http://localhost:8000';
229
let URL_SHORTENER_BASE_URL =
2310
process.env.NODE_ENV === 'production' ? 'https://sce.sjsu.edu/s/' : 'http://localhost:8000/find/';
2411

2512
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;
3614
try {
37-
const cleezyQuery = req.body.query.replace(/[^a-zA-Z0-9]/g, '');
15+
const cleezyQuery = search?.replace(/[^a-zA-Z0-9]/g, '');
3816
const cleezyRes = await axios.get(CLEEZY_URL + '/list', {
3917
params: {
40-
search: cleezyQuery
18+
page,
19+
...(cleezyQuery !== undefined && { search: cleezyQuery }),
20+
// eslint-disable-next-line camelcase
21+
sort_by: sortColumn,
22+
order: sortOrder,
4123
}
4224
});
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)
4528
.map(e => {
4629
const u = new URL(e.alias, URL_SHORTENER_BASE_URL);
4730
return { ...e, link: u.href };
4831
});
4932

50-
return { status: OK, data: cleezyData };
33+
return { data: cleezyData, total, rowsPerPage };
5134
} 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+
}
5447
}
5548
};
5649

0 commit comments

Comments
 (0)