Skip to content

Commit

Permalink
feat: added entrypoints for Lodex
Browse files Browse the repository at this point in the history
  • Loading branch information
touv committed Oct 1, 2024
1 parent 3ee6faa commit d3dfc85
Show file tree
Hide file tree
Showing 3 changed files with 207 additions and 0 deletions.
49 changes: 49 additions & 0 deletions services/data-termsuite/tests.hurl
Original file line number Diff line number Diff line change
Expand Up @@ -154,3 +154,52 @@ jsonpath "$[*].key" includes "a: électrique"
# "key": "a: électrique",
# "freq": 7
#}]

############################################################################
# Test v1/fr/minimal
POST {{host}}/v1/fr/minimal?nb=5
content-type: application/x-gzip
# X-Webhook-Success: https://webhook.site/2caab8b5-fc96-4d7a-bb94-bdda20977830
# X-Webhook-Failure: https://webhook.site/2caab8b5-fc96-4d7a-bb94-bdda20977830
file,./examples/7-txt-fr.tar.gz;

HTTP 200
# Capture the computing token
[Captures]
fr_computing_token: jsonpath "$[0].value"
[Asserts]
variable "fr_computing_token" exists

# There should be a waiting time, representing the time taken to process data.
# Fortunately, as the data is sparse, and the computing time is small,
# the need is small.
# In normal use cases, a webhook is called when the processing is finished.
# That query gives the process identifier.
# Next, you can call the retrieve URL by putting the identifier in the value field.

# Version 4.1.0 of hurl added a delay option, which value is milliseconds.
# https://hurl.dev/blog/2023/09/24/announcing-hurl-4.1.0.html#add-delay-between-requests

POST {{host}}/v1/retrieve-json?indent=true
content-type: application/json
[Options]
delay: 15000
```
[
{
"value":"{{fr_computing_token}}"
}
]
```

HTTP 200
Content-Type: application/json
[Asserts]
jsonpath "$" count == 5
jsonpath "$[*].id" includes "a: thermique"
jsonpath "$[*].id" includes "n: fission"
jsonpath "$[*].id" includes "n: biomasse"
jsonpath "$[*].id" includes "na: énergie éolien"
jsonpath "$[*].id" includes "a: électrique"


79 changes: 79 additions & 0 deletions services/data-termsuite/v1/en/minimal.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Entrypoint output format
mimeType = application/json

# OpenAPI Documentation - JSON format (dot notation)
post.operationId = post-v1-en-minimal
post.summary = Extraction des termes d'un fichier corpus en anglais
post.description = Procède à une extraction terminologique en langue anglaise sur un corpus de textes. ^M^MLe fichier `.tar.gz` envoyé doit contenir des fichiers `.json` dont chacun^Mcontient un objet dont le champ `value` contient un texte en anglais et le champ^M`id` un identifiant unique pouvant servir de nom de fichier. ^M^Mℹ️ Voir [la commande Unix `tar`](https://tldr.inbrowser.app/pages/common/tar).^M^MCe format de fichier,appelé corpus compressé, est celui renvoyé par les services^Mweb `data-wrapper`s (convertisseurs).^M^Mℹ️ Voir [les services web `data-wrapper`](https://openapi.services.istex.fr/?urls.primaryName=data-wrapper%20-%20Conversions%20en%20fichier%20corpus%20compress%C3%A9).
post.tags.0 = data-termsuite
post.requestBody.content.application/x-gzip.schema.type = string
post.requestBody.content.application/x-gzip.schema.format = binary
post.requestBody.required = true
post.responses.default.description = Informations permettant de récupérer les données le moment venu
post.parameters.0.description = Indenter le JSON résultant
post.parameters.0.in = query
post.parameters.0.name = indent
post.parameters.0.schema.type = boolean
post.parameters.1.description = Nombre de termes à extraire
post.parameters.1.in = query
post.parameters.1.name = nb
post.parameters.1.schema.type = number
post.parameters.1.schema.default = 500
post.parameters.2.description = URL pour signaler que le traitement est terminé
post.parameters.2.in = header
post.parameters.2.name = X-Webhook-Success
post.parameters.2.schema.type = string
post.parameters.2.schema.format = uri
post.parameters.2.required = false
post.parameters.3.description = URL pour signaler que le traitement a échoué
post.parameters.3.in = header
post.parameters.3.name = X-Webhook-Failure
post.parameters.3.schema.type = string
post.parameters.3.schema.format = uri
post.parameters.3.required = false
post.responses.default.content.application/json.example.0.id = termsuite-en-minimal
post.responses.default.content.application/json.example.0.value = cEeFstsZi
#'

[use]
plugin = @ezs/spawn

[env]
path = generator
value = termsuite-en-minimal

# Step 1 (générique): Charger le fichier corpus
[delegate]
file = ./v1/charger.cfg

# Step 2 (générique): Traiter de manière asynchrone les items reçus
[fork]
standalone = true
logger = ./v1/logger.cfg

# Step 2.0 (optionnel): Accélère le détachement du fork si l'enrichissement est lent
[fork/delegate]
file = ./v1/buffer.cfg

# Step 2.1 (spécifique): Lancer un calcul sur tous les items reçus
[fork/exec]
# command should be executable!
command = ./v1/extract.sh
args = en
args = env('nb')

# Step 2.2 (spécifique): Reformatge des objects pour une compatibilité Lodex
[fork/replace]
path = id
value = get('key')
path = value
value = get('freq')

# Step 2.3 (générique): Enregistrer le résultat et signaler que le traitement est fini
[fork/delegate]
file = ./v1/recorder.cfg

# Step 3 : Renvoyer immédiatement un seul élément indiquant comment récupérer le résultat quand il sera prêt
[delegate]
file = ./v1/recipient.cfg
79 changes: 79 additions & 0 deletions services/data-termsuite/v1/fr/minimal.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Entrypoint output format
mimeType = application/json

# OpenAPI Documentation - JSON format (dot notation)
post.operationId = post-v1-fr-minimal
post.summary = Extraction des termes d'un fichier corpus en français
post.description = Procède à une extraction terminologique en langue française sur un corpus de textes. ^M^MLe fichier `.tar.gz` envoyé doit contenir des fichiers `.json` dont chacun^Mcontient un objet dont le champ `value` contient un texte en français et le champ^M`id` un identifiant unique pouvant servir de nom de fichier. ^M^Mℹ️ Voir [la commande Unix `tar`](https://tldr.inbrowser.app/pages/common/tar).^M^MCe format de fichier,appelé corpus compressé, est celui renvoyé par les services^Mweb `data-wrapper`s (convertisseurs).^M^Mℹ️ Voir [les services web `data-wrapper`](https://openapi.services.istex.fr/?urls.primaryName=data-wrapper%20-%20Conversions%20en%20fichier%20corpus%20compress%C3%A9).
post.tags.0 = data-termsuite
post.requestBody.content.application/x-gzip.schema.type = string
post.requestBody.content.application/x-gzip.schema.format = binary
post.requestBody.required = true
post.responses.default.description = Informations permettant de récupérer les données le moment venu
post.parameters.0.description = Indenter le JSON résultant
post.parameters.0.in = query
post.parameters.0.name = indent
post.parameters.0.schema.type = boolean
post.parameters.1.description = Nombre de termes à extraire
post.parameters.1.in = query
post.parameters.1.name = nb
post.parameters.1.schema.type = number
post.parameters.1.schema.default = 500
post.parameters.2.description = URL pour signaler que le traitement est terminé
post.parameters.2.in = header
post.parameters.2.name = X-Webhook-Success
post.parameters.2.schema.type = string
post.parameters.2.schema.format = uri
post.parameters.2.required = false
post.parameters.3.description = URL pour signaler que le traitement a échoué
post.parameters.3.in = header
post.parameters.3.name = X-Webhook-Failure
post.parameters.3.schema.type = string
post.parameters.3.schema.format = uri
post.parameters.3.required = false
post.responses.default.content.application/json.example.0.id = termsuite-fr-minimal
post.responses.default.content.application/json.example.0.value = cEeFstsZi
#'

[use]
plugin = @ezs/spawn

[env]
path = generator
value = termsuite-fr-minimal

# Step 1 (générique): Charger le fichier corpus
[delegate]
file = ./v1/charger.cfg

# Step 2 (générique): Traiter de manière asynchrone les items reçus
[fork]
standalone = true
logger = ./v1/logger.cfg

# Step 2.0 (optionnel): Accélère le détachement du fork si l'enrichissement est lent
[fork/delegate]
file = ./v1/buffer.cfg

# Step 2.1 (spécifique): Lancer un calcul sur tous les items reçus
[fork/exec]
# command should be executable!
command = ./v1/extract.sh
args = fr
args = env('nb')

# Step 2.2 (spécifique): Reformatge des objects pour une compatibilité Lodex
[fork/replace]
path = id
value = get('key')
path = value
value = get('freq')

# Step 2.3 (générique): Enregistrer le résultat et signaler que le traitement est fini
[fork/delegate]
file = ./v1/recorder.cfg

# Step 3 : Renvoyer immédiatement un seul élément indiquant comment récupérer le résultat quand il sera prêt
[delegate]
file = ./v1/recipient.cfg

0 comments on commit d3dfc85

Please sign in to comment.