Giter VIP home page Giter VIP logo

publiccode-parser-go's Introduction

publiccode.yml parser for Go

Join the #publiccode channel Get invited

A Go parser and validator for publiccode.yml files.

publiccode.yml is an international standard for describing public software, which should be placed at the root of Free/Libre and Open Source software repositories.

This parser performs syntactic and semantic validation according to the official spec.

Features

  • Go library and CLI tool (publiccode-parser)
  • Supports the latest version of the publiccode.yml Standard
  • publiccode-parser can output validation errors as JSON or in errorformat friendly way
  • Verifies the existence of URLs by checking the response for URL fields (can be disabled)

Example

parser := publiccode.NewParser("file:///path/to/local/dir/publiccode.yml")
// OR
// parser := publiccode.NewParser("https://github.com/example/example/publiccode.yml")

// all these settings are optional:
parser.DisableNetwork = true
parser.Branch = "mybranch"

err := parser.Parse()
publiccode := parser.PublicCode

Validation from command line

The publiccode-parser binary which be used for validating a publiccode.yml from the command line.

To get the latest development version use:

go install github.com/italia/publiccode-parser-go/v3/publiccode-parser@latest
publiccode-parser mypubliccode.yml

To get the latest stable version go to the release page and grab the one for your arch.

Run publiccode-parser --help for the available command line flags.

The tool returns 0 in case of successful validation, 1 otherwise.

Easy validation with Docker

You can easily validate your files using Docker on your local machine or in your CI pipeline:

docker run -i italia/publiccode-parser-go /dev/stdin < publiccode.yml

The image is available on Dockerhub. You can also build your own running:

docker build -t italia/publiccode-parser-go .

Examples

The examples assume that your publiccode.yml file is on your local machine, at /home/my-user/publiccodes/publiccode.yml

  • Validate and print the canonicalized file

    docker run -i italia/publiccode-parser-go -export /dev/stdout /dev/stdin < publiccode.yml
  • Validate a publiccode file named publiccode.yml in /home/user

    docker run -v /home/user:/go/src/files italia/publiccode-parser-go
  • Validate a publiccode file named /opt/publiccodes/my-amazing-code.yaml

    docker run -v /opt/publiccodes:/go/src/files italia/publiccode-parser-go my-amazing-code.yaml
  • Validate publiccode.yml without using the network (fe. checking URLs are reachable)

    docker run -v /opt/publiccodes/publiccodes:/files italia/publiccode-parser-go -no-network publiccode.yml
  • Debugging, access the container interactive shell, overriding the entrypoint

    docker run -it --entrypoint /bin/sh italia/publiccode-parser-go

Contributing

Contributing is always appreciated. Feel free to open issues, fork or submit a Pull Request. If you want to know more about how to add new fields, check out CONTRIBUTING.md. In order to support other country-specific extensions in addition to Italy some refactoring might be needed.

See also

Maintainers

This software is maintained by the Developers Italia team.

License

© 2018-present Team per la Trasformazione Digitale - Presidenza del Consiglio dei Ministri

Licensed under the EUPL 1.2. The version control system provides attribution for specific lines of code.

publiccode-parser-go's People

Contributors

alranel avatar bfabio avatar dependabot[bot] avatar github-actions[bot] avatar lorello avatar lucaprete avatar mspasiano avatar ododa avatar ph0tonic avatar r3vit avatar rasky avatar ruphy avatar sebbalex avatar snyk-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

publiccode-parser-go's Issues

Update data/it/ipa_codes.txt to the newest version

A new version of amministrazioni.txt is available, we should generate an updated data/it/ipa_codes.txt from it.

Run

curl -sL 'https://www.indicepa.gov.it/public-services/opendata-read-service.php?dstype=FS&filename=amministrazioni.txt' |
  tail -n +2 |
  cut -f1 |
  LC_COLLATE=C sort > data/it/ipa_codes.txt &&
  go-bindata -pkg assets -o assets/assets.go data/...

to generate an updated ipa_codes.txt.

What changed

--- old
+++ new
@@ -8,6 +8,7 @@
 093
 0SGNV76C
 102
+11B2JNFL
 13WYVHQO
 15U5YKAC
 16IODWCU
@@ -20,6 +21,7 @@
 1VO9PWVQ
 21W263TE
 28B1JW1G
+2O8E0NA9
 2QR9KMNO
 2YNKW2LR
 38HU6HCT
@@ -73,6 +75,7 @@
 9RNBB1Z2
 9RY1HG7E
 9X4DJYVC
+9XSEMYNU
 A2QOZBNL
 A690_bpe
 A86RQ42W
@@ -437,6 +440,7 @@
 ORDFARRA
 ORFAPREN
 ORREGEPI
+OW9CCROF
 Ocdpc298
 Ocdpc71
 P65P3X9X
@@ -455,6 +459,7 @@
 R2C20VBG
 R5ECJLP0
 RFSKHTXX
+RHLOX0L2
 RHQ88HKD
 RI4Q3TD8
 RJM0UGQV
@@ -465,6 +470,7 @@
 RVTCUJEA
 S0IR9UU4
 S1VJTP18
+S8RKWIG8
 SEUNSTNA
 SFUOI6NZ
 SHJGFOSY
@@ -528,6 +534,7 @@
 WN1OY9GN
 WQF3ZW8F
 X0D2YOOT
+XAODE0RY
 XC1SSU3R
 XRKD7FFV
 Y0YVDBRZ
@@ -22368,7 +22375,6 @@
 ucpbcdol
 ucpiareg
 ucpmo_nu
-ucpsc
 ucr_028
 ucrcn
 ucs

Docker version - Error in absolute path

Hi all

Using docker version, the absolute path for publiccode.yml doesn't work; relative path works.

Example:
1) relative path:

$ docker run -it --rm -v $(pwd):/files --entrypoint="/bin/sh" italia/publiccode-parser-go
/ #
/ # /pcvalidate files/publiccode.yml
validation ok
/ #

2) absolute path:

$ docker run -it --rm -v $(pwd):/files --entrypoint="/bin/sh" italia/publiccode-parser-go
/ #
/ # /pcvalidate /files/publiccode.yml
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x670936]

goroutine 1 [running]:
github.com/alranel/go-vcsurl.IsFile(0x0, 0xc0000e1e78)
	/go/src/github.com/alranel/go-vcsurl/vcsurl.go:90 +0x26
github.com/alranel/go-vcsurl.GetRawRoot(0x0, 0x0)
	/go/src/github.com/alranel/go-vcsurl/vcsurl.go:170 +0x2f
main.main()
	/go/src/github.com/italia/publiccode-parser-go/pcvalidate/pcvalidate.go:43 +0x610
/ #

When some keys are in error, mandatory key are not enforced

When validating a Publiccode which has some error in compilation and some mandatory keys missing, it only enforce for malformed keys and not for required. Solving compilation errors it warns you about the required key missing.
I expect the full list on what's going wrong every time.

Add GitHub Action

It would be nice to have the functionality of pcvalidate available through a GitHub Action.

allow also relative path for authorsFile

Using this json

{
  "url": "https://github.com/italia/publiccode-editor",
  "localisation": { 
    "localisationReady": false
  },
  "description": {
     "it": {
	"apiDocumentation": "README.md"
	},
  },
  "legal": {
	"authorsFile": "AUTHORS.md"
  },
  "publiccodeYmlVersion": "0.2"
}

I get

    {
      "key": "legal.authorsFile",
      "description": "file 'AUTHORS.md' does not exist",
      "line": 13,
      "column": 3
    }

As it is already happening for apiDocumentation field where relative path to url are allowed I expect same behaviour for authorsFile.

Multiple dependsOn subkeys are not kept

When submitting a publiccode which have multiple key for a given type it keeps and exports only the last one. See below:
in:

dependsOn:
  open:
    - name: MySQL
      versionMin: "1.1"
      versionMax: "1.3"
      optional: true
    - name: PostgreSQL
      version: "3.2"
      optional: true

out:

dependsOn:
  open:
  - name: PostgreSQL
    versionMin: ""
    versionMax: ""
    optional: true
    version: "3.2"

Update data/it/ipa_codes.txt to the newest version

A new version of amministrazioni.txt is available, we should generate an updated data/it/ipa_codes.txt from it.

Run

curl -sL 'https://www.indicepa.gov.it/public-services/opendata-read-service.php?dstype=FS&filename=amministrazioni.txt' |
  tail -n +2 |
  cut -f1 |
  LC_COLLATE=C sort > data/it/ipa_codes.txt

to generate an updated ipa_codes.txt.

What changed

--- old
+++ new
@@ -30,9 +30,11 @@
 3TWJAXOP
 3VZPQX9H
 437MRY30
+48LQPAQ6
 4EVBLVBD
 4FGHPC8A
 4I5ECKIA
+4ICNTMCY
 4SK10CDN
 53029QD1
 5B6CJIEW
@@ -101,6 +103,7 @@
 AVEPA
 Asbuccor
 B02ASC
+B25V5WJV
 B432
 BHYBWM94
 BIMCHIE
@@ -321,6 +324,7 @@
 FNOMCEO
 FRIS0290
 FTSCN
+FW1CARNO
 FWSG90QR
 FY220OIG
 G3QM24YK
@@ -348,6 +352,7 @@
 IFG1TCTJ
 IISMC
 IISS
+IMGIVJZY
 INOGS
 INVSI
 IOR
@@ -404,6 +409,7 @@
 NNGPJP3R
 NZH46BY1
 O49H33BL
+O4E8DGO6
 OAU7YTW9
 ODCECRM
 ODCECRO
@@ -508,6 +514,7 @@
 YMHFWBI1
 Z1C350ML
 Z9PFC2DQ
+Z9XLKQCF
 ZLG1TQW2
 ZSILSSNT
 ZT6J8B52
@@ -879,7 +886,6 @@
 aliseo
 alml_059
 alrnrs
-als
 alsdcan
 alsdx
 alsia
@@ -12036,7 +12042,6 @@
 gglsr
 ggnlm
 ggtis
-giarc
 giesr
 gisec
 giss
@@ -22100,7 +22105,6 @@
 spcgg
 spes
 spgml
-spiddto
 spjns
 splaavg
 splalsav

Wrong error representation with malformed keys

Supplying a malformed value for boolean|string|array we get

...
{"Key":"Unexpected boolean key: it/pagopa"},
{"Key":"Unexpected boolean key: it/cie"},
{"Key":"Unexpected boolean key: it/anpr"},
{"Key":"Unexpected array key: it/ecosistemi"}
...

Instead I expect a more clear error like:

...
{"Key": "it/pagopa", "Reason": "Unexpected boolean key: it/pagopa"},
{"Key": "it/cie", "Reason": "Unexpected boolean key: it/cie"},
{"Key": "it/anpr", "Reason": "Unexpected boolean key: it/anpr"},
{"Key": "it/ecosistemi", "Reason": "Unexpected array key: it/ecosistemi"}
...

where Key is just the key name and in Reason we get the explanation.

Add AUTHORS file

An AUTHORS file is needed in order to correctly attribute the copyright

pcvalidate is a bad name

We build the CLI binary and name it pcvalidate, but it's not a discoverable name nor a logic one for this project. Additionally, the abbreviation "PC" can mean a plethora of different things.

Possible names:

  • publiccode-parser
  • publiccode-validate
  • ...

Crawler panic on empty list

I believe the crawler does not correctly handle the case when a list is empty, see this example o publiccode:

https://github.com/aziendazero/ecm/blob/bdbe58c3553c497b045410067e16e6b3e348c204/publiccode.yml#L18-L23

which has this behaviour:

panic: key "dependsOn/open" is empty. Remove it or fill with valid values

goroutine 1 [running]:
github.com/italia/publiccode-parser-go.(*Parser).decoderec(0xc000512380, 0xc000658ab0, 0x9, 0xc0006607b0, 0xc000660cf0, 0x3, 0x3)
        /Users/libremente/go/src/github.com/italia/publiccode-parser-go/parser.go:165 +0x13dc
github.com/italia/publiccode-parser-go.(*Parser).decoderec(0xc000512380, 0x0, 0x0, 0xc000660720, 0x0, 0xc0006ec0e0, 0x8ae)
        /Users/libremente/go/src/github.com/italia/publiccode-parser-go/parser.go:160 +0xec3
github.com/italia/publiccode-parser-go.(*Parser).Parse(0xc000512380, 0xc000718000, 0x8ae, 0xe00, 0x8ae, 0xe00)
        /Users/libremente/go/src/github.com/italia/publiccode-parser-go/parser.go:52 +0x229
github.com/italia/publiccode-parser-go.(*Parser).ParseRemoteFile(0xc000512380, 0xc0006820c0, 0x47, 0x0, 0x0)
        /Users/libremente/go/src/github.com/italia/publiccode-parser-go/parser.go:85 +0x135
main.main()
        /Users/libremente/go/src/github.com/italia/publiccode-parser-go/pcvalidate/pcvalidate.go:46 +0x6e9

Panic not managed if pcvalidate runs in a different path from the file publiccode.yml

The pcvalidate utility exits with a panic error if I try to validate a file from a distinct directory where the file to be validated resides.

Example:

lorello@calcifer:~/src/opencontent/openagenda$ docker run -v $(pwd):/var/tmp:ro -it --rm golang sh -c "go get github.com/italia/publiccode-parser-go/pcvalidate; bin/pcvalidate /var/tmp/publiccode.yml"
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x4ee7c6]

goroutine 1 [running]:
github.com/alranel/go-vcsurl.IsRawFile(0x0, 0x17)
    /go/src/github.com/alranel/go-vcsurl/vcsurl.go:95 +0x26
github.com/alranel/go-vcsurl.IsFile(0x0, 0x4cbbee)
    /go/src/github.com/alranel/go-vcsurl/vcsurl.go:72 +0x2f
github.com/alranel/go-vcsurl.GetRawRoot(0x0, 0x0)
    /go/src/github.com/alranel/go-vcsurl/vcsurl.go:139 +0x2f
main.main()
    /go/src/github.com/italia/publiccode-parser-go/pcvalidate/pcvalidate.go:43 +0x70d

The problem does not occur if I run the command from the same path where the publiccode.yml resides:

lorello@calcifer:~/src/opencontent/openagenda$ docker run -v $(pwd):/var/tmp:ro -it --rm golang sh -c "go get github.com/italia/publiccode-parser-go/pcvalidate; cd /var/tmp; /go/bin/pcvalidate publiccode.yml"
validation ko:
description/it/features: too long, max 100 chars

Gitlab sometime adds a dash in raw url

On Gitlab platform trying to get raw file for publiccode.yml sometimes a /- is added before filename, see example below:

https://gitlab.com/org/repo/-/raw/master/publiccode.yml

instead of:

https://gitlab.com/org/repo/raw/master/publiccode.yml

This will cause a validation fail:

validation ko:
url: declared url (https://gitlab.com/org/repo) does not match the actual 
publiccode.yml source URL (https://gitlab.com/org/repo/-/raw/master/)

Here regex used to do that match
https://github.com/alranel/go-vcsurl/blob/master/vcsurl.go#L217

Should support warnings as well

As of now, the parser can detect errors but it doesn't have the notion of non-fatal warning message, which can be useful to point deprecations, for example, or other tips to the user.

We should support warnings in the JSON and non-JSON output and in the API as well.

Crash checking publiccode.yml from Azure Devops

pcvalidate https://dev.azure.com/atsmi-open/_git/Controllo%20di%20Gestione\?path\=%2Fpubliccode.yml
panic: runtime error: invalid memory address or nil pointer dereference        
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x6708f6]        goroutine 1 [running]:
github.com/alranel/go-vcsurl.IsFile(0x0, 0xc0000e5e78)
        /home/surf/go/src/github.com/alranel/go-vcsurl/vcsurl.go:90 +0x26
github.com/alranel/go-vcsurl.GetRawRoot(0x0, 0x0)
        /home/surf/go/src/github.com/alranel/go-vcsurl/vcsurl.go:170 +0x2f
main.main()
        /home/surf/go/src/github.com/italia/publiccode-parser-go/pcvalidate/pcvalidate.go:43 +0x610

Update the assets

We should update amministrazioni.txt and oembed_providers.json and possibly come up with a procedure to do it more frequently.

Doesn't work on Windows

Hi,
running these commands on Windows 10:

go get github.com/italia/publiccode-parser-go/pcvalidate
pcvalidate mypubliccode.yml

I get this error:

C:\xampp\htdocs\edizioni\wp-content\plugins\wp-pagopa-gateway-cineca> pcvalidate publiccode.yml  
panic: specified file is not found
goroutine 1 [running]:
github.com/alranel/go-spdx/spdx.init.0()
        C:/Users/claudio/go/pkg/mod/github.com/alranel/[email protected]/spdx/licenses.go:26 +0x21a

It doesn't seem to find the mypubliccode.yml file which is in the same path as the consoles where the command is run.
It doesn't work either by specifying the absolute path to the file.

Output in a structured format in pcvalidator

Supporting output in a structured format (JSON?) would allow us to return validation metadata (fe. the line and column number with the validation error) and that would be useful when integrating pcvalidator in automated environments and CI/CD.

pcvalidate fails when an absolute path is given

When an absolute path to a publiccode.yml is given, pcvalidate command line utility fails as follow:

$ pcvalidate /tmp/pc.yml
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x125f5f6]

Update data/it/ipa_codes.txt to the newest version

A new version of amministrazioni.txt is available, we should generate an updated data/it/ipa_codes.txt from it.

Run

curl -sL 'https://www.indicepa.gov.it/public-services/opendata-read-service.php?dstype=FS&filename=amministrazioni.txt' |
  tail -n +2 |
  cut -f1 |
  LC_COLLATE=C sort > data/it/ipa_codes.txt &&
  go-bindata -pkg assets -o assets/assets.go data/...

to generate an updated ipa_codes.txt.

What changed

--- old
+++ new
@@ -8,6 +8,7 @@
 093
 0SGNV76C
 102
+13WYVHQO
 15U5YKAC
 16IODWCU
 1CMVL
@@ -18,6 +19,7 @@
 1UMEMOPN
 1VO9PWVQ
 21W263TE
+28B1JW1G
 2QR9KMNO
 2YNKW2LR
 38HU6HCT
@@ -37,11 +39,13 @@
 4I5ECKIA
 4ICNTMCY
 4SK10CDN
+4WH03GS8
 53029QD1
 5B6CJIEW
 5DNNOS0T
 5DVYPGTK
 5GOPE0AP
+5TX38ION
 6006VSSS
 68PDM2YH
 6YJWRKS1
@@ -50,6 +54,7 @@
 7HP3V1V6
 7IW8ELTH
 7LAQH02E
+7PJKGTET
 7S3QTPXP
 7T093CG4
 7UG4CTPM
@@ -66,6 +71,8 @@
 9AXJSAEX
 9IDG0APG
 9RNBB1Z2
+9RY1HG7E
+9X4DJYVC
 A2QOZBNL
 A690_bpe
 A86RQ42W
@@ -112,6 +119,7 @@
 BIMCHIE
 BRM2B3KM
 BTEYI4SX
+BZ27IBMB
 C
 C0DGZ4G8
 C58G5FHA
@@ -159,6 +167,7 @@
 CMS61
 CMSRC
 CMSS
+CMSYKTLI
 CMTL
 CMTz
 CMUVM
@@ -176,6 +185,7 @@
 CMZU
 CMdC
 CNPAPAL
+COEGMDWL
 COGTEP
 COISSEIN
 COPROCNA
@@ -314,6 +324,7 @@
 ED28KAEQ
 EET9XGEV
 EG6JDU0D
+EIORHA02
 EK7JBB69
 EPAP
 EPNFCMFC
@@ -383,12 +394,14 @@
 JW8PDZ3S
 JZXL7734
 K0OINIOJ
+K30DU9FS
 K5WYC3QT
 KDPADR44
 KH5RHFCV
 KM0AWSR8
 KTC92OJB
 KUE9J1VN
+KVXA3LTB
 KYH72139
 L8CEKA7R
 LACO
@@ -414,7 +427,6 @@
 NNGPJP3R
 NZH46BY1
 O49H33BL
-O4E8DGO6
 OAU7YTW9
 ODCECRM
 ODCECRO
@@ -509,6 +521,7 @@
 VN0ZJAD4
 VN3OVAXT
 VOJVS6ZO
+VQB7U7LD
 VTH34HOV
 VU0SWM8Z
 VVGM4NFJ
@@ -612,7 +625,6 @@
 abl_097
 ablcpg
 abllmcmv
-abrc
 abrcs
 abs
 abs_bg
@@ -832,7 +844,6 @@
 aggi
 agid
 agiru_
-agis
 agpia
 agrea
 agric
@@ -1662,8 +1673,6 @@
 atis
 atisp_co
 atispbs
-atlcp
-atlcp_96
 atler
 atlero
 atmsp
@@ -9657,7 +9666,6 @@
 cbb_107
 cbbas
 cbbbv
-cbbc
 cbbm_077
 cbbosrl
 cbbu
@@ -21941,7 +21949,6 @@
 rabgs
 ral
 ralml
-raop_006
 rar
 rcrpscb
 rdodv

Segmentation violation

$ docker run -v /home/mspasiano/git/sigla-main:/files italia/publiccode-parser-go

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x6fc2ff]

goroutine 1 [running]:
main.init.0()
/go/src/github.com/italia/publiccode-parser-go/pcvalidate/pcvalidate.go:23 +0x7f

Segmentation fault when remote-base-url is not a repo

The crawler crashes when -remote-base-url points to a host with an expired TLS certificate: is not a repo

$ docker run -i italia/publiccode-parser-go -export /dev/stdout -remote-base-url https://expired.badssl.com/ /dev/stdin < publiccode.yml

2020/09/24 14:55:00 Warning: go-vcsurl failed to detect repo for https://expired.badssl.com/
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x4e7eea]

goroutine 1 [running]:
net/url.(*URL).String(0x0, 0x30, 0xc00040f850)
	/usr/local/go/src/net/url/url.go:813 +0x4a
github.com/italia/publiccode-parser-go.(*Parser).decodeString(0xc0003d0380, 0xc00056194b, 0x3, 0xc000cfd020, 0x28, 0x0, 0x0)
	/go/src/keys.go:86 +0x269b
github.com/italia/publiccode-parser-go.(*Parser).decoderec(0xc0003d0380, 0x0, 0x0, 0xc000067890, 0x0, 0xc0003d8000, 0x301e)
	/go/src/parser.go:150 +0xe52
github.com/italia/publiccode-parser-go.(*Parser).Parse(0xc0003d0380, 0xc0003d8000, 0x301e, 0x3e00, 0x3e00, 0x0)
	/go/src/parser.go:75 +0x234
github.com/italia/publiccode-parser-go.(*Parser).ParseFile(0xc0003d0380, 0x7ffe57c7bf19, 0xa, 0x0, 0x0)
	/go/src/parser.go:92 +0x88
main.main()
	/go/src/pcvalidate/pcvalidate.go:73 +0x412
$ docker run -i italia/publiccode-parser-go -export /dev/stdout -remote-base-url https://github.com/italia /dev/stdin < publiccode.yml
2020/09/24 15:01:04 Warning: go-vcsurl failed to detect repo for https://github.com/italia
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x4e7eea]

goroutine 1 [running]:
net/url.(*URL).String(0x0, 0x30, 0xc000439850)
	/usr/local/go/src/net/url/url.go:813 +0x4a
github.com/italia/publiccode-parser-go.(*Parser).decodeString(0xc0003fc380, 0xc000560dab, 0x3, 0xc00059f170, 0x28, 0x0, 0x0)
	/go/src/keys.go:86 +0x269b
github.com/italia/publiccode-parser-go.(*Parser).decoderec(0xc0003fc380, 0x0, 0x0, 0xc000067890, 0x0, 0xc000404000, 0x301e)
	/go/src/parser.go:150 +0xe52
github.com/italia/publiccode-parser-go.(*Parser).Parse(0xc0003fc380, 0xc000404000, 0x301e, 0x3e00, 0x3e00, 0x0)
	/go/src/parser.go:75 +0x234
github.com/italia/publiccode-parser-go.(*Parser).ParseFile(0xc0003fc380, 0x7ffdde266f19, 0xa, 0x0, 0x0)
	/go/src/parser.go:92 +0x88
main.main()
	/go/src/pcvalidate/pcvalidate.go:73 +0x412

Exception not catched

In a publiccode.yml, when a key should contain a boolean but, instead, it contains a string, the pcvalidate generates this output:

panic: interface conversion: interface {} is string, not bool

goroutine 1 [running]:
github.com/italia/publiccode-parser-go.(*Parser).checkDependencies(0xc4200eae00, 0xc420298d70, 0xe, 0xc420283840, 0xc4202000f0, 0x781801, 0x6c8f20, 0xc4202000f0, 0xc420298d68)                                                              
        /go/src/github.com/italia/publiccode-parser-go/check_dependencies.go:11 +0x67d
github.com/italia/publiccode-parser-go.(*Parser).decodeArrObj(0xc4200eae00, 0xc420298d70, 0xe, 0xc420283840, 0x1, 0xc420093f3c)                                                                                                              
        /go/src/github.com/italia/publiccode-parser-go/keys.go:391 +0x1216
github.com/italia/publiccode-parser-go.(*Parser).decoderec(0xc4200eae00, 0xc420093f30, 0x9, 0xc42008b860, 0x1, 0x1, 0x0)                                                                                                                     
        /go/src/github.com/italia/publiccode-parser-go/parser.go:157 +0x481
github.com/italia/publiccode-parser-go.(*Parser).decoderec(0xc4200eae00, 0x0, 0x0, 0xc42008b7a0, 0x0, 0xc4200960b0, 0x0)                                                                                                                     
        /go/src/github.com/italia/publiccode-parser-go/parser.go:167 +0xe80
github.com/italia/publiccode-parser-go.(*Parser).Parse(0xc4200eae00, 0xc4200aa900, 0x6f4, 0x8f4, 0x8f4, 0x0)
        /go/src/github.com/italia/publiccode-parser-go/parser.go:59 +0x123
github.com/italia/publiccode-parser-go.(*Parser).ParseFile(0xc4200eae00, 0x7ffd0aae22b8, 0xe, 0x744550, 0x1b)
        /go/src/github.com/italia/publiccode-parser-go/parser.go:76 +0x88
main.main()
        /go/src/github.com/italia/publiccode-parser-go/pcvalidate/pcvalidate.go:35 +0x2bd

since this happened in two cases already, maybe it can be safer to handle such a case, or at least fail safely.
Changing the boolean value in the yml into a real boolean works as expected.

pcvalidate should skips auth headers outside scoped domain

Pcvalidate now supports authentication to overcome strictly quota limits for code hosting platform. This is possible only when using in crawler mode.
It will expose a new API where it is possible pass headers for authentication.
This will bring some problem with URL outside the scoped domain, ex:

$ curl -s -I -X GET https://dev.azure.com/docsuiteweb/DocSuitePA
HTTP/2 200
$ curl -s -I -X GET -H "Authorization:Basic dGVzdDp0ZXN0dGVzdHRlc3R0ZXN0dGVzdHRlc3R0ZXN0dGVzdHRlc3Q=" https://dev.azure.com/docsuiteweb/DocSuitePA
HTTP/2 401

Update data/it/ipa_codes.txt to the newest version

A new version of amministrazioni.txt is available, we should generate an updated data/it/ipa_codes.txt from it.

Run

curl -sL 'https://www.indicepa.gov.it/public-services/opendata-read-service.php?dstype=FS&filename=amministrazioni.txt' |
  tail -n +2 |
  cut -f1 |
  LC_COLLATE=C sort > data/it/ipa_codes.txt

to generate an updated ipa_codes.txt.

What changed

--- old
+++ new
@@ -31,6 +31,7 @@
 3VZPQX9H
 437MRY30
 48LQPAQ6
+49ECCFSB
 4EVBLVBD
 4FGHPC8A
 4I5ECKIA
@@ -54,6 +55,7 @@
 7UG4CTPM
 7ZHXNWHL
 85X474AS
+8D75X2F2
 8FL5MZFG
 8HFG1ZY6
 8KA77F34
@@ -99,6 +101,7 @@
 ATO_PU
 AU1P
 AU2V
+AUAYATCQ
 AUV
 AVEPA
 Asbuccor
@@ -107,6 +110,7 @@
 B432
 BHYBWM94
 BIMCHIE
+BRM2B3KM
 BTEYI4SX
 C
 C0DGZ4G8
@@ -382,6 +386,7 @@
 K5WYC3QT
 KDPADR44
 KH5RHFCV
+KM0AWSR8
 KTC92OJB
 KUE9J1VN
 KYH72139
@@ -464,10 +469,12 @@
 TD8R55A9
 TFWVPPE9
 TK19AZV2
+TLDLLIV2
 TLU1ZPKZ
 TMes
 TOIS0680
 TPG06ENE
+TSUFVZBX
 UCCDFO
 UCCRDB
 UFUOTOVI
@@ -492,6 +499,7 @@
 USUCB
 UTA
 UTTT08FL
+UZSR6V6K
 V2AS9NTW
 V66IZTDS
 VBWL6VIO
@@ -9914,7 +9922,6 @@
 cdadap
 cdadapp
 cdaea_
-cdalpg
 cdao
 cdb_ot
 cdbat
@@ -20967,7 +20974,6 @@
 odcecda
 odcecdmo
 odcecmc
-odcecmpu
 odcecn
 odcecpa
 odcecv

Accept and map IPA office codes

IndicePA has two different types of codes:

  • iPA code, representing a legal entity (this is what we expect in the codiceIPA key)
  • office code, representing an office belonging to a legal entity

Such distinction is not very clear, so some people put an office code in the codiceIPA key. The parser should be tolerant, and accept office codes too, mapping them to their parent iPA code.

Add testcases files to test every field

We should add YAML testcases for each field of the standard testing all the possible scenarios (eg. field missing, empty, nil, etc) and all the supported versions.

Depends on #75.

Update amministrazioni.txt to the newest version

A new version of amministrazioni.txt is available, we should update it.

--- amministrazioni.txt	2022-02-23 12:37:54.127188385 +0100
+++ amministrazioni.txt.new	2022-02-23 05:35:56.000000000 +0100
@@ -9,0 +10 @@
+0SGNV76C	GEROPA SRL	Frascati	ROCKY	ROSSINI	00044	RM	Lazio	www.geropa.it	Via DI GROTTE PORTELLA 34	Amministratore delegato	Gestori di Pubblici Servizi	Gestori di Pubblici Servizi	GEROPA	S	14699121001	[email protected]	Pec	null	null	null	null	null	null	null	null					
@@ -43,0 +45 @@
+7DFYYIWA	NERULUM SERVICE SRL 	Rotonda	ANTONIO	DI SANZO	85048	PZ	Basilicata		Via ROMA 56	Legale rappresentante	Gestori di Pubblici Servizi	Gestori di Pubblici Servizi		S	01598550760	[email protected]	Pec	null	null	null	null	null	null	null	null					
@@ -344 +346 @@
-aerom	Aequa Roma S.P.A.	Roma	Maurizio	De Filippo	00154	RM	Lazio	www.aequaroma.it	Via Ostiense, 131l	Presidente	Gestori di Pubblici Servizi	Gestori di Pubblici Servizi	AR	S	08670661001	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null		
+aerom	Aequa Roma S.P.A.	Roma	Maurizio	De Filippo	00154	RM	Lazio	www.aequaroma.it	Via Ostiense, 131l	Legale rappresentante	Gestori di Pubblici Servizi	Gestori di Pubblici Servizi	AR	S	08670661001	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null	https://www.linkedin.com/company/aequa-roma-spa	
@@ -643 +645 @@
-apspssm	Azienda Pubblica di Servizi alla Persona S.M.A.R.	Manfredonia	Angela	Egidio	71043	FG	Puglia	www.aspsmar.it	Corso Manfredi, 254	Commissario straordinario	Aziende Pubbliche di Servizi alla Persona	Pubbliche Amministrazioni		S	92043170718	[email protected]	Altro	null	null	null	null	null	null	null	null					
+apspssm	Azienda Pubblica di Servizi alla Persona S.M.A.R.	Manfredonia	Angela	Egidio	71043	FG	Puglia	www.aspsmar.it	Corso Manfredi, 254	Commissario straordinario	Aziende Pubbliche di Servizi alla Persona	Pubbliche Amministrazioni		S	92043170718	[email protected]	Pec	null	null	null	null	null	null	null	null					
@@ -653 +655 @@
-apt	AUTORITA' DI SISTEMA PORTUALE DEL MAR IONIO	Taranto	Fulvio Lino	Di Blasio	74123	TA	Puglia	www.port.taranto.it	Porto Mercantile	Segretario	Autorita' Portuali	Pubbliche Amministrazioni		S	90048270731	[email protected]	Pec	null	null	null	null	null	null	null	null	
+apt	AUTORITA' DI SISTEMA PORTUALE DEL MAR IONIO	Taranto	Roberto	Settembrini	74123	TA	Puglia	www.port.taranto.it	Porto Mercantile	Segretario	Autorita' Portuali	Pubbliche Amministrazioni		S	90048270731	[email protected]	Pec	null	null	null	null	null	null	null	null		
@@ -920 +922 @@
-asdbucc	Amministrazione Separata Dei Beni di Uso Civico Colsano	Castelbello-Ciardes	Josef	Koeck	39020	BZ	Trentino-Alto Adige/Südtirol		Piazza Centro, 1	Presidente	Altri Enti Locali	Pubbliche Amministrazioni		S	82008000216	[email protected]	Pec	null	null	null	null	null	null	null	null					
+asdbucc	Amministrazione Separata Dei Beni di Uso Civico Colsano	Castelbello-Ciardes	KLAUS	BRUGGER	39020	BZ	Trentino-Alto Adige/Südtirol		Piazza Centro, 1	Presidente	Altri Enti Locali	Pubbliche Amministrazioni		S	82008000216	[email protected]	Pec	null	null	null	null	null	null	null	null					
@@ -927 +929 @@
-asde	Agenzia Sarda Delle Entrate	Cagliari	Antonio	Cambus	09123	CA	Sardegna		Viale Trieste, 186	Commissario straordinario	Altri Enti Locali	Pubbliche Amministrazioni	ASE	S	92247480921	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+asde	Agenzia Sarda Delle Entrate	Cagliari	Stefania	Masala	09123	CA	Sardegna		Viale Trieste, 186	Direttore generale	Altri Enti Locali	Pubbliche Amministrazioni	ASE	S	92247480921	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
@@ -3157 +3159 @@
-c_c353	Comune di Catenanuova	Catenanuova	Carmelo Giancarlo	SCRAVAGLIERI	94010	EN	Sicilia	www.comunecatenanuova.gov.it	Piazza Aldo Moro n.15 gia Piazza Municipio	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	80001380866	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+c_c353	Comune di Catenanuova	Catenanuova	Carmelo Giancarlo	SCRAVAGLIERI	94010	EN	Sicilia	www.comune.catenanuova.en.it	Piazza Aldo Moro n.15 gia Piazza Municipio	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	80001380866	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
@@ -4561 +4563 @@
-c_e227	Comune di Guagnano	Guagnano	Claudio Maria	Sorrento	73010	LE	Puglia	www.comune.guagnano.le.it	Piazza Madonna Del Rosario ,13	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	80011200757	[email protected]	Pec	[email protected]	[email protected]	Altro	null	null	null	null	https://www.facebook.com/comuneguagnano				
+c_e227	Comune di Guagnano	Guagnano	Claudio Maria	Sorrento	73010	LE	Puglia	www.comune.guagnano.le.it	Piazza Madonna Del Rosario ,13	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	80011200757	[email protected]	Pec	[email protected]	[email protected]	Altro	[email protected]	Pec	[email protected]	Altro	https://www.facebook.com/comuneguagnano				
@@ -4576 +4578 @@
-c_e243	Comune di Guardiagrele	Guardiagrele	Simone	Dal Pozzo	66016	CH	Abruzzo	www.comune.guardiagrele.ch.it	Piazza S.Francesco, N. 12	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	00239980691	[email protected]	Pec	null	null	null	null	null	null	null	null		
+c_e243	Comune di Guardiagrele	Guardiagrele	Donatello	Di Prinzio	66016	CH	Abruzzo	www.comune.guardiagrele.ch.it	Piazza S.Francesco, N. 12	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	00239980691	[email protected]	Pec	null	null	null	null	null	null	null	null	
@@ -4683 +4685 @@
-c_e393	Comune di Labro	Labro	Migliorina	Montani	02010	RI	Lazio	www.labro.gov.it	Via Garibaldi, 11	Responsabile Del Servizio	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	00108300575	[email protected]	Altro	[email protected]	Altro	null	null	null	null	null	null	https://www.facebook.com/comune.labro				
+c_e393	Comune di Labro	Labro	Migliorina	Montani	02010	RI	Lazio	www.labro.gov.it	Via Garibaldi, 11	Responsabile Del Servizio	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	00108300575	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null	https://www.facebook.com/comune.labro				
@@ -5005 +5007 @@
-c_e834	Comune di Maida	Maida	Natale	Amantea	88025	CZ	Calabria	www.comune.maida.cz.it	Via O. De Fiore	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	00297450793	[email protected]	Pec	null	null	null	null	null	null	null	null					
+c_e834	Comune di Maida	Maida	Salvatore	Paone	88025	CZ	Calabria	www.comune.maida.cz.it	Via garibaldi	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	00297450793	[email protected]	Pec	[email protected]	Pec	null	null	null	null	null	null		
@@ -5521 +5523 @@
-c_f502	Comune di Montefiore Conca	Montefiore Conca	Valli	Cipriani	47834	RN	Emilia-Romagna	www.comune.montefiore-conca.rn.it	Via Roma 3	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	82005750409	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+c_f502	Comune di Montefiore Conca	Montefiore Conca	Filippo	Sica	47834	RN	Emilia-Romagna	www.comune.montefiore-conca.rn.it	Via Roma 3	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	82005750409	[email protected]	Pec	[email protected]	Altronull	null	null	null	null	null					
@@ -5700 +5702 @@
-c_f728	Comune di Mori	Mori	Stefano	Barozzi	38065	TN	Trentino-Alto Adige/Südtirol	www.comune.mori.tn.it	Via Scuole, 2	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	00124030222	[email protected]	Pec	null	null	null	null	null	null	null	null				
+c_f728	Comune di Mori	Mori	Stefano	Barozzi	38065	TN	Trentino-Alto Adige/Südtirol	www.comune.mori.tn.it	Via Scuole, 2	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	00124030222	[email protected]	Pec	[email protected]	Pec	null	null	null	null	null	null					
@@ -7172 +7174 @@
-c_h674	Comune di Saint-Pierre	Saint-Pierre	Osvaldo	Chabod	11010	AO	Valle d'Aosta/Vallée d'Aoste	www.comune.saint-pierre.ao.it	Loc. Tache 1	Segretario	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	00098460074	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+c_h674	Comune di Saint-Pierre	Saint-Pierre	MONICA	ROCCA	11010	AO	Valle d'Aosta/Vallée d'Aoste	www.comune.saint-pierre.ao.it	Loc. Tache 1	Segretario	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	00098460074	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
@@ -7782 +7784 @@
-c_i493	Comune di Scampitella	Scampitella	Antonio	Consalvo	83050	AV	Campania	www.comune.scampitella.av.it	Via Citta' di Contra 31 - CAP 83050 (Av)	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	81001630649	[email protected]	Pec	null	null	null	null	null	null	null	null	https://www.facebook.com/scampitella	https://www.twitter.com/scampitella	https://www.youtube.com/scampitella		
+c_i493	Comune di Scampitella	Scampitella	Vincenza	Cassese	83050	AV	Campania	www.comune.scampitella.av.it	Via Citta' di Contra 31 - CAP 83050 (Av)	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	81001630649	[email protected]	Pec	null	null	null	null	null	null	null	null	https://www.facebook.com/scampitella	https://www.twitter.com/scampitella	https://www.youtube.com/scampitella		
@@ -7992 +7994 @@
-c_i782	Comune di Soiano del Lago	Soiano del Lago	Giuseppe	Previ	25080	BS	Lombardia	www.comune.soiano-del-lago.bs.it	Via Ciucani, 5	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	00868440173	[email protected]	Pec	[email protected]	Altronull	null	null	null	null	null					
+c_i782	Comune di Soiano del Lago	Soiano del Lago	Alessandro	Spaggiari	25080	BS	Lombardia	www.comune.soianodellago.bs.it	Via Ciucani, 5	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	00868440173	[email protected]	Pec	[email protected]	[email protected]	Altro	null	null	null	null					
@@ -8944 +8946 @@
-c_m045	Comune di Villongo	Villongo	Maria	Ori Belometti	24060	BG	Lombardia	www.comune.villongo.bg.it/	Via Roma, 41	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	00719120164	[email protected]	Pec	[email protected]	Altro	[email protected]	Altro	null	null	null	null					
+c_m045	Comune di Villongo	Villongo	Maria	Ori Belometti	24060	BG	Lombardia	www.comune.villongo.bg.it/	Via Roma, 41	Sindaco	Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	00719120164	[email protected]	Pec	[email protected]	Altro	[email protected]	Altro	null	null	null	null					
@@ -9440 +9442 @@
-cbtda_72	Consorzio di Bonifica Terre D'Apulia	Bari	Alfredo	BORZILLO	70126	BA	Puglia	www.terreapulia.it	Corso Trieste, 11	Commissario straordinario	Gestori di Pubblici Servizi	Gestori di Pubblici Servizi	CBTA	S	93238890722	[email protected]	Pec	[email protected]	Altro	[email protected]	Altro	null	null	null	null	https://www.facebook.com/terreapulia.it				
+cbtda_72	Consorzio di Bonifica Terre D'Apulia	Bari	Alfredo	BORZILLO	70126	BA	Puglia	www.terreapulia.it	Corso Trieste, 11	Commissario straordinario	Gestori di Pubblici Servizi	Gestori di Pubblici Servizi	CBTA	S	93238890722	[email protected]	Pec	[email protected]	Altro	[email protected]	Altro	null	null	null	null	https://www.facebook.com/terreapulia.it				
@@ -9531 +9533 @@
-cciaa_so	Camera di Commercio, Industria, Artigianato e Agricoltura di Sondrio	Sondrio	Marco	Bonat	23100	SO	Lombardia	www.so.camcom.gov.it	Via Piazzi, 23	Segretario	Camere di Commercio, Industria, Artigianato e Agricoltura e loro Unioni Regionali	Pubbliche Amministrazioni	CCIAA DI SONDRIO	S	00132440140	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null	https://www.facebook.com/camcomSondrio/	https://twitter.com/CCIAASONDRIO		
+cciaa_so	Camera di Commercio, Industria, Artigianato e Agricoltura di Sondrio	Sondrio	Marco	Bonat	23100	SO	Lombardia	www.so.camcom.it	Via Piazzi, 23	Segretario	Camere di Commercio, Industria, Artigianato e Agricoltura e loro Unioni Regionali	Pubbliche Amministrazioni	CCIAA DI SONDRIO	S	00132440140	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null	https://www.facebook.com/camcomSondrio/	https://twitter.com/CCIAASONDRIO		
@@ -10468 +10470 @@
-cnfo	Consiglio Nazionale Forense	Roma	Andrea	Mascherin	00186	RM	Lazio	www.consiglionazionaleforense.it	Via Arenula, 71	Presidente	Federazioni Nazionali, Ordini, Collegi e Consigli Professionali	Pubbliche Amministrazioni	CNF	S	80409200583	[email protected]	Pec	null	null	null	null	null	null	null	null					
+cnfo	Consiglio Nazionale Forense	Roma	Maria	Masi	00186	RM	Lazio	www.consiglionazionaleforense.it	Via Arenula, 71	Presidente	Federazioni Nazionali, Ordini, Collegi e Consigli Professionali	Pubbliche Amministrazioni	CNF	S	80409200583	[email protected]	Pec	null	null	null	null	null	null	null	null					
@@ -10870 +10872 @@
-cpiapd	Centro Provinciale Istruzione Adulti di Padova	Padova	Francesco	Lazzarini	35128	PD	Veneto	www.cpiapadova.it	Via Dorighello, 16	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni	istscPDMM25500L	S	92271980283	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+cpiapd	Centro Provinciale Istruzione Adulti di Padova	Padova	STEFANO	FINORI	35128	PD	Veneto	www.cpiapadova.it	Via Dorighello, 16	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni	istscPDMM25500L	S	92271980283	[email protected]	Pec	[email protected]	Altronull	null	null	null	null	null					
@@ -11102 +11104 @@
-crcmp	Centro Residenziale di Cura Media Pusteria	Brunico	Werner	Mueller	39031	BZ	Trentino-Alto Adige/Südtirol	www.altenheime-bruneck-olang.it	Via Goethe, 15	Direttore generale	Aziende Pubbliche di Servizi alla Persona	Pubbliche Amministrazioni		S	92008680214	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+crcmp	Centro Residenziale di Cura Media Pusteria	Brunico	Werner	Mueller	39031	BZ	Trentino-Alto Adige/Südtirol	www.altenheime-bruneck-olang.it	Via Goethe, 15	Direttore generale	Aziende Pubbliche di Servizi alla Persona	Pubbliche Amministrazioni		S	92008680214	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
@@ -11451 +11453 @@
-dsn_bz	Deutschsprachiger Schulsprengel Nonsberg - Istituto Comprensivo in Lingua Tedesca Val di Non	Senale-San Felice	Christian	Salchner	39010	BZ	Trentino-Alto Adige/Südtirol	www.sspnonsberg.it	St. Felix, Holzweg 12 San Felice, Via Holz 12	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni		S	82006870214	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null			
+dsn_bz	Deutschsprachiger Schulsprengel Nonsberg - Istituto Comprensivo in Lingua Tedesca Val di Non	Senale-San Felice	Birgit	Eschgfaeller	39010	BZ	Trentino-Alto Adige/Südtirol	www.sspnonsberg.it	St. Felix, Holzweg 12 San Felice, Via Holz 12	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni	S82006870214	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
@@ -11620 +11622 @@
-escpa	Explora S.p.A.	Milano	Paolo Ildo Arialdo	Baccolo	20124	MI	Lombardia	www.explora.in-lombardia.it	Via Fabio Filzi, 22	Direttore generale	Societa' in Conto Economico Consolidato	Societa' in Conto Economico Consolidato	EXPLORA	S	08344310969	[email protected]	Pec	[email protected]	[email protected]	Pec	[email protected]	Altro	null	null					
+escpa	Explora S.p.A.	Milano	Lorenzo	Gubian	20124	MI	Lombardia	www.explora.in-lombardia.it	Via Fabio Filzi, 22	Direttore generale	Societa' in Conto Economico Consolidato	Societa' in Conto Economico Consolidato	EXPLORA	S	08344310969	[email protected]	Pec	[email protected]	Altro	[email protected]	Pec	[email protected]	Altro	null	null					
@@ -11704 +11705,0 @@
-fidasc	Federazione Italiana Discipline Armi Sportive da Caccia	Roma	Felice Aniello	Buglione	00196	RM	Lazio	www.fidasc.it	Viale Tiziano, 70	Presidente	Federazioni Nazionali, Ordini, Collegi e Consigli Professionali	Pubbliche Amministrazioni	FIDASC	S	97175110580	[email protected]	Pec	null	null	null	null	null	null	null	null					
@@ -13175 +13176 @@
-isr	II.SS. RIGHI	Taranto	Iole	De Marco	74121	TA	Puglia	https://righi.edu.it/	Via D'alo Alfieri, 51	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni		S	90229680732	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+isr	II.SS. RIGHI	Taranto	Iole	De Marco	74121	TA	Puglia	https://www.righitaranto.edu.it/	Via D'alo Alfieri, 51	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni	II SS "A. Righi" 	S	90229680732	[email protected]	Pec	[email protected]	Altronull	null	null	null	null	null					
@@ -13866 +13867 @@
-istsc_bgic88500r	ISTITUTO COMPRENSIVO - VALNEGRA - F. GERVASONI	Valnegra	CLAUDIO ANTONIO	GOTTI	24010	BG	Lombardia	www.icvalnegra.com	Via G.Marconi, 8-10	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni		S	94015560165	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+istsc_bgic88500r	ISTITUTO COMPRENSIVO - VALNEGRA - F. GERVASONI	Valnegra	FRANCESCO	CAGNES	24010	BG	Lombardia	www.icvalnegra.edu.it	Via G.Marconi, 8-10	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni	ICVLN	S	94015560165	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
@@ -14144 +14145 @@
-istsc_bris00300d	ISTRUZIONE SECONDARIA SUPERIORE - IS -L. DA VINCI - FASANO -	Fasano	MARIA STELLA	CARPARELLI	72015	BR	Puglia	www.leonardodavincifasano.gov.it	Via Attoma,9	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni		S	81001970748	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+istsc_bris00300d	ISTRUZIONE SECONDARIA SUPERIORE - IS -L. DA VINCI - FASANO -	Fasano	MARIA STELLA	CARPARELLI	72015	BR	Puglia	www.leonardodavincifasano.edu.it	Via Attoma,9	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni	IISS L.eonardo da Vinci	S	81001970748	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null			https://www.youtube.com/channel/UCtwZFIGeHdxbK5JeEtwSUeg/videos		
@@ -15591 +15592 @@
-istsc_imic81000q	ISTITUTO COMPRENSIVO - LITTARDI	Imperia	GIOVANNI PIETRO	POGGIO	18100	IM	Liguria	www.iclittardi.it	Viale Della Rimembranza, 16	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni		S	91037880084	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+istsc_imic81000q	ISTITUTO COMPRENSIVO - LITTARDI	Imperia	ANGELO	QUAGLIA	18100	IM	Liguria	www.iclittardi.it	Viale Della Rimembranza, 16	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni		S	91037880084	[email protected]	Pec	[email protected]	Altronull	null	null	null	null	null					
@@ -15775 +15776 @@
-istsc_leis016008	ISTRUZIONE SECONDARIA SUPERIORE - IST.ISTR.SUP.POLO PROFESSIONALE-TRICASE	Tricase	ANNA LENA	MANCA	73039	LE	Puglia	https://www.iisstricase.edu.it/	Via Apulia	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni		S	90018580754	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+istsc_leis016008	ISTRUZIONE SECONDARIA SUPERIORE - IST.ISTR.SUP.POLO PROFESSIONALE-TRICASE	Tricase	ANNA LENA	MANCA	73039	LE	Puglia	https://www.iisstricase.edu.it/	Via Apulia	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni	IISSDONTONINOBELLOTRICASE	S	90018580754	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
@@ -16413 +16414 @@
-istsc_miis09200p	ISTITUTO SUPERIORE - E.ALESSANDRINI	Vittuone	GIOVANNA	RUGGERI	20010	MI	Lombardia		Via ZARA 23/C	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni		S	93035690150	[email protected]	Pec	[email protected]	Altronull	null	null	null	null	null					
+istsc_miis09200p	ISTITUTO SUPERIORE - E.ALESSANDRINI	Vittuone	GIOVANNA	RUGGERI	20010	MI	Lombardia	https://www.alessandrinimainardi.edu.it/homepage	Via ZARA 23/C	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni		S	93035690150	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
@@ -17130 +17131 @@
-istsc_oric823009	ISTITUTO COMPRENSIVO - I.C. SIMAXIS - VILLAURBANA	Simaxis	Giuseppe	Scarpa	09088	OR	Sardegna	www.icsimaxis-villaurbana.gov.it	Via Roma n. 2	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni		S	80005050952	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+istsc_oric823009	ISTITUTO COMPRENSIVO - I.C. SIMAXIS - VILLAURBANA	Simaxis	Giuseppe	Scarpa	09088	OR	Sardegna	www.icsimaxis-villaurbana.edu.it	Via Roma n. 2	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni		S	80005050952	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
@@ -17518 +17519 @@
-istsc_pgic82100x	ISTITUTO COMPRENSIVO - 'P.VANNUCCI' CITTA' DELLA PIEVE	Città della Pieve	CATERINA	MARCUCCI	06062	PG	Umbria	icvannucci.gov.it	Piazza Marconi	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni		S	94091440548	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+istsc_pgic82100x	ISTITUTO COMPRENSIVO - 'P.VANNUCCI' CITTA' DELLA PIEVE	Città della Pieve	CATERINA	MARCUCCI	06062	PG	Umbria	icvannucci.gov.it	Piazza Marconi	Dirigente scolastico	Istituti di Istruzione Statale di Ogni Ordine e Grado	Pubbliche Amministrazioni	Istituto Comprensivo P. Vannucci	S	94091440548	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
@@ -20700 +20701 @@
-odafrc	Ordine Dei Dott. Agronomi e Dei Dott. Forestali della Provincia di Reggio Calabria	Reggio di Calabria	Francesca	Giuffre'	89125	RC	Calabria	http://ordinereggiocalabria.conaf.it/	Via Del Torrione, 103 C	Presidente	Federazioni Nazionali, Ordini, Collegi e Consigli Professionali	Pubbliche Amministrazioni	ODAF RC	S	80013750809	[email protected]	Pec	null	null	null	null	null	null	null	null					
+odafrc	Ordine Dei Dott. Agronomi e Dei Dott. Forestali della Provincia di Reggio Calabria	Reggio di Calabria	ANTONINO	SGRO'	89125	RC	Calabria	http://ordinereggiocalabria.conaf.it/	Via Del Torrione, 103 C	Presidente	Federazioni Nazionali, Ordini, Collegi e Consigli Professionali	Pubbliche Amministrazioni	ODAF RC	S	80013750809	[email protected]	Pec	null	null	null	null	null	null	null	null					
@@ -20741 +20742 @@
-odap_te	Ordine degli Architetti Pianificatori Paesaggisti e Conservatori della Provincia di Teramo	Teramo	Giustino	Vallese	64100	TE	Abruzzo	www.ordinearchitettiteramo.it	Corso De Michetti, 35	Presidente	Federazioni Nazionali, Ordini, Collegi e Consigli Professionali	Pubbliche Amministrazioni		S	92000630670	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+odap_te	Ordine degli Architetti Pianificatori Paesaggisti e Conservatori della Provincia di Teramo	Teramo	OMBRETTA	NATALI	64100	TE	Abruzzo	www.ordinearchitettiteramo.it	Corso De Michetti, 35	Presidente	Federazioni Nazionali, Ordini, Collegi e Consigli Professionali	Pubbliche Amministrazioni		S	92000630670	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
@@ -21091 +21092 @@
-odm_094	Ordine Dei Medici chirurghi e degli Odontoiatri della provincia di Isernia	Isernia	Sergio	Tartaglione	86170	IS	Molise		Via Pio La Torre, 28/30	Presidente	Federazioni Nazionali, Ordini, Collegi e Consigli Professionali	Pubbliche Amministrazioni		S	90008140940	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+odm_094	Ordine Dei Medici chirurghi e degli Odontoiatri della provincia di Isernia	Isernia	FERNANDO	CRUDELE	86170	IS	Molise		Via Pio La Torre, 28/30	Presidente	Federazioni Nazionali, Ordini, Collegi e Consigli Professionali	Pubbliche Amministrazioni		S	90008140940	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
@@ -21204 +21205 @@
-ofmassa	Ordine dei Farmacisti della Provincia di Massa Carrara	Carrara	Gino	Giarelli	54033	MS	Toscana	www.fofi.it/ordinems/	Via Don Minzoni, 23	Presidente	Federazioni Nazionali, Ordini, Collegi e Consigli Professionali	Pubbliche Amministrazioni		S	82001080454	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					
+ofmassa	Ordine dei Farmacisti della Provincia di Massa Carrara	Carrara	Gino	Giarelli	54033	MS	Toscana	www.ordinefarmacistimassacarrara.it	Via Don Minzoni, 23	Presidente	Federazioni Nazionali, Ordini, Collegi e Consigli Professionali	Pubbliche Amministrazioni		S	82001080454	[email protected]	Pec	[email protected]	Altro	[email protected]	Altro	null	null	null	null					
@@ -21841 +21842 @@
-r_vda	Regione Autonoma Valle D'Aosta	Aosta	Angela	BATTISTI	11100	AO	Valle d'Aosta/Vallée d'Aoste	www.regione.vda.it	Piazza A. Deffeyes, 1	Coordinatore Dip. personale e organizzazione	Regioni, Province Autonome e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	80002270074	[email protected]	Pec	null	null	null	null	null	null	null	null					
+r_vda	Regione Autonoma Valle D'Aosta	Aosta	Stefania	FANIZZI	11100	AO	Valle d'Aosta/Vallée d'Aoste	www.regione.vda.it	Piazza A. Deffeyes, 1	Direttore generale	Regioni, Province Autonome e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	80002270074	[email protected]	Pec	null	null	null	null	null	null	null	null					
@@ -21867,0 +21869 @@
+RK1K4EUE	IDCERT srl	Andria	Simone Aldo	Buonporto	76123	BT	Puglia	Https://it.idcert.io	Via gaetano pugnani 1	Amministratore delegato	Gestori di Pubblici Servizi	Gestori di Pubblici Servizi	IDCERT	S	08020870724	[email protected]	Pec	[email protected]	Altro	[email protected]	Altro	null	null	null	null	https://www.facebook.com/idcertofficial/		https://www.youtube.com/channel/UCh5neNGJp_03tW8IAhHdzXg	https://www.linkedin.com/company/idcert-official/	
@@ -22414 +22416 @@
-udcdtp	Unione Dei Comuni Dei Tre Parchi	Vimercate	Pietro	San Martino	20871	MB	Lombardia	www.treparchi.gov.it	Piazza Unita' D'italia, 1	Segretario	Unioni di Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni	ENTE IN LIQUIDAZIONE	S	08721070962	[email protected]	Altro	null	null	null	null	null	null	null	null					
+udcdtp	Unione Dei Comuni Dei Tre Parchi	Vimercate	Pietro	San Martino	20871	MB	Lombardia	www.treparchi.gov.it	Piazza Unita' D'italia, 1	Segretario	Unioni di Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni	ENTE IN LIQUIDAZIONE	S	08721070962	[email protected]	Pec	null	null	null	null	null	null	null	null					
@@ -22629 +22631 @@
-umds	Unione Montana Dei Sibillini	Comunanza	Onorato	Corbelli	63087	AP	Marche	www.unionemontanasibillini.it	Piazza Iv Novembre N. 2	Presidente	Unioni di Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	02228180440	[email protected]	Pec	[email protected]	Altronull	null	null	null	null	null					
+umds	Unione Montana Dei Sibillini	Santa Vittoria in Matenano	Fabrizio	Vergari	63854	FM	Marche	www.unionemontanasibillini.it	Corso G. Matteotti, 46/48	Presidente	Unioni di Comuni e loro Consorzi e Associazioni	Pubbliche Amministrazioni		S	02228180440	[email protected]	Pec	[email protected]	Altro	null	null	null	null	null	null					

Panic not managed when sub key is null

This issue seems related to #10 but this behave differently.

Using a publiccode as in the following examples ad unmanaged exception is thrown, this happens when a subkey is null

json example

"intendedAudience": {
    "countries": null,
    "unsupportedCountries": ["gb"]
  }

yaml example

intendedAudience:
  countries: 
  unsupportedCountries:
  - gb

Panic

2019/07/29 15:00:10 http: panic serving [::1]:55075: key "IntendedAudience/Countries" is empty. Remove it or fill with valid values
goroutine 9 [running]:
net/http.(*conn).serve.func1(0xc0000aa780)
	/usr/local/Cellar/go/1.12.6/libexec/src/net/http/server.go:1769 +0x139
panic(0x1360b40, 0xc000b55d50)
	/usr/local/Cellar/go/1.12.6/libexec/src/runtime/panic.go:522 +0x1b5
github.com/italia/publiccode-parser-go.(*Parser).decoderec(0xc00009e700, 0xc0005e57b0, 0x10, 0xc000b567e0, 0x1, 0xc000b55d30, 0x0)
	/Users/sebbalex/go/src/github.com/italia/publiccode-parser-go/parser.go:165 +0x13dc
github.com/italia/publiccode-parser-go.(*Parser).decoderec(0xc00009e700, 0x0, 0x0, 0xc000b56720, 0x0, 0x135dea0, 0xc000b56630)
	/Users/sebbalex/go/src/github.com/italia/publiccode-parser-go/parser.go:160 +0xec3
github.com/italia/publiccode-parser-go.(*Parser).Parse(0xc00009e700, 0xc0009f2a80, 0x8c2, 0xa80, 0x0, 0xc0000863d0)
	/Users/sebbalex/go/src/github.com/italia/publiccode-parser-go/parser.go:52 +0x229
main.parse(0xc0009f2a80, 0x8c2, 0xa80, 0xc0009f2a80, 0x8c2)
	/Users/sebbalex/workspace/go-test/src/main.go:55 +0x54
main.pcPayLoad(0x144e600, 0xc0004da000, 0xc0004f2400)
	/Users/sebbalex/workspace/go-test/src/main.go:107 +0x543
net/http.HandlerFunc.ServeHTTP(0x13e7e90, 0x144e600, 0xc0004da000, 0xc0004f2400)
	/usr/local/Cellar/go/1.12.6/libexec/src/net/http/server.go:1995 +0x44
github.com/gorilla/mux.(*Router).ServeHTTP(0xc0004d8000, 0x144e600, 0xc0004da000, 0xc0004f2200)
	/Users/sebbalex/go/src/github.com/gorilla/mux/mux.go:210 +0xe3
net/http.serverHandler.ServeHTTP(0xc0000b8a90, 0x144e600, 0xc0004da000, 0xc0004f2200)
	/usr/local/Cellar/go/1.12.6/libexec/src/net/http/server.go:2774 +0xa8
net/http.(*conn).serve(0xc0000aa780, 0x144f240, 0xc00009c340)
	/usr/local/Cellar/go/1.12.6/libexec/src/net/http/server.go:1878 +0x851
created by net/http.(*Server).Serve
	/usr/local/Cellar/go/1.12.6/libexec/src/net/http/server.go:2884 +0x2f4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.