Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env node
- /* eslint-disable import/no-commonjs */
- const request = require('request')
- const Promise = require('bluebird')
- const FISHEYE_BASE_URL = 'FILL_IN_URL'
- const userName = (process.argv[2]).toString()
- const password = (process.argv[3]).toString()
- let token
- function checkArguments() {
- return Promise.try(() => {
- if (process.argv.length < 3) {
- process.stdout.write(`Usage: ${process.argv[1]}: user_name password \n`)
- process.exit()
- }
- })
- }
- function getToken() {
- const options = {
- url: `${FISHEYE_BASE_URL}/rest-service-fecru/auth/login`,
- method: 'POST',
- form: {
- userName,
- password,
- },
- }
- return makeRequest(options).then(response => {
- token = response.token
- })
- }
- function getOpenReviews() {
- const options = {
- url: `${FISHEYE_BASE_URL}/rest-service/reviews-v1/filter`,
- qs: {
- author: userName,
- states: 'Review',
- FEAUTH: token,
- },
- method: 'GET',
- headers: {
- 'Content-Type': 'application/json',
- 'Accept': 'application/json',
- },
- }
- return makeRequest(options).then(response => {
- return response.reviewData.map(review => review.permaId.id)
- })
- }
- function closeAllReviews(reviewIds) {
- const getOptions = function getOptions(id) {
- return {
- url: `${FISHEYE_BASE_URL}/rest-service/reviews-v1/${id}/transition`,
- qs: {
- action: 'action:closeReview',
- FEAUTH: token,
- },
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- 'Accept': 'application/json',
- },
- }
- }
- const promises = reviewIds.map((id, i) => {
- return makeRequest(getOptions(id))
- })
- return Promise.all(promises)
- .then(promises => console.log(`Successfully closed ${promises.length} reviews`))
- .catch(e => console.log(e))
- }
- // wrap request in promise
- function makeRequest(options) {
- return new Promise((resolve, reject) => {
- request(options, (err, response) => {
- if (err) {
- reject(err)
- } else if (response.statusCode > 400) {
- reject(new Error(`Received status ${response.statusMessage} (${response.statusCode})\n\n${response.body}`))
- } else {
- try {
- resolve(JSON.parse(response.body))
- } catch (e) {
- resolve()
- }
- }
- })
- })
- }
- checkArguments()
- .then(getToken)
- .then(getOpenReviews)
- .then(closeAllReviews)
- .catch((error) => {
- process.stdout.write(error.stack)
- process.exit()
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement