`context` and `metadata` Map support
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 45/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- javascript
- Bereich
- api
Rechercherichtung
Beginne mit lib/utils/index.js rund um die im Bericht referenzierte Funktion encode_context und reproduziere dann die beiden bereitgestellten Assertions für Map- und Object-Eingaben. Als erledigt gilt die Aufgabe, wenn context und metadata numerische Schlüssel und Werte beibehalten und die erwarteten codierten Zeichenfolgen erzeugen, ohne dass Aufrufer sie vorher konvertieren müssen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Bug report for Cloudinary NPM SDK
Describe the bug in a sentence or two.
The documentation states that context and metadata both support Maps when using this SDK to upload images. However, when attempting to use a Map or even a standard Object, this does not seem to be fully supported. Images are uploaded with missing or entirely omitted context and no error is thrown during the call.
Issue Type (Can be multiple)
[ ] Build - Can’t install or import the SDK
[ ] Babel - Babel errors or cross browser issues
[ ] Performance - Performance issues
[x] Behaviour - Functions aren’t working as expected (Such as generate URL)
[x] Documentation - Inconsistency between the docs and behaviour
[ ] Incorrect Types - For typescript users who are having problems with our d.ts files
[ ] Other (Specify)
Steps to reproduce
The issue appears to be with the encode_context function which is used on both context and metadata options if provided:
In the case of actually providing a Map, the encode function fails to encode entirely and the result is an empty string. In the case of providing an Object, the encoding fails if any of the key/value pairs are a number. When a key value pair is a number only the value is encoded and not the key which leads to unexpected results.
The best way to test is with the following:
const { strict: assert } = require('assert')
const { encode_context: encode } = require('cloudinary/lib/utils')
const contextMap = new Map()
contextMap.set('storeNumber', 100148)
contextMap.set('vin', '5YJ3E1EA1JF045327')
// Fails: encoded context is an empty string
assert.equal(encode(contextMap), 'storeNumber=100148|vin=5YJ3E1EA1JF045327')
const contextObj = { storeNumber: 100148, vin: '5YJ3E1EA1JF045327' }
// Fails: encoded context is missing `storeNumber=`
assert.equal(encode(contextObj), 'storeNumber=100148|vin=5YJ3E1EA1JF045327')
The encoding only appears to work if an Object is supplied and all of the key/value pairs are first converted to a String.
In the meantime we've had to resort to converting our context argument to a string before passing it to the Cloudinary SDK so we ensure consistency, ex:
await cloudinary.uploader.upload(url, {
async: true,
context: Object.entries(context).map(val => val.join('=')).join('|')
})
Versions and Libraries (fill in the version numbers)
Cloudinary_NPM SDK version - 1.26.0
Node - 14.16.1
NPM - 6.14.13
- Vorherrschende Sprache
- JavaScript
- Sterne
- 672
- Forks
- 318
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Kein Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus cloudinary/cloudinary_npm
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 45/100
cloudinary/cloudinary_npm#746 · 1 Kommentar ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
cloudinary/cloudinary_npm#739 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 58/100
cloudinary/cloudinary_npm#734 ·
-
How to handle API KeysOffen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
cloudinary/cloudinary_npm#713 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 45/100
cloudinary/cloudinary_npm#712 · 1 Kommentar ·
Alle Issues in cloudinary/cloudinary_npm
Ähnliche Issues
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
-
discovery:other factory-active task-identify-harness-labels-done task-identify-issue-type-done
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
vercel/ai#25068 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
needs-triage typo
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
llm-d-incubation/llm-d-scaling-manager#122 ·
Maintainer antworten meist innerhalb von 1 Tag
-
create-strapi-app doesn't await writing license.txt, so a failed write skips its error handlingOffenflag: invalid template issue: bug severity: low source: cli status: pending reproduction version: 5
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
strapi/strapi#28637 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
-
meta
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
matrix-org/matrix.org#3774 ·
Maintainer antworten meist innerhalb von 1 Tag