Advertisement
Guest User

Untitled

a guest
Mar 28th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. 'use strict';
  2.  
  3. import interval from 'interval-promise';
  4. import cheerio from 'cheerio';
  5. import request from 'request-promise';
  6.  
  7. require('dotenv').config();
  8.  
  9. //Não mexer na função requestBody, somente se necessário
  10. export function requestBody(config) {
  11. return new Promise((resolve, reject) => {
  12. const requestWithProxy = request.defaults({proxy: process.env.PROXY});
  13.  
  14. requestWithProxy.get({
  15. uri: config.url,
  16. transform: (body) => cheerio.load(body),
  17. rejectUnauthorized: false,
  18. headers: {
  19. 'Authorization': 'Basic ' + Buffer.from(config.username + ":" + config.password).toString('base64')
  20. }
  21. })
  22. .then(($) => {
  23. resolve(config.callback($));
  24. })
  25. .catch((err) => {console.error('Deu errado', err); reject(err)});
  26. });
  27. }
  28.  
  29. function getTasksByProject(projectName) {
  30. const configRedmine = {
  31. url: process.env.URL_BASE + projectName + process.env.URL_FILTRO,
  32. username: process.env.USERNAME_REDMINE,
  33. password: process.env.PASSWORD_REDMINE,
  34. callback: ($) => {
  35. let tasks = [{}];
  36.  
  37. //Caso haja alteração no filtro para tabela, devera ser adicionado aqui também
  38. $('.list > tbody:nth-child(2) tr').each((i, item) => {
  39. let task = {
  40. id: $(item).find('td:nth-child(2)').text().trim(),
  41. status: $(item).find('td:nth-child(3)').text().trim(),
  42. type: $(item).find('td:nth-child(4)').text().trim(),
  43. subject: $(item).find('td:nth-child(5)').text().trim(),
  44. project: $(item).find('td:nth-child(6)').text().trim(),
  45. startDate: $(item).find('td:nth-child(7)').text().trim(),
  46. endDate: $(item).find('td:nth-child(8)').text().trim()
  47. };
  48.  
  49. tasks.push(task);
  50. });
  51.  
  52. return tasks;
  53. }
  54. };
  55.  
  56. let tasksResult = requestBody(configRedmine)
  57. .then((data) => {
  58. return data;
  59. })
  60. .catch((err) => {
  61. console.log('Error: ', err);
  62. });
  63.  
  64. return tasksResult;
  65. }
  66.  
  67. //Executar de forma interval
  68. interval(async () => {
  69. console.log('Resultado: ', await getTasksByProject('platbr'));
  70. }, parseInt(process.env.INTERVAL));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement