Skip to content

Commit 16f517d

Browse files
committed
Merge remote-tracking branch 'origin/master' into feature/delete-resources-by-asset-ids
2 parents 5ef15bf + 362f676 commit 16f517d

38 files changed

+1355
-719
lines changed

.github/workflows/ci.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: ["**"]
6+
pull_request:
7+
branches: ["**"]
8+
9+
jobs:
10+
test:
11+
name: Node ${{ matrix.node }} • tests
12+
strategy:
13+
fail-fast: false
14+
matrix:
15+
node: ["9", "10", "12", "14", "16", "18", "20", "22"]
16+
runs-on: ubuntu-latest
17+
timeout-minutes: 30
18+
steps:
19+
- name: Checkout
20+
uses: actions/checkout@v4
21+
22+
- name: Setup Node
23+
uses: actions/setup-node@v4
24+
with:
25+
node-version: ${{ matrix.node }}
26+
27+
- name: Print Node & npm versions
28+
run: |
29+
node -v
30+
npm -v
31+
32+
- name: Install dependencies
33+
run: npm ci || npm i
34+
35+
- name: Run tests with timeout
36+
timeout-minutes: 25
37+
run: npm run test-with-temp-cloud

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ coverage
1414
tools/cloudinary_url.sh
1515
package-lock.json
1616
npm-debug.log
17+
.vscode/

.travis.yml

Lines changed: 0 additions & 22 deletions
This file was deleted.

CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,29 @@
1+
2.7.0 / 2025-06-18
2+
==================
3+
4+
* fix: prevent parameter injection via ampersand in parameter values (#709)
5+
6+
2.6.1 / 2025-05-05
7+
==================
8+
9+
10+
11+
2.6.1-rc.1 / 2025-05-05
12+
==================
13+
14+
* fix: uploader interface
15+
16+
2.6.0 / 2025-03-11
17+
==================
18+
19+
* chore: bumped jsdoc
20+
* fix: defaults for related asset methods and proper content_type
21+
* chore: Updated Sample Projects (#698)
22+
* fix: metadata field datasource type (#693)
23+
* feat: Add support for DELETE /resources/backup/:asset_id (#700)
24+
* chore: dev dependencies cleanup
25+
* chore: new node version support in CI
26+
127
2.5.1 / 2024-10-08
228
==================
329

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ cloudinary.v2.uploader.upload("/home/my_image.jpg", {upload_preset: "my_preset"}
7474

7575
## Contributions
7676
- Ensure tests run locally (add test command)
77-
- Open a PR and ensure Travis tests pass
77+
- Open a PR and ensure tests pass
7878

7979

8080
## Get Help

lib/api.js

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,18 @@ exports.delete_all_resources = function delete_all_resources(callback, options =
184184
}), callback, options);
185185
};
186186

187+
exports.delete_backed_up_assets = (assetId, versionIds, callback, options = {}) => {
188+
const params = deleteBackupParams(versionIds);
189+
190+
return call_api('delete', ['resources', 'backup', assetId], params, callback, options);
191+
}
192+
193+
const deleteBackupParams = (versionIds = []) => {
194+
return {
195+
"version_ids[]": Array.isArray(versionIds) ? versionIds : [versionIds]
196+
};
197+
};
198+
187199
const createRelationParams = (publicIds = []) => {
188200
return {
189201
assets_to_relate: Array.isArray(publicIds) ? publicIds : [publicIds]
@@ -198,21 +210,29 @@ const deleteRelationParams = (publicIds = []) => {
198210

199211
exports.add_related_assets = (publicId, assetsToRelate, callback, options = {}) => {
200212
const params = createRelationParams(assetsToRelate);
201-
return call_api('post', ['resources', 'related_assets', options.resource_type, options.type, publicId], params, callback, options);
213+
const resourceType = options.resource_type || 'image';
214+
const type = options.type || 'upload';
215+
options.content_type = 'json';
216+
return call_api('post', ['resources', 'related_assets', resourceType, type, publicId], params, callback, options);
202217
};
203218

204219
exports.add_related_assets_by_asset_id = (assetId, assetsToRelate, callback, options = {}) => {
205220
const params = createRelationParams(assetsToRelate);
221+
options.content_type = 'json';
206222
return call_api('post', ['resources', 'related_assets', assetId], params, callback, options);
207223
};
208224

209225
exports.delete_related_assets = (publicId, assetsToUnrelate, callback, options = {}) => {
210226
const params = deleteRelationParams(assetsToUnrelate);
211-
return call_api('delete', ['resources', 'related_assets', options.resource_type, options.type, publicId], params, callback, options);
227+
const resourceType = options.resource_type || 'image';
228+
const type = options.type || 'upload';
229+
options.content_type = 'json';
230+
return call_api('delete', ['resources', 'related_assets', resourceType, type, publicId], params, callback, options);
212231
};
213232

214233
exports.delete_related_assets_by_asset_id = (assetId, assetsToUnrelate, callback, options = {}) => {
215234
const params = deleteRelationParams(assetsToUnrelate);
235+
options.content_type = 'json';
216236
return call_api('delete', ['resources', 'related_assets', assetId], params, callback, options);
217237
};
218238

lib/preloaded_file.js

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,7 @@ class PreloadedFile {
2424
}
2525

2626
is_valid() {
27-
let expected_signature;
28-
expected_signature = utils.api_sign_request({
29-
public_id: this.public_id,
30-
version: this.version
31-
}, config().api_secret);
32-
return this.signature === expected_signature;
27+
return utils.verify_api_response_signature(this.public_id, this.version, this.signature);
3328
}
3429

3530
static split_format(identifier) {

lib/utils/analytics/getSDKVersions.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ function getSDKVersions(useSDKVersion = 'default', useNodeVersion = 'default') {
2626
const sdkSemver = useSDKVersion === 'default' ? readSdkSemver() : useSDKVersion;
2727

2828
// allow to pass a custom techVersion (Node version)
29-
const techVersion = useNodeVersion === 'default' ? process.versions.node : useNodeVersion;
29+
const version = process.version.slice(1);
30+
const techVersion = useNodeVersion === 'default' ? version : useNodeVersion;
3031

3132
const product = 'A';
3233

0 commit comments

Comments
 (0)