`JSONFormat` shouldn't depend on Content-Type to avoid generating invalid JSON
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 68/100
Piste de recherche
Commencez dans src/cloudevents/core/formats/json.py à la ligne indiquée et examinez la gestion de data et de Content-Type par JSONFormatter. Vérifiez que des données de type dictionnaire produisent un JSON valide même avec application/octet-stream, et exécutez les tests pertinents du formatter ou ajoutez une couverture pour ce cas.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Hi,
i just upgraded my service to v2.
The problem:
- the service which produces the cloudevents is maintained by another team, i.e. not in my control
- they send the events with Content-Type
application/octet-stream - therefore, in my tests i also emulate sending the events with that Content-Type:
event = CloudEvent(
attributes={..., "datacontenttype": "application/octet-stream"},
data=payload, # <- this is a dictionary
)
message = tobinary_event(event)
client.post("/trigger", content=message.body, headers=message.headers)
now my tests started to send invalid json data (using single quotes instead of double quotes). The reason is this line. E.g. it converts {"asdf": True} to b"{'asdf', True}".
i initially didn't realise this comes from my test case and assumed the SDK generates the invalid data. It took me a while to figure out that only my test setup is wrong.
Proposed solution:
I think str(data).encode("utf-8") is a bad default. Instead, the JSONFormatter should always try to return dumps(data, cls=_JSONEncoderWithDatetime).encode("utf-8"), regardless of the content type. it's the JSONFormatter, so when i pass in a dictionary, i expect it to generate valid json. If it can't, then it's fine to fail with a json.JSONDecodeError or the like. Imo, failing is better than silently generating invalid request data.
Wdyt?
- Langage dominant
- Python
- Étoiles
- 342
- Forks
- 65
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de cloudevents/sdk-python
-
Kafka `to_binary()` crashes on events without `datacontenttype` or with non-string attributes Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
cloudevents/sdk-python#304 ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
cloudevents/sdk-python#300 ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 48/100
cloudevents/sdk-python#247 · 2 commentaires ·
-
question
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
cloudevents/sdk-python#246 · 5 commentaires ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
cloudevents/sdk-python#213 · 3 commentaires · 1 réaction ·
Toutes les issues de cloudevents/sdk-python
Issues similaires
-
area/auth bug comp/agent P3 platform/discord type/security
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
NousResearch/hermes-agent#117848 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
bancolombia/sentinel#23 ·
-
test md OuverteCI
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100