-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBrreg.fs
54 lines (39 loc) · 1.67 KB
/
Brreg.fs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
module Brreg
open FSharp.Data
[<Literal>]
let private searchSample =
"https://data.brreg.no/enhetsregisteret/api/enheter?navn=Sesam&fraRegistreringsdatoEnhetsregisteret=2010-10-20&tilRegistreringsdatoEnhetsregisteret=2023-01-09&konkurs=false"
let private searchUrl =
"https://data.brreg.no/enhetsregisteret/api/enheter?forretningsadresse.landkode=NO&fraRegistreringsdatoEnhetsregisteret=2014-10-20&tilRegistreringsdatoEnhetsregisteret=2023-01-09&konkurs=false&navn="
type private BrregSearch = JsonProvider<searchSample>
let search searchTerm =
let result = BrregSearch.Load(searchUrl + searchTerm)
match result.Page.TotalElements with
| 0 -> Array.empty
| _ ->
result.Embedded.Enheter
|> Array.map (fun enhet ->
{| OrgNr = enhet.Organisasjonsnummer
Navn = enhet.Navn |})
open System.Text.Json
open System.Text.Json.Serialization
let private options = JsonSerializerOptions()
options.Converters.Add(JsonFSharpConverter())
options.WriteIndented <- true
[<Literal>]
let private enhetSample =
"https://data.brreg.no/enhetsregisteret/api/enheter/914159350"
let private enhetsUrl = "https://data.brreg.no/enhetsregisteret/api/enheter/"
type private BrregEnhet = JsonProvider<enhetSample>
let companyDetails orgnr =
let result = BrregEnhet.Load(enhetsUrl + orgnr)
let adresse =
{| Adresse = result.Forretningsadresse.Adresse
Postnummer = result.Forretningsadresse.Postnummer
Sted = result.Forretningsadresse.Poststed |}
JsonSerializer.Serialize(
{| OrgNr = result.Organisasjonsnummer
Navn = result.Navn
Forretningsadresse = adresse |},
options
)