`context` and `metadata` Map support
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript
- Área
- api
Línea de trabajo
Comienza con lib/utils/index.js alrededor de la función encode_context referenciada en el informe y, después, reproduce las dos assertions proporcionadas para entradas Map y Object. Se considera terminado cuando context y metadata conservan las claves y los valores numéricos y producen las cadenas codificadas esperadas sin requerir que los llamadores los conviertan previamente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- JavaScript
- Estrellas
- 672
- Forks
- 318
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de cloudinary/cloudinary_npm
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
cloudinary/cloudinary_npm#746 · 1 comentario ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
cloudinary/cloudinary_npm#739 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 58/100
cloudinary/cloudinary_npm#734 ·
-
How to handle API KeysAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
cloudinary/cloudinary_npm#713 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
cloudinary/cloudinary_npm#712 · 1 comentario ·
Todos los issues de cloudinary/cloudinary_npm
Issues similares
-
bug confirmed issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
open-webui/open-webui#34458 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
documentation good first issue
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
-
area: install-setup needs-info question
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
accessibility area: css area: web ui bug difficulty: easy frontend good first issue help wanted javascript journey: first-visit journey: mobile priority: P3 quality tech: css tech: html typescript ui user-experience
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
themactep/thingino-firmware#2018 ·
Los mantenedores suelen responder en 1 día