Skip to content

Commit

Permalink
Merge pull request #1145 from maykinmedia/fix/2274-haalcentraal-api
Browse files Browse the repository at this point in the history
[#2274] Pass data in Haalcenntraal POST as JSON
  • Loading branch information
alextreme authored Apr 19, 2024
2 parents 8e638a5 + 1bbba84 commit 81b9ab7
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 28 deletions.
63 changes: 35 additions & 28 deletions src/open_inwoner/haalcentraal/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
import logging
from abc import ABC
from datetime import datetime
from urllib.parse import urljoin

import requests
from glom import GlomError, glom
from requests import RequestException
from zgw_consumers.client import build_client
Expand Down Expand Up @@ -61,7 +61,7 @@ class BRP_1_3(BRPAPI):
version = "1.3"

def fetch_data(self, user_bsn: str) -> dict | None:
url = urljoin(self.client.base_url, f"ingeschrevenpersonen/{user_bsn}")
url = f"ingeschrevenpersonen/{user_bsn}"
headers = {
"Accept": "application/hal+json",
}
Expand Down Expand Up @@ -115,33 +115,40 @@ def parse_data(self, data: dict) -> BRPData | None:
class BRP_2_1(BRPAPI):
version = "2.1"

def fetch_data(self, user_bsn: str) -> dict | None:
url = urljoin(self.client.base_url, "personen")
def make_request(self, user_bsn: str) -> requests.Response:
url = "personen"
response = self.client.post(
url=url,
json={
"fields": [
"naam.geslachtsnaam",
"naam.voorletters",
"naam.voornamen",
"naam.voorvoegsel",
"geslacht.omschrijving",
"geboorte.plaats.omschrijving",
"geboorte.datum.datum",
"verblijfplaats.verblijfadres.officieleStraatnaam",
"verblijfplaats.verblijfadres.huisnummer",
"verblijfplaats.verblijfadres.huisletter",
"verblijfplaats.verblijfadres.huisnummertoevoeging",
"verblijfplaats.verblijfadres.postcode",
"verblijfplaats.verblijfadres.woonplaats",
],
"type": "RaadpleegMetBurgerservicenummer",
"burgerservicenummer": [user_bsn],
},
headers={
"Content-Type": "application/json",
"Accept": "application/json",
},
verify=False,
)
return response

def fetch_data(self, user_bsn) -> dict | None:
try:
response = self.client.post(
url=url,
data={
"fields": [
"naam.geslachtsnaam",
"naam.voorletters",
"naam.voornamen",
"naam.voorvoegsel",
"geslacht.omschrijving",
"geboorte.plaats.omschrijving",
"geboorte.datum.datum",
"verblijfplaats.verblijfadres.officieleStraatnaam",
"verblijfplaats.verblijfadres.huisnummer",
"verblijfplaats.verblijfadres.huisletter",
"verblijfplaats.verblijfadres.huisnummertoevoeging",
"verblijfplaats.verblijfadres.postcode",
"verblijfplaats.verblijfadres.woonplaats",
],
"type": "RaadpleegMetBurgerservicenummer",
"burgerservicenummer": [user_bsn],
},
headers={"Accept": "application/json"},
verify=False,
)
response = self.make_request(user_bsn)
return get_json_response(response)
except (RequestException, ClientError) as e:
logger.exception("exception while making request", exc_info=e)
Expand Down
44 changes: 44 additions & 0 deletions src/open_inwoner/haalcentraal/tests/test_client.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import json

from django.test import TestCase

import requests_mock

from ..api import BRP_2_1
from .mixins import HaalCentraalMixin


@requests_mock.Mocker()
class BRPClientTest(HaalCentraalMixin, TestCase):
def test_request_content_type(self, m):
self._setUpMocks_v_2(m)
self._setUpService()

api_client = BRP_2_1()
response = api_client.make_request("999993847")

self.assertEqual(
m.request_history[0].headers["Content-Type"], "application/json"
)

data = {
"fields": [
"naam.geslachtsnaam",
"naam.voorletters",
"naam.voornamen",
"naam.voorvoegsel",
"geslacht.omschrijving",
"geboorte.plaats.omschrijving",
"geboorte.datum.datum",
"verblijfplaats.verblijfadres.officieleStraatnaam",
"verblijfplaats.verblijfadres.huisnummer",
"verblijfplaats.verblijfadres.huisletter",
"verblijfplaats.verblijfadres.huisnummertoevoeging",
"verblijfplaats.verblijfadres.postcode",
"verblijfplaats.verblijfadres.woonplaats",
],
"type": "RaadpleegMetBurgerservicenummer",
"burgerservicenummer": ["999993847"],
}

self.assertEqual(json.loads(response.request.body), data)

0 comments on commit 81b9ab7

Please sign in to comment.