diff --git a/server/controllers/jiraController.js b/server/controllers/jiraController.js new file mode 100644 index 0000000..6d4298f --- /dev/null +++ b/server/controllers/jiraController.js @@ -0,0 +1,30 @@ +const jiraService = require('../services/jiraService'); + +const searchClient = async (req, res) => { + const jql = req.query.jql; + const jiraUrl = req.query.jiraUrl; + const username = req.query.username; + const password = req.query.password; + let jiraClient; + + try { + if ((jiraUrl, username, password, jql)) { + jiraClient = await jiraService.searchJiraClient( + jiraUrl, + username, + password, + jql + ); + } else { + res.status(422).json({message: 'wrong data'}); + } + + res.status(200).json(jiraClient); + } catch (error) { + res.status(error.status).json(error.message); + } +}; + +module.exports = { + searchClient +}; diff --git a/server/controllers/search.js b/server/controllers/search.js deleted file mode 100644 index 6d31d61..0000000 --- a/server/controllers/search.js +++ /dev/null @@ -1,30 +0,0 @@ -const express = require('express'); -const router = express.Router(); -const JiraClient = require('jira-connector'); - -router.get('/search', (req, res) => { - const jql = req.query.jql; - const jiraUrl = req.query.jiraUrl; - const username = req.query.username; - const password = req.query.password; - - const jira = new JiraClient({ - host: jiraUrl, - basic_auth: { - username: username, - password: password - } - }); - - jira.search.search( - { - jql: jql, - maxResults: 500 - }, - (error, data) => { - res.json(data); - } - ); -}); - -module.exports = router; diff --git a/server/router/index.js b/server/router/index.js new file mode 100644 index 0000000..9f29139 --- /dev/null +++ b/server/router/index.js @@ -0,0 +1,7 @@ +const express = require('express'); +const jiraController = require('../controllers/jiraController'); +const router = express.Router(); + +router.get('/search', jiraController.searchClient); + +module.exports = router; diff --git a/server/server.js b/server/server.js index 4cba5ea..b966925 100644 --- a/server/server.js +++ b/server/server.js @@ -18,7 +18,7 @@ app.use(function (req, res, next) { app.use(bodyParser.json()); -app.use('/api', require('../server/controllers/search')); +app.use('/api', require('./router/index')); const PORT = process.env.PORT || 5000; diff --git a/server/services/jiraService.js b/server/services/jiraService.js new file mode 100644 index 0000000..6644466 --- /dev/null +++ b/server/services/jiraService.js @@ -0,0 +1,29 @@ +const JiraClient = require('jira-connector'); + +const searchJiraClient = async (jiraUrl, username, password, jql) => { + const jira = new JiraClient({ + host: jiraUrl, + basic_auth: { + username: username, + password: password + } + }); + + await jira.search.search( + { + jql: jql, + maxResults: 500 + }, + (error, data) => { + if (error) { + throw new Error(error); + } else if (data) { + return data; + } + } + ); +}; + +module.exports = { + searchJiraClient +};