KV Value Update handles Data wrongly

Aperta
#2,519 4 commenti 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
python
Ambito
api, backend

Direzione di ricerca

Inizia dagli entry point values.update() e metadata.get() e verifica come vengono inviati value, metadata e Content-Type. Riproduci la richiesta con entrambi i campi, quindi aggiungi una copertura di regressione per il comportamento previsto di metadata. Il lavoro è completato quando metadata viene memorizzato separatamente e values.get() non lo restituisce più come parte di value.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Confirm this is a Python library issue and not an underlying Cloudflare API issue.
  • This is an issue with the Python library
Describe the bug

When trying to set a value in the KV Store metadata needs to be provided, but gets merged into the value and no meta data gets set.

In [29]: response = client.kv.namespaces.values.update(key_name="test", value="MY VALUE", metadata="{}", **kv.params)

In [30]: print(client.kv.namespaces.values.get(key_name="test",  **kv.params).text())
{"metadata":"{}","value":"MY VALUE"}

In [31]: print(client.kv.namespaces.metadata.get(key_name="test",  **kv.params) is None)
True

The problem seems to be caused from the whole body of the request being used as the actual value. The behaviour seems to be correct when manually specifying the request's content tye as multipart/form-data:

In [38]: response = client.kv.namespaces.values.update(key_name="test", value="MY VALUE", metadata="{}", **kv.params, extra_headers={"Content-Type": "multipart/form-data"})

In [39]: print(client.kv.namespaces.values.get(key_name="test",  **kv.params).text())
MY VALUE

In [40]: print(client.kv.namespaces.metadata.get(key_name="test",  **kv.params))
{}

This should probably be the default behaviour as it shouldn't be necessary to explicitly override the content type. On the other hand metadata should not be required in which case the whole body could be set as value

To Reproduce
  1. Call values.update() with a value and metadata. Both are set as the actual value.
  2. metadata.get() doesn't return any metadata.
  3. Metadata is returned with the value upon calling values.get().
Code snippets

OS

Every OS

Python version

3.12

Library version

v4.0.0

Lingua principale
Python
Stelle
509
Fork
150
Merge medio
3h 15m
PR unite (30g)
1

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di cloudflare/cloudflare-python

Tutte le issue di cloudflare/cloudflare-python

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.