Skip to content

Commit

Permalink
Support for old data format
Browse files Browse the repository at this point in the history
  • Loading branch information
dex4er committed Aug 6, 2018
1 parent d771c01 commit 83a8b93
Show file tree
Hide file tree
Showing 10 changed files with 312 additions and 135 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## v0.2.0 2018-08-06

* Support for old data format.
* Data object is an instance of
`PolishVehicleRegistrationCertificateNewFormatData` or
`PolishVehicleRegistrationCertificateOldFormatData` class.

## v0.1.0 2018-07-28

* Initial release
40 changes: 38 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,32 @@ npm install -D @types/node
const PolishVehicleRegistrationCertificateDecoder = require('polish-vehicle-registration-certificate-decoder')
```

or:

```js
const {
PolishVehicleRegistrationCertificateDecoder,
PolishVehicleRegistrationCertificateNewFormatData,
PolishVehicleRegistrationCertificateOldFormatData
} = require('polish-vehicle-registration-certificate-decoder')
```

_Typescript:_

```ts
import PolishVehicleRegistrationCertificateDecoder from 'polish-vehicle-registration-certificate-decoder'
```

or

```ts
import {
PolishVehicleRegistrationCertificateDecoder,
PolishVehicleRegistrationCertificateNewFormatData,
PolishVehicleRegistrationCertificateOldFormatData
} from 'polish-vehicle-registration-certificate-decoder'
```

### constructor

```js
Expand All @@ -47,18 +67,34 @@ _Arguments:_
## data

Property which contains decoded data object. Each property of this data object
is an object with `name`, `description` and `value` properties.
is an object with `name`, `description` and `value` properties. This object is
an instance of `PolishVehicleRegistrationCertificateNewFormatData` or
`PolishVehicleRegistrationCertificateOldFormatData` class.

_Example:_

<!-- markdownlint-disable MD013 -->

```js
if (decoder.data instanceof PolishVehicleRegistrationCertificateNewFormatData) {
console.log(decoder.data.format)
} else if (decoder.data instanceof PolishVehicleRegistrationCertificateOldFormatData) {
console.log(decoder.data.adresPosiadaczaDowoduRejestracyjnego)
}
```

<!-- markdownlint-enable MD013 -->

Full example of new format data:

```js
console.log(JSON.strinfigy(decoder.data, null, 2))
```

Output:

<!-- markdownlint-disable MD013 -->

```json
{
"format": {
Expand Down Expand Up @@ -352,7 +388,7 @@ Output:
"value": "AAA0000000"
},
"kodIdentyfikacyjny": {
"name": "?",
"name": "OCR",
"description": "kod identyfikacyjny",
"value": "02650008000158"
},
Expand Down
5 changes: 4 additions & 1 deletion examples/polish-vehicle-registration-certificate-ts.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
#!/usr/bin/env ts-node

import PolishVehicleRegistrationCertificateDecoder from '../lib/polish-vehicle-registration-certificate-decoder'
import { PolishVehicleRegistrationCertificateDecoder } from '../lib/polish-vehicle-registration-certificate-decoder'

// Scanned from https://www.pwpw.pl/binaries/content/gallery/pwpwcms_pl/Dla_mediow/zdjecia_do_artykulow/2016/03/dsc_1548.jpg
const b64Input: string = 'BgQAANtYAAJDAPkxAHwAQXIw7zcGNN4ANiox+w81HrUGOP8eUABSAEUA+1oAWQBEDv9OAFQAIABN3wAuClMAvlQPV/eKUhq9Wg5X7k58UtcWSVq9TF5J79pBZ+5PAEsG12bTSm5GVQBM/ntSAEH7L1dj+0MAS1vvMvovewo3Ut4wDi39HjEAN6Pbl0FNe3YgPt5Q3kv3IlSevVnX1z9FMmuCShL2WgBaG9umKADvSAApJnx75k+itwZMAEx9X0rvbkSOTXtOOF/DRy0WOW53fPYLFoMzLr0xAi3DGnevLQOCfJ/vQZ5TcBZrN0oa9k4AfA82Q4QaDzj3q8deN6sN7zIE/1x8lbMnQdwBQi5ZT86jL2tqNAr2MwAw34xSH+uPSVPYFxZThBMzON8AMJM5wQA3MwRcMX7bNcET2jInwyedE01HZ4dlM94qKy0DL38fNgAqeBszSxOvNIeKfHM7fCLxNQAwVkMtdzl7Xiw/YMyrFzxQACBWw+Hza7c3C93/NWuHg1OWRquPQ5KP02K9IBZT4QZC9oNZU7aXFiOX83U4ADJFC7ADhrNVCyOW8w9qMbEnZhdHbHxjdjIT7E4DW0M3OQuGaxYmCSSSSSr/'

const decoder = new PolishVehicleRegistrationCertificateDecoder(b64Input)

console.info(decoder.data.constructor.name.replace(/(?!^)[A-Z]/g, (m) => ' ' + m.toLowerCase()) + ':')
console.info('')

Object.values(decoder.data).forEach((field) => {
console.info(`${field.name.padStart(30)}: ${field.value}`)
})
3 changes: 3 additions & 0 deletions examples/polish-vehicle-registration-certificate.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ const b64Input = 'BgQAANtYAAJDAPkxAHwAQXIw7zcGNN4ANiox+w81HrUGOP8eUABSAEUA+1oAWQ

const decoder = new PolishVehicleRegistrationCertificateDecoder(b64Input)

console.info(decoder.data.constructor.name.replace(/(?!^)[A-Z]/g, (m) => ' ' + m.toLowerCase()) + ':')
console.info('')

Object.values(decoder.data).forEach((field) => {
console.info(`${field.name.padStart(30)}: ${field.value}`)
})
53 changes: 52 additions & 1 deletion lib/polish-vehicle-registration-certificate-decoder.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,24 @@ export interface PolishVehicleRegistrationCertificateIssuer {
value: PolishVehicleRegistrationCertificateIssuerValue
}

export interface PolishVehicleRegistrationCertificateAddressValue extends Array<string> {
0: string
1: string
}

export interface PolishVehicleRegistrationCertificateAddress {
name: string
description: string
value: PolishVehicleRegistrationCertificateAddressValue
}

export interface PolishVehicleRegistrationCertificateField {
name: string
description: string
value: string
}

export interface PolishVehicleRegistrationCertificateData {
export class PolishVehicleRegistrationCertificateNewFormatData {
format: PolishVehicleRegistrationCertificateField
seriaDr: PolishVehicleRegistrationCertificateField
kodTerytorialnyUrzedu: PolishVehicleRegistrationCertificateField
Expand Down Expand Up @@ -93,6 +104,46 @@ export interface PolishVehicleRegistrationCertificateData {
nieznane2: PolishVehicleRegistrationCertificateField
}

export class PolishVehicleRegistrationCertificateOldFormatData {
seriaDr: PolishVehicleRegistrationCertificateField
organWydajacy: PolishVehicleRegistrationCertificateIssuer
numerRejestracyjnyPojazdu: PolishVehicleRegistrationCertificateField
markaPojazdu: PolishVehicleRegistrationCertificateField
modelPojazdu: PolishVehicleRegistrationCertificateField
numerIdentyfikacyjnyPojazdu: PolishVehicleRegistrationCertificateField
dataWydaniaDowoduRejestracyjnego: PolishVehicleRegistrationCertificateField
okresWaznosciDowoduRejestracyjnego: PolishVehicleRegistrationCertificateField
pelneNazwiskoLubNazwaPosiadaczaDowoduRejestracyjnego: PolishVehicleRegistrationCertificateField
adresPosiadaczaDowoduRejestracyjnego: PolishVehicleRegistrationCertificateAddress
numerPESELLubREGONPosiadaczaDowoduRejestracyjnego: PolishVehicleRegistrationCertificateField
pelneNazwiskoLubNazwaWlascicielaPojazdu: PolishVehicleRegistrationCertificateField
numerPESELLubREGONWlascicielaPojazdu: PolishVehicleRegistrationCertificateField
adresWlascicielaPojazdu: PolishVehicleRegistrationCertificateAddress
maksymalnaMasaCalkowitaPojazduKg: PolishVehicleRegistrationCertificateField
dopuszczalnaMasaCalkowitaPojazduKg: PolishVehicleRegistrationCertificateField
dopuszczalnaMasaCalkowitaZespoluPojazdowKg: PolishVehicleRegistrationCertificateField
masaWlasnaPojazduKg: PolishVehicleRegistrationCertificateField
liczbaOsi: PolishVehicleRegistrationCertificateField
maksymalnaMasaCalkowitaPrzyczepyZHamulcemKg: PolishVehicleRegistrationCertificateField
maksymalnaMasaCalkowitaPrzyczepyBezHamulcaKg: PolishVehicleRegistrationCertificateField
stosunekMocyDoMasyWlasnejKWkg: PolishVehicleRegistrationCertificateField
pojemnoscSilnikaCm3: PolishVehicleRegistrationCertificateField
maksymalnaMocNettoSilnikaKW: PolishVehicleRegistrationCertificateField
rodzajPaliwa: PolishVehicleRegistrationCertificateFuel
dataPierwszejRejestracjiPojazdu: PolishVehicleRegistrationCertificateField
liczbaMiejscSiedzacych: PolishVehicleRegistrationCertificateField
liczbaMiejscStojacych: PolishVehicleRegistrationCertificateField
rodzajPojazdu: PolishVehicleRegistrationCertificateField
przeznaczenie: PolishVehicleRegistrationCertificateField
rokProdukcji: PolishVehicleRegistrationCertificateField
dopuszczalnaLadownosc: PolishVehicleRegistrationCertificateField
najwiekszyDopNaciskOsi: PolishVehicleRegistrationCertificateField
nrKartyPojazdu: PolishVehicleRegistrationCertificateField
kodIdentyfikacyjny: PolishVehicleRegistrationCertificateField
}

export type PolishVehicleRegistrationCertificateData = PolishVehicleRegistrationCertificateOldFormatData | PolishVehicleRegistrationCertificateNewFormatData

export class PolishVehicleRegistrationCertificateDecoder {
readonly data: PolishVehicleRegistrationCertificateData

Expand Down

0 comments on commit 83a8b93

Please sign in to comment.