importer: a dataforsyningen: provider for Denmark's token-gated GeoDanmark (R142) #220
Labels
No labels
blocked
claude-wip
map-report
map:is
map:se
needs-review
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
art/ismap#220
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Denmark (#211) is the only one of the four new countries with a credentialed source, and it
gates the parts of the country the anonymous INSPIRE route cannot supply.
What is behind the token, and why it matters
The anonymous route (
https://api.dataforsyningen.dk/ogcapi/features/…, CC BY 4.0) givesDenmark its mask, land cover, hydrography, place names, addresses and building points.
What it does not give is the transport theme's semantics:
roadlinkhas 2 506 759features and no class, name or ref;
railwaylinkandrailwaystationareahavegeographicalnamenull throughout. Those attributes live in GeoDanmark, reached asBuilding footprint polygons (as opposed to Denmark's INSPIRE building points) are behind
the same token.
What this issue must establish first
The catalogue could not answer these, and they decide the shape of the code:
than CLMS — it holds the key and adds it, with no minting step) or a short-lived
session token minted from a username/password?
The rule regardless of the answer (R142)
The credential lives in
conf/secrets.yamlunder a namedcredentials:block and isdocumented in
conf/secrets.example.yamlanddocs/country-dk.md. Notoken=in adownloads:URL — the importer's plain GET path cannot carry auth and is the wrong toolhere. Reference implementation:
importer/clms.go.Also: do not hold one token for a whole fetch if it turns out to be short-lived — mint
on demand, the lesson from CLMS.
R8: short-circuit before authenticating. An import that needs no new bytes must succeed with
the endpoint unreachable.
Wire into
appConfig,include.go, the fetch phase, and bothfetchandlist, andupdate
docs/importer-cli.mdfor both.Related but separate:
services.datafordeler.dk/GeoDanmarkVektor/GeoDanmark60_NOHIST_GML3/1.0.0/WFScurrently answers HTTP 503 "This service has been deliberately (and temporarily) taken out
of service." Worth re-checking — it may be the intended route rather than the
api.dataforsyningen.dkone.