Advertisement
Guest User

Untitled

a guest
Jul 15th, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. #!/usr/bin/env node
  2. /* eslint-disable import/no-commonjs */
  3.  
  4. const request = require('request')
  5. const Promise = require('bluebird')
  6.  
  7. const FISHEYE_BASE_URL = 'FILL_IN_URL'
  8. const userName = (process.argv[2]).toString()
  9. const password = (process.argv[3]).toString()
  10. let token
  11.  
  12. function checkArguments() {
  13. return Promise.try(() => {
  14. if (process.argv.length < 3) {
  15. process.stdout.write(`Usage: ${process.argv[1]}: user_name password \n`)
  16. process.exit()
  17. }
  18. })
  19. }
  20.  
  21. function getToken() {
  22. const options = {
  23. url: `${FISHEYE_BASE_URL}/rest-service-fecru/auth/login`,
  24. method: 'POST',
  25. form: {
  26. userName,
  27. password,
  28. },
  29. }
  30. return makeRequest(options).then(response => {
  31. token = response.token
  32. })
  33. }
  34.  
  35. function getOpenReviews() {
  36. const options = {
  37. url: `${FISHEYE_BASE_URL}/rest-service/reviews-v1/filter`,
  38. qs: {
  39. author: userName,
  40. states: 'Review',
  41. FEAUTH: token,
  42. },
  43. method: 'GET',
  44. headers: {
  45. 'Content-Type': 'application/json',
  46. 'Accept': 'application/json',
  47. },
  48. }
  49. return makeRequest(options).then(response => {
  50. return response.reviewData.map(review => review.permaId.id)
  51. })
  52. }
  53.  
  54. function closeAllReviews(reviewIds) {
  55. const getOptions = function getOptions(id) {
  56. return {
  57. url: `${FISHEYE_BASE_URL}/rest-service/reviews-v1/${id}/transition`,
  58. qs: {
  59. action: 'action:closeReview',
  60. FEAUTH: token,
  61. },
  62. method: 'POST',
  63. headers: {
  64. 'Content-Type': 'application/json',
  65. 'Accept': 'application/json',
  66. },
  67. }
  68. }
  69.  
  70. const promises = reviewIds.map((id, i) => {
  71. return makeRequest(getOptions(id))
  72. })
  73.  
  74. return Promise.all(promises)
  75. .then(promises => console.log(`Successfully closed ${promises.length} reviews`))
  76. .catch(e => console.log(e))
  77. }
  78.  
  79. // wrap request in promise
  80. function makeRequest(options) {
  81. return new Promise((resolve, reject) => {
  82. request(options, (err, response) => {
  83. if (err) {
  84. reject(err)
  85. } else if (response.statusCode > 400) {
  86. reject(new Error(`Received status ${response.statusMessage} (${response.statusCode})\n\n${response.body}`))
  87. } else {
  88. try {
  89. resolve(JSON.parse(response.body))
  90. } catch (e) {
  91. resolve()
  92. }
  93. }
  94. })
  95. })
  96. }
  97.  
  98. checkArguments()
  99. .then(getToken)
  100. .then(getOpenReviews)
  101. .then(closeAllReviews)
  102. .catch((error) => {
  103. process.stdout.write(error.stack)
  104. process.exit()
  105. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement