"""Python 3.9+. Retain mutation_key when retrying the same batch."""
import json
import urllib.parse
import urllib.request


def submit_materials(api_key, source_id, mutation_key, items):
    request = urllib.request.Request(
        "https://api.signailist.com/v1/external-sources/" + urllib.parse.quote(source_id, safe="") + "/items",
        data=json.dumps({"items": items}).encode("utf-8"),
        headers={"Authorization": "Bearer " + api_key,
                 "Idempotency-Key": mutation_key, "Content-Type": "application/json"},
        method="POST",
    )
    with urllib.request.urlopen(request, timeout=30) as response:
        return json.load(response)
