Skip to content

Automatisch berichten aan BRMO toevoegen

Matthijs Laan edited this page Jun 7, 2016 · 4 revisions

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

Beveiliging

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.

Script voor POSTen berichten

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

Clone this wiki locally