misc: add setting to define string substitutions on HTTP responses (#73805) #63
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/73805-settings-REQUESTS-SUBSTITUTION-p"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
text/, application/ but not application/octet-stream
escaping is used.
Fonctionne sur la ged Parsifal, en me rebasant sur https://dev.entrouvert.org/issues/73771
32a49c37b5
to6b27c575e7
6b27c575e7
to319b14ef68
319b14ef68
toef3903878a
ef3903878a
toc3ba597a81
La clé sur la configuration pourrait être sur le même format que l'URL (cmis/test au lieu de cmis.test). Et l'url pourrait être facultative : sans elle, alors le search/replace est fait sur toutes les requ
@ -248,0 +248,4 @@
# Substitution to apply to textual HTTP responses
# Example for all CMIS connector with slug "test":
# {
# "cmis.test": [
On pourrait mettre carrément cmis/test, ça sera "comme l'URL", plus facile à se rappeler.
Aussi, ce commentaire, le commencer par REQUESTS_SUBSTITUTIONS = pour rappeler que c'est ce settings dont on parle.
@ -248,0 +250,4 @@
# {
# "cmis.test": [
# {
# 'url': 'https://service.example.com/api/',
"url" devrait être facultative, si elle n'existe pas alors le search/replace se fait sur toutes les requests du connecteur. Ca aidera, la config n'aura pas à être modifiée si l'URL cible change.
@ -283,0 +297,4 @@
if not isinstance(substitution, dict):
self.logger.warning('substitution: invalid substitution, %r', substitution)
return
for key in ['url', 'search', 'replace']:
vu plus haut : rendre la clé "url" facultative
J'ai ajouté deux commits temporaires avec les modifications demandées.
Désolé j'avais raté un truc sur le log (le reste me semble tout bon)
@ -282,1 +283,4 @@
def _substitute(self, search, replace, value):
if isinstance(value, str):
value = re.sub(search, replace, value)
Je me dis que ça serait pas mal d'utiliser ici re.subn et de faire un self.logger.debug s'il y a eu au moins une substitution, un truc comme :
@ -283,0 +332,4 @@
self.logger.debug('substitution: content_type did not match %s', content_type)
return
self.logger.debug('substitution: %s matched', substitution)
ce debug (me) laisse à penser que la substitution va être faite ("matched"). Plutôt écrire plus explicitement « substitution: try %s » ?
e7334c81a3
tofb44371519
La dernière mise à jour de la branche intègre la proposition de définir un setting plus générique CONNECTORS_SETTINGS, indexé par les chaînes f'{instance.get_connector_slug()}/{instance.slug}' dont requests_subtitutions est la première clé définie.
J'ai intégré tes remarques sur les logs.
15b0061d00
to121bd40ab4
ce966a822f
to7cf2ae472b
Il reste un "cmis.test" dans le message de commit, en dehors de ça tout est ok.
7cf2ae472b
to738709aa9c