Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: visualize web with context #326

Merged
merged 6 commits into from
Nov 22, 2024
Merged

Conversation

nsenave
Copy link
Contributor

@nsenave nsenave commented Nov 21, 2024

Summary

Done

Après le merge de la PR de @laurentC35 sur la requête Eno "Pogues -> Lunatic" direct (à la place du pipeline "Pogues -> DDI" puis "DDI -> Lunatic", la méthode qui fait DDI to Lunatic du EnoClient n'est plus appelée et c'est sur cette méthode que tu avais ajouté le query param avec le contexte @RemiVerriez

Corrigé + pas mal de refacto

@nsenave nsenave self-assigned this Nov 21, 2024
@nsenave nsenave added the deploy-snapshot To be used in PR to trigger snapshot deploy pipeline label Nov 21, 2024
@github-actions github-actions bot removed the deploy-snapshot To be used in PR to trigger snapshot deploy pipeline label Nov 21, 2024
Copy link

👋 Version 4.9.2-SNAPSHOT deployed on docker hub

@nsenave nsenave added the deploy-snapshot To be used in PR to trigger snapshot deploy pipeline label Nov 21, 2024
@github-actions github-actions bot removed the deploy-snapshot To be used in PR to trigger snapshot deploy pipeline label Nov 21, 2024
Copy link

👋 Version 4.9.2-SNAPSHOT.1 deployed on docker hub

@nsenave nsenave merged commit 85a80ba into next Nov 22, 2024
7 checks passed
@nsenave nsenave deleted the fix/visualize-web-with-context branch November 22, 2024 13:27
nsenave added a commit that referenced this pull request Nov 22, 2024
* test: add json questionnaire in resources

* fix: add context param in pogues to lunatic endpoint

* refactor: eno client and visualize related classes

* chore: bump version
@FBibonne FBibonne self-requested a review November 22, 2024 16:49
@Service
@RequiredArgsConstructor
@Slf4j
public class EnoHttpClient implements EnoClient {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Utiliser un record

public class EnoHttpClient implements EnoClient {

@Value("${application.eno.host}")
String enoHost;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Attribut du record

@Value("${application.eno.host}")
String enoHost;

private final WebClient webClient;
Copy link
Member

@FBibonne FBibonne Nov 26, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UItiliser RestClient avec enoHost en baseUrl. Le même client peut être partagé par toutes les méthodes

Il est peut probable que le client http sous jacent par défaut utilise la compression web : ce sont des données qui peuvent être volumineuses, il faudrait l'activer par défaut. le client Oktttp le fait (cf. https://www.wiremock.io/post/java-http-client-comparison#the-clients) avec du http 2 automatiquement également. En principe Apache http client fait la compression automatiquement aussi mais pas le http2 (moins important à l'intérieur d'un datacenter je pense)

Voir aussi la minification des fichiers envoyés : (enlever espaces, retour à la ligne, indentations ...) : ça fait gagner du poids également.


/** {@link EnoClient#getParameters()} */
@Override
public void getParameters() {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A quoi sert cette méthode qui n'envoie pas d'information à eno et qui n'utilise pas les données récupérées dans eno

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bonne question, et mauvaise réponse 😈 : c'est uniquement utilisé comme un healthcheck : si la méthode plante pas => le WS Eno répond. J'ai laissé ça comme ça pour l'instant, c'est documenté dans la méthode côté interface cf. le @link (peut-être mettre la doc en question dans l'implem mais bon ça a vocation a être viré)

*/
@Override
@Deprecated(since = "4.9.2")
public String getDDIToLunaticJSON(String inputAsString, Map<String, Object> params) throws EnoException, PoguesException {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dans l'idéal, il faudrait un objet java Parametres qui possède un attribut mode. Mais on fait avec ce qu'on a ;-)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est ça, j'ai pas essayé de changer la signature de la méthode pour faire plus propre et voir les impacts, mais à vue de nez j'avais pas envie je me suis dit que ça n’emmènerait trop loin.

@@ -12,9 +12,9 @@
import static fr.insee.pogues.utils.IOStreamsUtils.string2BOAS;

@Service
@AllArgsConstructor
public class PoguesJSONToLunaticJSONImpl implements PoguesJSONToLunaticJSON {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

record ;-)

public class PoguesJSONToLunaticJSONImpl implements PoguesJSONToLunaticJSON {

@Autowired
private EnoClient enoClient;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

il peut être final, non ?

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

class EnoHttpClientTest {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ajouter un test qui vérifie que la configuration du client http (quel qu'iil soit) est bien faite : avec okhttp mockServer ou wiremock (exemple ici : https://github.com/FBibonne/spring-httpexchange-extension/blob/main/src/test/java/fr/insee/demo/httpexchange/SimpleExampleTest.java#L109)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oui bonne idée, j'avoue que j'y ai pensé mais je l'ai pas fait finalement 🙃

@nsenave nsenave mentioned this pull request Nov 26, 2024
4 tasks
@nsenave
Copy link
Contributor Author

nsenave commented Nov 26, 2024

Merci @FBibonne pour tes retours, j'ai tracé ça dans une issue pour que ça puisse servir à un prochain refacto dans l'appli :

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants