From 908e08c16c0fe19e0fd0aad408d9bc46f0407b7a Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 8 Apr 2023 23:07:32 +0200 Subject: [PATCH 01/15] Test nytt api --- api/backup-getRegNummer.ts | 44 ++++++++++++++++++++++++++++++++++++++ api/getRegNummer.ts | 25 +++++++++++++--------- 2 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 api/backup-getRegNummer.ts diff --git a/api/backup-getRegNummer.ts b/api/backup-getRegNummer.ts new file mode 100644 index 0000000..a0b35dc --- /dev/null +++ b/api/backup-getRegNummer.ts @@ -0,0 +1,44 @@ +import axios from "axios"; +import { sanitize } from "isomorphic-dompurify"; +import { VercelRequest, VercelResponse } from "@vercel/node"; +import { IStatensVegvesenFullData } from "../scripts/types/typeDefinitions"; + +export default async function getRegNummer( + req: VercelRequest, + res: VercelResponse +): Promise { + const { regNummer = "" } = req.query; + + if (regNummer === undefined) { + res.send({ error: "Mangler regNummer parameter" }); + return; + } + + const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoy/kjoretoyoppslag/v1/kjennemerkeoppslag/kjoretoy/${regNummer}`; + + try { + const response = await axios.get(urlToFetch); + + if (response.status === 200) { + const { + kjennemerke, + registrering: { forstegangsregistrering, forstegangsregistreringEier }, + periodiskKjoretoykontroll: { sistKontrollert }, + } = response.data; + + const sanitizedData = { + kjennemerke: sanitize(kjennemerke), + forstegangsregistreringEier: sanitize(forstegangsregistreringEier), + forstegangsregistrering: sanitize(forstegangsregistrering), + sistKontrollert: sanitize(sistKontrollert), + }; + + res.send(sanitizedData); + } else { + res.send({ error: "Feil under henting av data" }); + } + } catch (error) { + console.error(error); + res.send({ error: "Feil under henting av data" }); + } +} diff --git a/api/getRegNummer.ts b/api/getRegNummer.ts index a0b35dc..c82b96e 100644 --- a/api/getRegNummer.ts +++ b/api/getRegNummer.ts @@ -1,23 +1,28 @@ import axios from "axios"; import { sanitize } from "isomorphic-dompurify"; -import { VercelRequest, VercelResponse } from "@vercel/node"; +import { NextApiRequest, NextApiResponse } from "next"; import { IStatensVegvesenFullData } from "../scripts/types/typeDefinitions"; -export default async function getRegNummer( - req: VercelRequest, - res: VercelResponse +export default async function handler( + req: NextApiRequest, + res: NextApiResponse ): Promise { const { regNummer = "" } = req.query; if (regNummer === undefined) { - res.send({ error: "Mangler regNummer parameter" }); + res.status(400).json({ error: "Mangler regNummer parameter" }); return; } - const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoy/kjoretoyoppslag/v1/kjennemerkeoppslag/kjoretoy/${regNummer}`; + const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoyinfo/kjop/sok-kjennemerke?p_registreringsnummer=${regNummer}`; try { - const response = await axios.get(urlToFetch); + const response = await axios.get(urlToFetch, { + headers: { + "SVV-Authorization": `Apikey ${process.env.SVV_API_KEY}`, + "X-Client-Identifier": "my-app", + }, + }); if (response.status === 200) { const { @@ -33,12 +38,12 @@ export default async function getRegNummer( sistKontrollert: sanitize(sistKontrollert), }; - res.send(sanitizedData); + res.status(200).json(sanitizedData); } else { - res.send({ error: "Feil under henting av data" }); + res.status(500).json({ error: "Feil under henting av data" }); } } catch (error) { console.error(error); - res.send({ error: "Feil under henting av data" }); + res.status(500).json({ error: "Feil under henting av data" }); } } From 4a0a83b4eb678e35ba28d27531c71150093e5aac Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 8 Apr 2023 23:35:54 +0200 Subject: [PATCH 02/15] Oppdater api url --- api/getRegNummer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/getRegNummer.ts b/api/getRegNummer.ts index c82b96e..615a7de 100644 --- a/api/getRegNummer.ts +++ b/api/getRegNummer.ts @@ -14,7 +14,7 @@ export default async function handler( return; } - const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoyinfo/kjop/sok-kjennemerke?p_registreringsnummer=${regNummer}`; + const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoy/felles/datautlevering/enkeltoppslag/kjoretoydata?kjennemerke=${regNummer}`; try { const response = await axios.get(urlToFetch, { From 7d070d4c5c21c18411309d0ba1e545d993bffd23 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 8 Apr 2023 23:37:50 +0200 Subject: [PATCH 03/15] Typescript --- api/getRegNummer.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/api/getRegNummer.ts b/api/getRegNummer.ts index 615a7de..fba4d9f 100644 --- a/api/getRegNummer.ts +++ b/api/getRegNummer.ts @@ -1,11 +1,11 @@ import axios from "axios"; import { sanitize } from "isomorphic-dompurify"; -import { NextApiRequest, NextApiResponse } from "next"; +import { VercelRequest, VercelResponse } from "@vercel/node"; import { IStatensVegvesenFullData } from "../scripts/types/typeDefinitions"; export default async function handler( - req: NextApiRequest, - res: NextApiResponse + req: VercelRequest, + res: VercelResponse ): Promise { const { regNummer = "" } = req.query; From ccf95a15f768a53672042973bfcf24452ee0f226 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 8 Apr 2023 23:40:56 +0200 Subject: [PATCH 04/15] Debug --- api/getRegNummer.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api/getRegNummer.ts b/api/getRegNummer.ts index fba4d9f..430953a 100644 --- a/api/getRegNummer.ts +++ b/api/getRegNummer.ts @@ -24,6 +24,8 @@ export default async function handler( }, }); + console.log("Response er: ", response); + if (response.status === 200) { const { kjennemerke, From b93bcb3de0b59ea400b6c0543d41635abff73139 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 8 Apr 2023 23:42:36 +0200 Subject: [PATCH 05/15] Debug --- api/getRegNummer.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/api/getRegNummer.ts b/api/getRegNummer.ts index 430953a..0fe4e97 100644 --- a/api/getRegNummer.ts +++ b/api/getRegNummer.ts @@ -25,6 +25,10 @@ export default async function handler( }); console.log("Response er: ", response); + res.status(500).json({ debug: `Debug ${response}` }); + + + if (response.status === 200) { const { From 4b7e494c95ae2f2f85abaf3280d406176a53971b Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 8 Apr 2023 23:45:00 +0200 Subject: [PATCH 06/15] Debug --- api/getRegNummer.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/api/getRegNummer.ts b/api/getRegNummer.ts index 0fe4e97..556510b 100644 --- a/api/getRegNummer.ts +++ b/api/getRegNummer.ts @@ -28,7 +28,7 @@ export default async function handler( res.status(500).json({ debug: `Debug ${response}` }); - + if (response.status === 200) { const { @@ -46,10 +46,10 @@ export default async function handler( res.status(200).json(sanitizedData); } else { - res.status(500).json({ error: "Feil under henting av data" }); + res.status(500).json({ error: `Feil under henting av data ${response}` }); } } catch (error) { console.error(error); - res.status(500).json({ error: "Feil under henting av data" }); + res.status(500).json({ error: `Feil under henting av data - error ${error}` }); } } From 9a915e952bf6a55c922fd5be892b8662190228ea Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 8 Apr 2023 23:46:52 +0200 Subject: [PATCH 07/15] hardcode data --- api/getRegNummer.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/api/getRegNummer.ts b/api/getRegNummer.ts index 556510b..dd348c4 100644 --- a/api/getRegNummer.ts +++ b/api/getRegNummer.ts @@ -14,7 +14,8 @@ export default async function handler( return; } - const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoy/felles/datautlevering/enkeltoppslag/kjoretoydata?kjennemerke=${regNummer}`; + //const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoy/felles/datautlevering/enkeltoppslag/kjoretoydata?kjennemerke=${regNummer}`; + const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoy/felles/datautlevering/enkeltoppslag/kjoretoydata?kjennemerke=ce65676`; try { const response = await axios.get(urlToFetch, { @@ -28,8 +29,6 @@ export default async function handler( res.status(500).json({ debug: `Debug ${response}` }); - - if (response.status === 200) { const { kjennemerke, From 5744003e9e955ca1c4b67a59682eb937c4847b15 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 8 Apr 2023 23:48:22 +0200 Subject: [PATCH 08/15] Update getRegNummer.ts --- api/getRegNummer.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/getRegNummer.ts b/api/getRegNummer.ts index dd348c4..a8cd433 100644 --- a/api/getRegNummer.ts +++ b/api/getRegNummer.ts @@ -25,8 +25,8 @@ export default async function handler( }, }); - console.log("Response er: ", response); - res.status(500).json({ debug: `Debug ${response}` }); + //console.log("Response er: ", response); + //res.status(500).json({ debug: `Debug ${response}` }); if (response.status === 200) { From cc39ea022f5ac1712cf4dc15aa1c38ff086beec6 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 8 Apr 2023 23:50:29 +0200 Subject: [PATCH 09/15] Update getRegNummer.ts --- api/getRegNummer.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/api/getRegNummer.ts b/api/getRegNummer.ts index a8cd433..a4b108d 100644 --- a/api/getRegNummer.ts +++ b/api/getRegNummer.ts @@ -29,7 +29,7 @@ export default async function handler( //res.status(500).json({ debug: `Debug ${response}` }); - if (response.status === 200) { + /*if (response.status === 200) { const { kjennemerke, registrering: { forstegangsregistrering, forstegangsregistreringEier }, @@ -41,12 +41,13 @@ export default async function handler( forstegangsregistreringEier: sanitize(forstegangsregistreringEier), forstegangsregistrering: sanitize(forstegangsregistrering), sistKontrollert: sanitize(sistKontrollert), - }; + };*/ - res.status(200).json(sanitizedData); - } else { + //res.status(200).json(sanitizedData); + res.status(200).json(response.data); + /* } else { res.status(500).json({ error: `Feil under henting av data ${response}` }); - } + }*/ } catch (error) { console.error(error); res.status(500).json({ error: `Feil under henting av data - error ${error}` }); From 83eabcd8e9ddbf94f08138c51cdc0574c6253656 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sun, 9 Apr 2023 00:02:43 +0200 Subject: [PATCH 10/15] Test --- api/getRegNummer.ts | 38 ++-- scripts/types/typeDefinitions.ts | 348 +++++++++++++++++++++++++------ 2 files changed, 298 insertions(+), 88 deletions(-) diff --git a/api/getRegNummer.ts b/api/getRegNummer.ts index a4b108d..56a9617 100644 --- a/api/getRegNummer.ts +++ b/api/getRegNummer.ts @@ -25,31 +25,31 @@ export default async function handler( }, }); - //console.log("Response er: ", response); - //res.status(500).json({ debug: `Debug ${response}` }); - - - /*if (response.status === 200) { + if (response.status === 200) { const { - kjennemerke, - registrering: { forstegangsregistrering, forstegangsregistreringEier }, - periodiskKjoretoykontroll: { sistKontrollert }, + kjoretoydataListe: [ + { + kjoretoyId: { kjennemerke }, + forstegangsregistrering: { + registrertForstegangNorgeDato: forstegangsregistrering, + }, + periodiskKjoretoyKontroll: { sistGodkjent: sistKontrollert }, + }, + ], } = response.data; const sanitizedData = { kjennemerke: sanitize(kjennemerke), - forstegangsregistreringEier: sanitize(forstegangsregistreringEier), - forstegangsregistrering: sanitize(forstegangsregistrering), - sistKontrollert: sanitize(sistKontrollert), - };*/ - - //res.status(200).json(sanitizedData); - res.status(200).json(response.data); - /* } else { - res.status(500).json({ error: `Feil under henting av data ${response}` }); - }*/ + forstegangsregistrering: sanitize(forstegangsregistrering.toString()), + sistKontrollert: sanitize(sistKontrollert.toString()), + }; + + res.status(200).json(sanitizedData); + } else { + res.status(500).json({ error: `Feil under henting av data ` }); + } } catch (error) { console.error(error); - res.status(500).json({ error: `Feil under henting av data - error ${error}` }); + res.status(500).json({ error: `Feil under henting av data ` }); } } diff --git a/scripts/types/typeDefinitions.ts b/scripts/types/typeDefinitions.ts index 20d0ac9..d0ed0b0 100644 --- a/scripts/types/typeDefinitions.ts +++ b/scripts/types/typeDefinitions.ts @@ -1,76 +1,286 @@ /** - * Type definition for data returned from API. - * Returns an object with strings. - */ - -export interface IStatensVegvesenBilData { - // Will return error message if the car was not found - melding: string; - /** - * Registration number for personalised number plate) - * @see https://www.vegvesen.no/en/vehicles/own-and-maintain/number-plates/personalised-number-plates - */ + + Type definition for data returned from API. + Returns an object with strings and optional values. + */ + +export interface IStatensVegvesenFullData { + kjoretoydataListe: KjoretoydataListe[]; +} + +export interface KjoretoydataListe { + kjoretoyId: KjoretoyID; + forstegangsregistrering: Forstegangsregistrering; + kjennemerke: Kjennemerke[]; + registrering: Registrering; + godkjenning: Godkjenning; + periodiskKjoretoyKontroll: PeriodiskKjoretoyKontroll; +} + +export interface Forstegangsregistrering { + registrertForstegangNorgeDato: Date; +} + +export interface Godkjenning { + forstegangsGodkjenning: ForstegangsGodkjenning; + kjoretoymerknad: Kjoretoymerknad[]; + registreringsbegrensninger: Registreringsbegrensninger; + tekniskGodkjenning: TekniskGodkjenning; + tilleggsgodkjenninger: any[]; +} + +export interface ForstegangsGodkjenning { + forstegangRegistrertDato: Date; + godkjenningsId: string; + godkjenningsundertype: KjoringensArt; + gyldigFraDato: Date; + gyldigFraDatoTid: Date; + kvalitetskodeForstegangRegDato: KjoringensArt; + unntak: any[]; +} + +export interface KjoringensArt { + kodeNavn?: string; + kodeVerdi: string; + tidligereKodeVerdi: any[]; + kodeBeskrivelse?: string; + kodeTypeId?: string; +} + +export interface Kjoretoymerknad { + merknad: string; + merknadtypeKode: string; +} + +export interface Registreringsbegrensninger { + registreringsbegrensning: any[]; +} + +export interface TekniskGodkjenning { + godkjenningsId: string; + godkjenningsundertype: KjoringensArt; + gyldigFraDato: Date; + gyldigFraDatoTid: Date; + kjoretoyklassifisering: Kjoretoyklassifisering; + krav: Krav[]; + tekniskeData: TekniskeData; + unntak: any[]; +} + +export interface Kjoretoyklassifisering { + beskrivelse: string; + efTypegodkjenning: EfTypegodkjenning; + kjoretoyAvgiftsKode: KjoringensArt; + nasjonalGodkjenning: NasjonalGodkjenning; + spesielleKjennetegn: string; + tekniskKode: KjoringensArt; + tekniskUnderkode: TekniskUnderkode; + iSamsvarMedTypegodkjenning: boolean; +} + +export interface EfTypegodkjenning { + typegodkjenningNrTekst: string; + typegodkjenningnummer: Typegodkjenningnummer; + variant: string; +} + +export interface Typegodkjenningnummer { + direktiv: string; + land: string; + serie: string; + utvidelse: string; +} + +export interface NasjonalGodkjenning { + nasjonaltGodkjenningsAr: string; + nasjonaltGodkjenningsHovednummer: string; + nasjonaltGodkjenningsUndernummer: string; +} + +export interface TekniskUnderkode { + kodeVerdi: string; + tidligereKodeVerdi: any[]; +} + +export interface Krav { + kravomrade: KjoringensArt; + kravoppfyllelse: KjoringensArt; +} + +export interface TekniskeData { + akslinger: Akslinger; + bremser: Bremser; + dekkOgFelg: DekkOgFelg; + dimensjoner: Dimensjoner; + generelt: Generelt; + karosseriOgLasteplan: KarosseriOgLasteplan; + miljodata: Miljodata; + motorOgDrivverk: MotorOgDrivverk; + ovrigeTekniskeData: any[]; + persontall: Persontall; + tilhengerkopling: Tilhengerkopling; + vekter: Vekter; +} + +export interface Akslinger { + akselGruppe: AkselGruppe[]; + antallAksler: number; +} + +export interface AkselGruppe { + akselListe: AkselListe; + egenvektAkselGruppe: number; + id: number; + plasseringAkselGruppe: string; + tekniskTillattAkselGruppeLast: number; +} + +export interface AkselListe { + aksel: Aksel[]; +} + +export interface Aksel { + avstandTilNesteAksling?: number; + drivAksel: boolean; + egenvektAksel: number; + id: number; + plasseringAksel: string; + sporvidde: number; + tekniskTillattAkselLast: number; +} + +export interface Bremser { + tilhengerBremseforbindelse: any[]; +} + +export interface DekkOgFelg { + akselDekkOgFelgKombinasjon: AkselDekkOgFelgKombinasjon[]; +} + +export interface AkselDekkOgFelgKombinasjon { + akselDekkOgFelg: AkselDekkOgFelg[]; +} + +export interface AkselDekkOgFelg { + akselId: number; + belastningskodeDekk: string; + dekkdimensjon: string; + felgdimensjon: string; + hastighetskodeDekk: string; + innpress: string; +} + +export interface Dimensjoner { + bredde: number; + lengde: number; +} + +export interface Generelt { + fabrikant: any[]; + handelsbetegnelse: string[]; + merke: Merke[]; + tekniskKode: KjoringensArt; + typebetegnelse: string; +} + +export interface Merke { + merke: string; + merkeKode: string; +} + +export interface KarosseriOgLasteplan { + antallDorer: any[]; + dorUtforming: any[]; + kjennemerketypeBak: KjoringensArt; + kjennemerkestorrelseBak: KjoringensArt; + kjennemerketypeForan: KjoringensArt; + kjennemerkestorrelseForan: KjoringensArt; + kjoringSide: string; + oppbygningUnderstellsnummer: string; + plasseringFabrikasjonsplate: KjoringensArt[]; + plasseringUnderstellsnummer: KjoringensArt[]; + rFarge: KjoringensArt[]; +} + +export interface Miljodata { + miljoOgdrivstoffGruppe: MiljoOgdrivstoffGruppe[]; + okoInnovasjon: boolean; +} + +export interface MiljoOgdrivstoffGruppe { + drivstoffKodeMiljodata: KjoringensArt; + lyd: Lyd; +} + +export interface Lyd { + standstoy: number; + stoyMalingOppgittAv: KjoringensArt; + vedAntallOmdreininger: number; +} + +export interface MotorOgDrivverk { + girkassetype: KjoringensArt; + girutvekslingPrGir: any[]; + hybridKategori: KjoringensArt; + maksimumHastighet: number[]; + maksimumHastighetMalt: any[]; + motor: Motor[]; +} + +export interface Motor { + antallSylindre: number; + drivstoff: Drivstoff[]; + motorKode: string; + slagvolum: number; +} + +export interface Drivstoff { + drivstoffKode: KjoringensArt; + maksNettoEffekt: number; +} + +export interface Persontall { + sitteplasserForan: number; + sitteplasserTotalt: number; +} + +export interface Tilhengerkopling { + kopling: any[]; +} + +export interface Vekter { + egenvekt: number; + egenvektMinimum: number; + nyttelast: number; + tillattTaklast: number; + tillattTilhengervektMedBrems: number; + tillattTilhengervektUtenBrems: number; + tillattTotalvekt: number; + tillattVertikalKoplingslast: number; + tillattVogntogvekt: number; + vogntogvektAvhBremsesystem: any[]; +} + +export interface Kjennemerke { + fomTidspunkt: Date; kjennemerke: string; - // Details about when car was registered for the first time - forstegangsregistrering: string; - // Details about when car was registered on owner - forstegangsregistreringEier: string; - // Last time the car had a mandatory roadworthiness test - sistKontrollert: string; + kjennemerkekategori: string; + kjennemerketype: KjoringensArt; } -export interface IStatensVegvesenFullData { +export interface KjoretoyID { kjennemerke: string; understellsnummer: string; - kuid: string; - personligKjennemerke: string | null; - registrering: { - registreringsstatus: string; - registreringsstatusDato: string; - forstegangsregistrering: string; - forstegangsregistreringNorge: string; - forstegangsregistreringEier: string; - avregistrertHosBilforhandler: boolean; - kjennemerkefarge: string; - }; - periodiskKjoretoykontroll: { sistKontrollert: string; nesteKontroll: string }; - tekniskKjoretoy: { - handelsbetegnelse: string; - typebetegnelse: string; - merke: string; - kjoretoyAvgiftskode: string; - tekniskKode: string; - miljoEuroklasse: null; - sitteplasser: number; - staplasser: null; - oppbygd: boolean; - lengde: number; - bredde: number; - hoyde: null; - lastegenskaper: { - egenvekt: number; - tillattTotalvekt: number; - nyttelast: number; - tillattTilhengervektMedBrems: number; - tillattTilhengervektUtenBrems: number; - tillattVertikalKoplingslast: number; - tillattVogntogvekt: number; - tillattTaklast: number; - }; - maksimumHastighet: number; - hybridElektriskKjoretoy: null | boolean; - girkasse: string; - hybridkategori: string; - motorer: string; - karosseri: { farge: string; fargekode: string }; - forbrukOgUtslipp: Array; - aksler: { - drivaksler: number; - dekkOgFelger: Array; - aksler: Array; - }; - unntak: Array; - }; - bruktimport: null | boolean; - vektarsavgiftOppgittGrunnlag: null; +} + +export interface PeriodiskKjoretoyKontroll { + kontrollfrist: Date; + sistGodkjent: Date; +} + +export interface Registrering { + fomTidspunkt: Date; + kjoringensArt: KjoringensArt; + registreringsstatus: KjoringensArt; + registrertForstegangPaEierskap: Date; } From 8b2bd6d947ee5a0668124587fa9e16be8a51fa49 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sun, 9 Apr 2023 00:04:14 +0200 Subject: [PATCH 11/15] Test med ekte data --- api/getRegNummer.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/getRegNummer.ts b/api/getRegNummer.ts index 56a9617..3231bd6 100644 --- a/api/getRegNummer.ts +++ b/api/getRegNummer.ts @@ -14,8 +14,8 @@ export default async function handler( return; } - //const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoy/felles/datautlevering/enkeltoppslag/kjoretoydata?kjennemerke=${regNummer}`; - const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoy/felles/datautlevering/enkeltoppslag/kjoretoydata?kjennemerke=ce65676`; + const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoy/felles/datautlevering/enkeltoppslag/kjoretoydata?kjennemerke=${regNummer}`; + //const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoy/felles/datautlevering/enkeltoppslag/kjoretoydata?kjennemerke=ce65676`; try { const response = await axios.get(urlToFetch, { From 6d911b0876c118b944b8ca80b3fb93d7afea7aec Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sun, 9 Apr 2023 00:05:25 +0200 Subject: [PATCH 12/15] Bruk offisielt API --- api/getRegNummer.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/api/getRegNummer.ts b/api/getRegNummer.ts index 3231bd6..0d899bc 100644 --- a/api/getRegNummer.ts +++ b/api/getRegNummer.ts @@ -15,7 +15,6 @@ export default async function handler( } const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoy/felles/datautlevering/enkeltoppslag/kjoretoydata?kjennemerke=${regNummer}`; - //const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoy/felles/datautlevering/enkeltoppslag/kjoretoydata?kjennemerke=ce65676`; try { const response = await axios.get(urlToFetch, { From 4efedd62fa527c8f0de16268367a92538947e256 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sun, 9 Apr 2023 00:13:37 +0200 Subject: [PATCH 13/15] Opprydding --- api/backup-getRegNummer.ts | 44 -------------------------------------- 1 file changed, 44 deletions(-) delete mode 100644 api/backup-getRegNummer.ts diff --git a/api/backup-getRegNummer.ts b/api/backup-getRegNummer.ts deleted file mode 100644 index a0b35dc..0000000 --- a/api/backup-getRegNummer.ts +++ /dev/null @@ -1,44 +0,0 @@ -import axios from "axios"; -import { sanitize } from "isomorphic-dompurify"; -import { VercelRequest, VercelResponse } from "@vercel/node"; -import { IStatensVegvesenFullData } from "../scripts/types/typeDefinitions"; - -export default async function getRegNummer( - req: VercelRequest, - res: VercelResponse -): Promise { - const { regNummer = "" } = req.query; - - if (regNummer === undefined) { - res.send({ error: "Mangler regNummer parameter" }); - return; - } - - const urlToFetch = `https://www.vegvesen.no/ws/no/vegvesen/kjoretoy/kjoretoyoppslag/v1/kjennemerkeoppslag/kjoretoy/${regNummer}`; - - try { - const response = await axios.get(urlToFetch); - - if (response.status === 200) { - const { - kjennemerke, - registrering: { forstegangsregistrering, forstegangsregistreringEier }, - periodiskKjoretoykontroll: { sistKontrollert }, - } = response.data; - - const sanitizedData = { - kjennemerke: sanitize(kjennemerke), - forstegangsregistreringEier: sanitize(forstegangsregistreringEier), - forstegangsregistrering: sanitize(forstegangsregistrering), - sistKontrollert: sanitize(sistKontrollert), - }; - - res.send(sanitizedData); - } else { - res.send({ error: "Feil under henting av data" }); - } - } catch (error) { - console.error(error); - res.send({ error: "Feil under henting av data" }); - } -} From 96ece8c9ee289a3ee1ba0d6069cce1707035cc11 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sun, 9 Apr 2023 00:13:46 +0200 Subject: [PATCH 14/15] =?UTF-8?q?Pr=C3=B8v=20=C3=A5=20fikse=20any?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/types/typeDefinitions.ts | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/scripts/types/typeDefinitions.ts b/scripts/types/typeDefinitions.ts index d0ed0b0..a698a34 100644 --- a/scripts/types/typeDefinitions.ts +++ b/scripts/types/typeDefinitions.ts @@ -26,7 +26,7 @@ export interface Godkjenning { kjoretoymerknad: Kjoretoymerknad[]; registreringsbegrensninger: Registreringsbegrensninger; tekniskGodkjenning: TekniskGodkjenning; - tilleggsgodkjenninger: any[]; + tilleggsgodkjenninger: string[]; } export interface ForstegangsGodkjenning { @@ -36,13 +36,13 @@ export interface ForstegangsGodkjenning { gyldigFraDato: Date; gyldigFraDatoTid: Date; kvalitetskodeForstegangRegDato: KjoringensArt; - unntak: any[]; + unntak: string[]; } export interface KjoringensArt { kodeNavn?: string; kodeVerdi: string; - tidligereKodeVerdi: any[]; + tidligereKodeVerdi: string[]; kodeBeskrivelse?: string; kodeTypeId?: string; } @@ -53,7 +53,7 @@ export interface Kjoretoymerknad { } export interface Registreringsbegrensninger { - registreringsbegrensning: any[]; + registreringsbegrensning: string[]; } export interface TekniskGodkjenning { @@ -64,7 +64,7 @@ export interface TekniskGodkjenning { kjoretoyklassifisering: Kjoretoyklassifisering; krav: Krav[]; tekniskeData: TekniskeData; - unntak: any[]; + unntak: string[]; } export interface Kjoretoyklassifisering { @@ -99,7 +99,7 @@ export interface NasjonalGodkjenning { export interface TekniskUnderkode { kodeVerdi: string; - tidligereKodeVerdi: any[]; + tidligereKodeVerdi: string[]; } export interface Krav { @@ -116,7 +116,7 @@ export interface TekniskeData { karosseriOgLasteplan: KarosseriOgLasteplan; miljodata: Miljodata; motorOgDrivverk: MotorOgDrivverk; - ovrigeTekniskeData: any[]; + ovrigeTekniskeData: string[]; persontall: Persontall; tilhengerkopling: Tilhengerkopling; vekter: Vekter; @@ -150,7 +150,7 @@ export interface Aksel { } export interface Bremser { - tilhengerBremseforbindelse: any[]; + tilhengerBremseforbindelse: string[]; } export interface DekkOgFelg { @@ -176,7 +176,7 @@ export interface Dimensjoner { } export interface Generelt { - fabrikant: any[]; + fabrikant: string[]; handelsbetegnelse: string[]; merke: Merke[]; tekniskKode: KjoringensArt; @@ -189,8 +189,8 @@ export interface Merke { } export interface KarosseriOgLasteplan { - antallDorer: any[]; - dorUtforming: any[]; + antallDorer: string[]; + dorUtforming: string[]; kjennemerketypeBak: KjoringensArt; kjennemerkestorrelseBak: KjoringensArt; kjennemerketypeForan: KjoringensArt; @@ -220,10 +220,10 @@ export interface Lyd { export interface MotorOgDrivverk { girkassetype: KjoringensArt; - girutvekslingPrGir: any[]; + girutvekslingPrGir: string[]; hybridKategori: KjoringensArt; maksimumHastighet: number[]; - maksimumHastighetMalt: any[]; + maksimumHastighetMalt: string[]; motor: Motor[]; } @@ -245,7 +245,7 @@ export interface Persontall { } export interface Tilhengerkopling { - kopling: any[]; + kopling: string[]; } export interface Vekter { @@ -258,7 +258,7 @@ export interface Vekter { tillattTotalvekt: number; tillattVertikalKoplingslast: number; tillattVogntogvekt: number; - vogntogvektAvhBremsesystem: any[]; + vogntogvektAvhBremsesystem: string[]; } export interface Kjennemerke { From 65c05c9d148d67c6363f40f246de0a77e31ddeb9 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sun, 9 Apr 2023 00:15:28 +0200 Subject: [PATCH 15/15] Fiks template literal --- api/getRegNummer.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/api/getRegNummer.ts b/api/getRegNummer.ts index 0d899bc..58f34b9 100644 --- a/api/getRegNummer.ts +++ b/api/getRegNummer.ts @@ -3,6 +3,8 @@ import { sanitize } from "isomorphic-dompurify"; import { VercelRequest, VercelResponse } from "@vercel/node"; import { IStatensVegvesenFullData } from "../scripts/types/typeDefinitions"; +// https://autosys-kjoretoy-api.atlas.vegvesen.no/api-ui/index-enkeltoppslag.html + export default async function handler( req: VercelRequest, res: VercelResponse @@ -45,10 +47,10 @@ export default async function handler( res.status(200).json(sanitizedData); } else { - res.status(500).json({ error: `Feil under henting av data ` }); + res.status(500).json({ error: "Feil under henting av data " }); } } catch (error) { console.error(error); - res.status(500).json({ error: `Feil under henting av data ` }); + res.status(500).json({ error: "Feil under henting av data" }); } }