-
Notifications
You must be signed in to change notification settings - Fork 16
Automatisch berichten aan BRMO toevoegen
Naast dat de brmo-service via het bestandssysteem berichten kan inladen is het ook mogelijk om basisregistratie-berichten aan de BRMO aan te bieden via een API:
Voer een HTTP-POST uit naar /brmo-service/post/<basisregistratie> en stuur het bericht in de HTTP request body.
Bij een HTTP 200 respons is het bericht succesvol ontvangen. Elke andere status-code duidt een fout aan, in de HTTP response body staat een foutmelding in plain text. Mogelijk dat in de brmo-service logfile meer informatie staat.
<basisregistratie> kan zijn:
- bag
- brk
- nhr
Op deze URL staat geen inlog. Dit is de standaardinstelling voor een brmo-service die afgezonderd is in een DMZ.
Het is mogelijk om de BRMO te beveiligen met SSL waarbij een client-certificaat wordt vereist (ook bekend als two-way SSL). Het client-certificaat kan bijvoorbeeld worden gecontroleerd op het OIN. Dit wordt normaliter ingeregeld met Apache.
Beveiligen met een wachtwoord via HTTP Basic kan ook worden ingeregeld met Apache. De standaard inlogwijze via het inlogformulier voor /post/* gebruiken is voor een API niet handig omdat dit met meerdere requests met het meesturen van HTTP sessie-cookies werkt, maar dit kan wel door het aanpassen van het security-constraint in web.xml.
Onderstaand bash-script gebruikt curl om gezipte BRK mutatieberichten uit het bestandssysteem te POSTen naar de brmo-service, en handelt fouten af door berichten te verplaatsen naar een aparte map. Het geeft het totaal aan van het aantal berichten dat is aangeboden.
#!/bin/bash
BASE=/directory/met/mutaties
DIR=$BASE
VERWERKT_DIR=$BASE/verwerkt
FOUT_DIR=$BASE/fout
BRMO_SERVICE=http://localhost:8080/brmo-service/post/brk
mkdir $VERWERKT_DIR 2>/dev/null
mkdir $FOUT_DIR 2>/dev/null
F_FOUT=0
F_OK=0
for f in $DIR/*.zip; do
V=$(basename $f)
echo Inladen mutatiebestand $V...
CODE_TEST=$(curl -X POST --silent --data-binary @"$f" --output /tmp/curl_out --write-out "%{http_code}" -H "Content-Type: application/octet-stream" $BRMO_SERVICE)
if [[ $CODE_TEST != 200 ]]; then
echo Fout bij laden bestand $f:
cat /tmp/curl_out
cp $f $FOUT_DIR
F_FOUT=$[$F_FOUT +1]
else
cat /tmp/curl_out
cp $f $VERWERKT_DIR
F_OK=$[$F_OK +1]
fi
rm -f $f
done
echo Verwerkt: $F_OK, fouten: $F_FOUT
Dit werk valt onder een Creative Commons Naamsvermelding-GelijkDelen 2.0 Nederland-licentie.