From c184309f898ba82d8eb4894d86c0f84cd5a87192 Mon Sep 17 00:00:00 2001 From: Adela Homolova Date: Tue, 26 Nov 2019 13:15:06 +0100 Subject: [PATCH 1/2] fix: Add possibility to list all pullrequests. See https://developer.atlassian.com/bitbucket/api/2/reference/resource/pullrequests/%7Btarget_user%7D --- package-lock.json | 13 ++++++++---- package.json | 20 +++++++++++++------ .../__tests__/add-query-parameters.test.js | 7 +++++++ src/utils/add-query-parameters.js | 7 +++++++ 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 730e490..b641612 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6402,10 +6402,9 @@ "dev": true }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", + "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==" }, "querystring": { "version": "0.2.0", @@ -6623,6 +6622,12 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", diff --git a/package.json b/package.json index 9e9c064..0971b4b 100644 --- a/package.json +++ b/package.json @@ -2,17 +2,25 @@ "name": "bitbucket", "version": "1.15.2", "description": "Bitbucket API client for Browser and Node.js", - "keywords": ["bitbucket", "bitbucket-api", "api-client", "api", "rest"], + "keywords": [ + "bitbucket", + "bitbucket-api", + "api-client", + "api", + "rest" + ], "homepage": "https://github.com/MunifTanjim/node-bitbucket#readme", "bugs": "https://github.com/MunifTanjim/node-bitbucket/issues", "license": "MIT", "author": "MunifTanjim (https://muniftanjim.com)", - "files": ["src", "dist/*.js"], + "files": [ + "src", + "dist/*.js" + ], "main": "src/index.js", "types": "src/index.d.ts", "browser": { - "./src/utils/get-buffer-response.js": - "./src/utils/get-buffer-response-browser.js" + "./src/utils/get-buffer-response.js": "./src/utils/get-buffer-response-browser.js" }, "repository": "github:MunifTanjim/node-bitbucket", "scripts": { @@ -20,8 +28,7 @@ "prebuild:browser": "mkdirp dist", "build:browser": "npm-run-all -p build:browser:*", "build:browser:development": "webpack --mode development", - "build:browser:production": - "webpack --mode production --output-filename=bitbucket.min.js", + "build:browser:production": "webpack --mode production --output-filename=bitbucket.min.js", "prebuild:docs": "mkdirp docs", "build:docs": "npm run generate:api-docs", "postbuild:docs": "apidoc -i docs -o docs", @@ -45,6 +52,7 @@ "debug": "^3.1.0", "is-plain-object": "^2.0.4", "node-fetch": "^2.1.2", + "qs": "^6.9.1", "url-template": "^2.0.8" }, "devDependencies": { diff --git a/src/utils/__tests__/add-query-parameters.test.js b/src/utils/__tests__/add-query-parameters.test.js index 1c0f660..4c6a4cb 100644 --- a/src/utils/__tests__/add-query-parameters.test.js +++ b/src/utils/__tests__/add-query-parameters.test.js @@ -47,4 +47,11 @@ describe('utils:add-query-parameters', () => { }) expect(qs).toMatchSnapshot() }) + + it('accepts array for state, so it can return all pull requests', () => { + let state = addQueryParameters(url, { + state: ['MERGED', 'OPEN'] + }) + expect(state).toBe('/?state=MERGED&state=OPEN') + }) }) diff --git a/src/utils/add-query-parameters.js b/src/utils/add-query-parameters.js index 2e7116f..f3233cf 100644 --- a/src/utils/add-query-parameters.js +++ b/src/utils/add-query-parameters.js @@ -4,6 +4,8 @@ * @param {Object} params - Query Parameters * @returns {String} URL with added Query Parameters */ +const qs = require('qs') + const addQueryParameters = (url, params = {}) => { const separator = /\?/.test(url) ? '&' : '?' const names = Object.keys(params) @@ -25,6 +27,11 @@ const addQueryParameters = (url, params = {}) => { ) .join('+')}` } + if (name === 'state') { + if (Array.isArray(params.state)) { + return `${qs.stringify({ state: params.state }, { arrayFormat: "repeat" })}` + } + } return `${name}=${encodeURIComponent(params[name])}` }) .join('&')}` From b2ad36ce8319bcd530728f830a6fdc30c31d6f7f Mon Sep 17 00:00:00 2001 From: Adela Homolova Date: Tue, 26 Nov 2019 20:51:38 +0100 Subject: [PATCH 2/2] fix: return state as a array of enum --- scripts/type-defs.json | 17 ++++++++++------- specification/definitions.json | 5 ++++- src/routes/routes.json | 19 +++++++++++-------- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/scripts/type-defs.json b/scripts/type-defs.json index e506c2a..4fd5492 100644 --- a/scripts/type-defs.json +++ b/scripts/type-defs.json @@ -4064,13 +4064,16 @@ "$ref": "#/definitions/PullrequestEndpoint" }, "state": { - "enum": [ - "MERGED", - "SUPERSEDED", - "OPEN", - "DECLINED" - ], - "type": "string" + "items": { + "enum": [ + "MERGED", + "SUPERSEDED", + "OPEN", + "DECLINED" + ], + "type": "string" + }, + "type": "array" }, "summary": { "additionalProperties": false, diff --git a/specification/definitions.json b/specification/definitions.json index 275a5df..9aac7b4 100644 --- a/specification/definitions.json +++ b/specification/definitions.json @@ -4914,13 +4914,16 @@ }, "state": { "description": "The pull request's current status.", - "enum": [ + "items": { + "enum": [ "MERGED", "SUPERSEDED", "OPEN", "DECLINED" ], "type": "string" + }, + "type": "array" }, "summary": { "additionalProperties": false, diff --git a/src/routes/routes.json b/src/routes/routes.json index ea9eb7c..ea91d2f 100644 --- a/src/routes/routes.json +++ b/src/routes/routes.json @@ -3844,14 +3844,17 @@ "type": "string" }, "state": { - "enum": [ - "MERGED", - "SUPERSEDED", - "OPEN", - "DECLINED" - ], - "in": "query", - "type": "string" + "items": { + "enum": [ + "MERGED", + "SUPERSEDED", + "OPEN", + "DECLINED" + ], + "type": "string" + }, + "in": "query", + "type": "array" }, "username": { "in": "path",