bolognese 1.6.3 → 1.6.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +19 -14
  3. data/bolognese.gemspec +4 -4
  4. data/lib/bolognese/datacite_utils.rb +7 -1
  5. data/lib/bolognese/metadata.rb +2 -1
  6. data/lib/bolognese/metadata_utils.rb +8 -1
  7. data/lib/bolognese/readers/bibtex_reader.rb +2 -1
  8. data/lib/bolognese/readers/citeproc_reader.rb +1 -1
  9. data/lib/bolognese/readers/codemeta_reader.rb +2 -2
  10. data/lib/bolognese/readers/crossref_reader.rb +1 -1
  11. data/lib/bolognese/readers/datacite_reader.rb +2 -2
  12. data/lib/bolognese/readers/schema_org_reader.rb +3 -4
  13. data/lib/bolognese/utils.rb +89 -9
  14. data/lib/bolognese/version.rb +1 -1
  15. data/lib/bolognese/writers/bibtex_writer.rb +2 -1
  16. data/lib/bolognese/writers/codemeta_writer.rb +2 -1
  17. data/resources/spdx/licenses.json +5297 -0
  18. data/spec/datacite_utils_spec.rb +5 -1
  19. data/spec/fixtures/datacite-example-affiliation.xml +1 -1
  20. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_cc_url/not_found.yml +44 -0
  21. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_cc_url/with_trailing_slash.yml +44 -0
  22. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_cc_url/with_trailing_slash_and_to_https.yml +44 -0
  23. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_url/to_https.yml +44 -0
  24. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/normalize_url/with_trailing_slash_and_to_https.yml +44 -0
  25. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/spdx/hsh_to_spdx_id.yml +44 -0
  26. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/spdx/hsh_to_spdx_not_found.yml +44 -0
  27. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/spdx/hsh_to_spdx_url.yml +44 -0
  28. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/spdx/name_to_spdx_exists.yml +44 -0
  29. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/spdx/name_to_spdx_id.yml +44 -0
  30. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/spdx/name_to_spdx_not_found.yml +44 -0
  31. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/url_to_https/http.yml +44 -0
  32. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/url_to_https/uri.yml +44 -0
  33. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/url_to_https/with_trailing_slash.yml +44 -0
  34. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_citation/software_w/version.yml +52 -0
  35. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Funding.yml +58 -10
  36. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Funding_OpenAIRE.yml +65 -28
  37. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Schema_org_JSON_Cyark.yml +98 -0
  38. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/Schema_org_JSON_IsSupplementTo.yml +58 -10
  39. data/spec/readers/bibtex_reader_spec.rb +5 -1
  40. data/spec/readers/codemeta_reader_spec.rb +20 -0
  41. data/spec/readers/crossref_reader_spec.rb +21 -5
  42. data/spec/readers/datacite_reader_spec.rb +50 -10
  43. data/spec/utils_spec.rb +58 -0
  44. data/spec/writers/bibtex_writer_spec.rb +6 -0
  45. data/spec/writers/citation_writer_spec.rb +8 -0
  46. data/spec/writers/citeproc_writer_spec.rb +12 -2
  47. data/spec/writers/crosscite_writer_spec.rb +5 -1
  48. data/spec/writers/datacite_json_writer_spec.rb +5 -1
  49. data/spec/writers/datacite_writer_spec.rb +22 -6
  50. data/spec/writers/schema_org_writer_spec.rb +29 -3
  51. metadata +31 -8
@@ -0,0 +1,98 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://doi.org/ra/10.26301
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Mozilla/5.0 (compatible; Maremma/4.7; mailto:info@datacite.org)
12
+ Accept:
13
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: ''
18
+ headers:
19
+ Date:
20
+ - Fri, 19 Jun 2020 11:53:16 GMT
21
+ Content-Type:
22
+ - application/json;charset=UTF-8
23
+ Connection:
24
+ - keep-alive
25
+ Set-Cookie:
26
+ - __cfduid=d026feabfb6d44e3a8e04eea7f4c19e621592567596; expires=Sun, 19-Jul-20
27
+ 11:53:16 GMT; path=/; domain=.doi.org; HttpOnly; SameSite=Lax; Secure
28
+ Cf-Cache-Status:
29
+ - DYNAMIC
30
+ Cf-Request-Id:
31
+ - 036e061ebd0000d721c099d200000001
32
+ Expect-Ct:
33
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
34
+ Strict-Transport-Security:
35
+ - max-age=31536000; includeSubDomains; preload
36
+ Server:
37
+ - cloudflare
38
+ Cf-Ray:
39
+ - 5a5d0c779d69d721-FRA
40
+ body:
41
+ encoding: ASCII-8BIT
42
+ string: |-
43
+ [
44
+ {
45
+ "DOI": "10.26301",
46
+ "RA": "DataCite"
47
+ }
48
+ ]
49
+ http_version:
50
+ recorded_at: Fri, 19 Jun 2020 11:53:16 GMT
51
+ - request:
52
+ method: get
53
+ uri: https://api.datacite.org/dois/10.26301/jgf3-jm06
54
+ body:
55
+ encoding: US-ASCII
56
+ string: ''
57
+ headers:
58
+ User-Agent:
59
+ - Mozilla/5.0 (compatible; Maremma/4.7; mailto:info@datacite.org)
60
+ Accept:
61
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
62
+ response:
63
+ status:
64
+ code: 200
65
+ message: OK
66
+ headers:
67
+ Date:
68
+ - Fri, 19 Jun 2020 11:53:17 GMT
69
+ Content-Type:
70
+ - application/json; charset=utf-8
71
+ Connection:
72
+ - keep-alive
73
+ Status:
74
+ - 200 OK
75
+ X-Anonymous-Consumer:
76
+ - 'true'
77
+ Cache-Control:
78
+ - max-age=0, private, must-revalidate
79
+ Vary:
80
+ - Accept-Encoding, Origin
81
+ Etag:
82
+ - W/"486760ea0302b1535d436c1c05598ae3"
83
+ X-Runtime:
84
+ - '0.619532'
85
+ X-Request-Id:
86
+ - a6c829c4-ed51-49bc-937a-fefe4f60a573
87
+ X-Powered-By:
88
+ - Phusion Passenger 6.0.5
89
+ Server:
90
+ - nginx/1.14.0 + Phusion Passenger 6.0.5
91
+ body:
92
+ encoding: ASCII-8BIT
93
+ string: '{"data":{"id":"10.26301/jgf3-jm06","type":"dois","attributes":{"doi":"10.26301/jgf3-jm06","prefix":"10.26301","suffix":"jgf3-jm06","identifiers":[],"alternateIdentifiers":[],"creators":[{"name":"CyArk","nameType":"Organizational","givenName":null,"familyName":null,"affiliation":[],"nameIdentifiers":[]}],"titles":[{"lang":null,"title":"Chan
94
+ Chan - Rivero","titleType":null}],"publisher":"Open Heritage 3D","container":{},"publicationYear":2020,"subjects":[],"contributors":[],"dates":[],"language":null,"types":{"resourceType":"3D
95
+ Data","resourceTypeGeneral":"Dataset"},"relatedIdentifiers":[],"sizes":[],"formats":[],"version":null,"rightsList":[],"descriptions":[],"geoLocations":[],"fundingReferences":[],"xml":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJlc291cmNlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCBodHRwOi8vc2NoZW1hLmRhdGFjaXRlLm9yZy9tZXRhL2tlcm5lbC00L21ldGFkYXRhLnhzZCI+CiAgPGlkZW50aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuMjYzMDEvSkdGMy1KTTA2PC9pZGVudGlmaWVyPgogIDxjcmVhdG9ycz4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWUgbmFtZVR5cGU9Ik9yZ2FuaXphdGlvbmFsIj5DeUFyazwvY3JlYXRvck5hbWU+CiAgICA8L2NyZWF0b3I+CiAgPC9jcmVhdG9ycz4KICA8dGl0bGVzPgogICAgPHRpdGxlPkNoYW4gQ2hhbiAtIFJpdmVybzwvdGl0bGU+CiAgPC90aXRsZXM+CiAgPHB1Ymxpc2hlcj5PcGVuIEhlcml0YWdlIDNEPC9wdWJsaXNoZXI+CiAgPHB1YmxpY2F0aW9uWWVhcj4yMDIwPC9wdWJsaWNhdGlvblllYXI+CiAgPHJlc291cmNlVHlwZSByZXNvdXJjZVR5cGVHZW5lcmFsPSJEYXRhc2V0Ij4zRCBEYXRhPC9yZXNvdXJjZVR5cGU+CiAgPHZlcnNpb24vPgo8L3Jlc291cmNlPgo=","url":"https://openheritage3d.org/project.php?id=jgf3-jm06","contentUrl":null,"metadataVersion":0,"schemaVersion":"http://datacite.org/schema/kernel-4","source":"fabricaForm","isActive":true,"state":"findable","reason":null,"viewCount":0,"viewsOverTime":[],"downloadCount":0,"downloadsOverTime":[],"referenceCount":0,"citationCount":0,"citationsOverTime":[],"partCount":0,"partOfCount":0,"versionCount":0,"versionOfCount":0,"created":"2020-02-11T18:32:33.000Z","registered":"2020-02-11T18:32:33.000Z","published":"2020","updated":"2020-06-13T00:07:19.000Z"},"relationships":{"client":{"data":{"id":"cyark.oh","type":"clients"}},"media":{"data":{"id":"10.26301/jgf3-jm06","type":"media"}},"references":{"data":[]},"citations":{"data":[]},"parts":{"data":[]},"partOf":{"data":[]},"versions":{"data":[]},"versionOf":{"data":[]}}}}'
96
+ http_version:
97
+ recorded_at: Fri, 19 Jun 2020 11:53:17 GMT
98
+ recorded_with: VCR 3.0.3
@@ -1,5 +1,53 @@
1
1
  ---
2
2
  http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://doi.org/ra/10.5517
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Mozilla/5.0 (compatible; Maremma/4.7; mailto:info@datacite.org)
12
+ Accept:
13
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: ''
18
+ headers:
19
+ Date:
20
+ - Fri, 19 Jun 2020 11:54:09 GMT
21
+ Content-Type:
22
+ - application/json;charset=UTF-8
23
+ Connection:
24
+ - keep-alive
25
+ Set-Cookie:
26
+ - __cfduid=d2721b2e66a989b796e9ce5c2a6a0579f1592567648; expires=Sun, 19-Jul-20
27
+ 11:54:08 GMT; path=/; domain=.doi.org; HttpOnly; SameSite=Lax; Secure
28
+ Cf-Cache-Status:
29
+ - DYNAMIC
30
+ Cf-Request-Id:
31
+ - 036e06eacf0000c27c4a188200000001
32
+ Expect-Ct:
33
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
34
+ Strict-Transport-Security:
35
+ - max-age=31536000; includeSubDomains; preload
36
+ Server:
37
+ - cloudflare
38
+ Cf-Ray:
39
+ - 5a5d0dbe1d96c27c-FRA
40
+ body:
41
+ encoding: ASCII-8BIT
42
+ string: |-
43
+ [
44
+ {
45
+ "DOI": "10.5517",
46
+ "RA": "DataCite"
47
+ }
48
+ ]
49
+ http_version:
50
+ recorded_at: Fri, 19 Jun 2020 11:54:09 GMT
3
51
  - request:
4
52
  method: get
5
53
  uri: https://api.datacite.org/dois/10.5517/cc8h01s
@@ -8,7 +56,7 @@ http_interactions:
8
56
  string: ''
9
57
  headers:
10
58
  User-Agent:
11
- - Mozilla/5.0 (compatible; Maremma/4.2.1; mailto:info@datacite.org)
59
+ - Mozilla/5.0 (compatible; Maremma/4.7; mailto:info@datacite.org)
12
60
  Accept:
13
61
  - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
14
62
  response:
@@ -17,7 +65,7 @@ http_interactions:
17
65
  message: OK
18
66
  headers:
19
67
  Date:
20
- - Wed, 03 Jul 2019 19:25:15 GMT
68
+ - Fri, 19 Jun 2020 11:54:09 GMT
21
69
  Content-Type:
22
70
  - application/json; charset=utf-8
23
71
  Connection:
@@ -30,20 +78,20 @@ http_interactions:
30
78
  - max-age=0, private, must-revalidate
31
79
  Vary:
32
80
  - Accept-Encoding, Origin
33
- X-Request-Id:
34
- - f7df7b8f-cc7e-483d-8461-80c50bb81c52
35
81
  Etag:
36
- - W/"058961737ac10259968291b254c8021f"
82
+ - W/"159e106ae0801c71dc525cf8770210e1"
37
83
  X-Runtime:
38
- - '0.024242'
84
+ - '0.275978'
85
+ X-Request-Id:
86
+ - 451ebe51-cf1f-423e-b533-a8311d0f0764
39
87
  X-Powered-By:
40
- - Phusion Passenger 6.0.2
88
+ - Phusion Passenger 6.0.5
41
89
  Server:
42
- - nginx/1.15.8 + Phusion Passenger 6.0.2
90
+ - nginx/1.14.0 + Phusion Passenger 6.0.5
43
91
  body:
44
92
  encoding: ASCII-8BIT
45
93
  string: !binary |-
46
- eyJkYXRhIjp7ImlkIjoiMTAuNTUxNy9jYzhoMDFzIiwidHlwZSI6ImRvaXMiLCJhdHRyaWJ1dGVzIjp7ImRvaSI6IjEwLjU1MTcvY2M4aDAxcyIsInByZWZpeCI6IjEwLjU1MTciLCJzdWZmaXgiOiJjYzhoMDFzIiwiaWRlbnRpZmllcnMiOlt7ImlkZW50aWZpZXIiOiJodHRwczovL2RvaS5vcmcvMTAuNTUxNy9jYzhoMDFzIiwiaWRlbnRpZmllclR5cGUiOiJET0kifSx7ImlkZW50aWZpZXIiOiIyNTI3NDQiLCJpZGVudGlmaWVyVHlwZSI6IkNDREMifV0sImNyZWF0b3JzIjpbeyJuYW1lIjoiR2FvLCBTaGFuIiwibmFtZVR5cGUiOiJQZXJzb25hbCIsImdpdmVuTmFtZSI6IlNoYW4iLCJmYW1pbHlOYW1lIjoiR2FvIn0seyJuYW1lIjoiTHUsIFpoZW4tWmhvbmciLCJuYW1lVHlwZSI6IlBlcnNvbmFsIiwiZ2l2ZW5OYW1lIjoiWmhlbi1aaG9uZyIsImZhbWlseU5hbWUiOiJMdSJ9LHsibmFtZSI6Ikh1bywgTGktSHVhIiwibmFtZVR5cGUiOiJQZXJzb25hbCIsImdpdmVuTmFtZSI6IkxpLUh1YSIsImZhbWlseU5hbWUiOiJIdW8ifSx7Im5hbWUiOiJaaGFuZywgWGlhbi1GYSIsIm5hbWVUeXBlIjoiUGVyc29uYWwiLCJnaXZlbk5hbWUiOiJYaWFuLUZhIiwiZmFtaWx5TmFtZSI6IlpoYW5nIn0seyJuYW1lIjoiWmhhbywgSHVpIiwibmFtZVR5cGUiOiJQZXJzb25hbCIsImdpdmVuTmFtZSI6Ikh1aSIsImZhbWlseU5hbWUiOiJaaGFvIn1dLCJ0aXRsZXMiOlt7InRpdGxlIjoiQ0NEQyAyNTI3NDQ6IEV4cGVyaW1lbnRhbCBDcnlzdGFsIFN0cnVjdHVyZSBEZXRlcm1pbmF0aW9uIn1dLCJwdWJsaXNoZXIiOiJDYW1icmlkZ2UgQ3J5c3RhbGxvZ3JhcGhpYyBEYXRhIENlbnRyZSIsImNvbnRhaW5lciI6e30sInB1YmxpY2F0aW9uWWVhciI6MjAwNCwic3ViamVjdHMiOlt7InN1YmplY3QiOiJDcnlzdGFsIFN0cnVjdHVyZSJ9LHsic3ViamVjdCI6IkV4cGVyaW1lbnRhbCAzRCBDb29yZGluYXRlcyJ9LHsic3ViamVjdCI6IkNyeXN0YWwgU3lzdGVtIn0seyJzdWJqZWN0IjoiU3BhY2UgR3JvdXAifSx7InN1YmplY3QiOiJDZWxsIFBhcmFtZXRlcnMifSx7InN1YmplY3QiOiJDcnlzdGFsbG9ncmFwaHkifSx7InN1YmplY3QiOiIoRGlhY2V0YXRvLU8sTycpLWJpcygzLWh5ZHJveHlweXJpZGluZSktY29wcGVyKGlpKSJ9XSwiY29udHJpYnV0b3JzIjpbXSwiZGF0ZXMiOlt7ImRhdGUiOiIyMDA0IiwiZGF0ZVR5cGUiOiJJc3N1ZWQifV0sImxhbmd1YWdlIjoiZW5nIiwidHlwZXMiOnsicmlzIjoiREFUQSIsImJpYnRleCI6Im1pc2MiLCJjaXRlcHJvYyI6ImRhdGFzZXQiLCJzY2hlbWFPcmciOiJEYXRhc2V0IiwicmVzb3VyY2VUeXBlR2VuZXJhbCI6IkRhdGFzZXQifSwicmVsYXRlZElkZW50aWZpZXJzIjpbeyJyZWxhdGlvblR5cGUiOiJJc1N1cHBsZW1lbnRUbyIsInJlbGF0ZWRJZGVudGlmaWVyIjoiMTAuMTEwNy9zMTYwMDUzNjgwNDAyMTE1NCIsInJlbGF0ZWRJZGVudGlmaWVyVHlwZSI6IkRPSSJ9XSwic2l6ZXMiOltdLCJmb3JtYXRzIjpbIkNJRiJdLCJ2ZXJzaW9uIjpudWxsLCJyaWdodHNMaXN0IjpbXSwiZGVzY3JpcHRpb25zIjpbeyJkZXNjcmlwdGlvbiI6IlJlbGF0ZWQgQXJ0aWNsZTogU2hhbiBHYW8sIFpoZW4tWmhvbmcgTHUsIExpLUh1YSBIdW8sIFhpYW4tRmEgWmhhbmcsIEh1aSBaaGFvfDIwMDR8QWN0YSBDcnlzdGFsbG9nci4sU2VjdC5FOlN0cnVjdC5SZXAuT25saW5lfDYwfG0xMzUzfGRvaToxMC4xMTA3L1MxNjAwNTM2ODA0MDIxMTU0IiwiZGVzY3JpcHRpb25UeXBlIjoiT3RoZXIifSx7ImRlc2NyaXB0aW9uIjoiQW4gZW50cnkgZnJvbSB0aGUgQ2FtYnJpZGdlIFN0cnVjdHVyYWwgRGF0YWJhc2UsIHRoZSB3b3JsZOKAmXMgcmVwb3NpdG9yeSBmb3Igc21hbGwgbW9sZWN1bGUgY3J5c3RhbCBzdHJ1Y3R1cmVzLiBUaGUgZW50cnkgY29udGFpbnMgZXhwZXJpbWVudGFsIGRhdGEgZnJvbSBhIGNyeXN0YWwgZGlmZnJhY3Rpb24gc3R1ZHkuIFRoZSBkZXBvc2l0ZWQgZGF0YXNldCBmb3IgdGhpcyBlbnRyeSBpcyBmcmVlbHkgYXZhaWxhYmxlIGZyb20gdGhlIENDREMgYW5kIHR5cGljYWxseSBpbmNsdWRlcyAzRCBjb29yZGluYXRlcywgY2VsbCBwYXJhbWV0ZXJzLCBzcGFjZSBncm91cCwgZXhwZXJpbWVudGFsIGNvbmRpdGlvbnMgYW5kIHF1YWxpdHkgbWVhc3VyZXMuIiwiZGVzY3JpcHRpb25UeXBlIjoiQWJzdHJhY3QifV0sImdlb0xvY2F0aW9ucyI6W10sImZ1bmRpbmdSZWZlcmVuY2VzIjpbXSwieG1sIjoiUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaWRYUm1MVGdpUHo0TkNqeHlaWE52ZFhKalpTQjRiV3h1Y3pwNGMyUTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURFdldFMU1VMk5vWlcxaElpQjRiV3h1Y3pwNGMyazlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURFdldFMU1VMk5vWlcxaExXbHVjM1JoYm1ObElpQjRjMms2YzJOb1pXMWhURzlqWVhScGIyNDlJbWgwZEhBNkx5OWtZWFJoWTJsMFpTNXZjbWN2YzJOb1pXMWhMMnRsY201bGJDMHpJR2gwZEhBNkx5OXpZMmhsYldFdVpHRjBZV05wZEdVdWIzSm5MMjFsZEdFdmEyVnlibVZzTFRNdmJXVjBZV1JoZEdFdWVITmtJaUI0Yld4dWN6MGlhSFIwY0RvdkwyUmhkR0ZqYVhSbExtOXlaeTl6WTJobGJXRXZhMlZ5Ym1Wc0xUTWlQZzBLSUNBOGFXUmxiblJwWm1sbGNpQnBaR1Z1ZEdsbWFXVnlWSGx3WlQwaVJFOUpJajR4TUM0MU5URTNMMk5qT0dnd01YTThMMmxrWlc1MGFXWnBaWEkrRFFvZ0lEeGpjbVZoZEc5eWN6NE5DaUFnSUNBOFkzSmxZWFJ2Y2o0TkNpQWdJQ0FnSUR4amNtVmhkRzl5VG1GdFpUNUhZVzhzSUZOb1lXNDhMMk55WldGMGIzSk9ZVzFsUGcwS0lDQWdJRHd2WTNKbFlYUnZjajROQ2lBZ0lDQThZM0psWVhSdmNqNE5DaUFnSUNBZ0lEeGpjbVZoZEc5eVRtRnRaVDVNZFN3Z1dtaGxiaTFhYUc5dVp6d3ZZM0psWVhSdmNrNWhiV1UrRFFvZ0lDQWdQQzlqY21WaGRHOXlQZzBLSUNBZ0lEeGpjbVZoZEc5eVBnMEtJQ0FnSUNBZ1BHTnlaV0YwYjNKT1lXMWxQa2gxYnl3Z1RHa3RTSFZoUEM5amNtVmhkRzl5VG1GdFpUNE5DaUFnSUNBOEwyTnlaV0YwYjNJK0RRb2dJQ0FnUEdOeVpXRjBiM0krRFFvZ0lDQWdJQ0E4WTNKbFlYUnZjazVoYldVK1dtaGhibWNzSUZocFlXNHRSbUU4TDJOeVpXRjBiM0pPWVcxbFBnMEtJQ0FnSUR3dlkzSmxZWFJ2Y2o0TkNpQWdJQ0E4WTNKbFlYUnZjajROQ2lBZ0lDQWdJRHhqY21WaGRHOXlUbUZ0WlQ1YWFHRnZMQ0JJZFdrOEwyTnlaV0YwYjNKT1lXMWxQZzBLSUNBZ0lEd3ZZM0psWVhSdmNqNE5DaUFnUEM5amNtVmhkRzl5Y3o0TkNpQWdQSFJwZEd4bGN6NE5DaUFnSUNBOGRHbDBiR1UrUTBORVF5QXlOVEkzTkRRNklFVjRjR1Z5YVcxbGJuUmhiQ0JEY25semRHRnNJRk4wY25WamRIVnlaU0JFWlhSbGNtMXBibUYwYVc5dVBDOTBhWFJzWlQ0TkNpQWdQQzkwYVhSc1pYTStEUW9nSUR4d2RXSnNhWE5vWlhJK1EyRnRZbkpwWkdkbElFTnllWE4wWVd4c2IyZHlZWEJvYVdNZ1JHRjBZU0JEWlc1MGNtVThMM0IxWW14cGMyaGxjajROQ2lBZ1BIQjFZbXhwWTJGMGFXOXVXV1ZoY2o0eU1EQTBQQzl3ZFdKc2FXTmhkR2x2YmxsbFlYSStEUW9nSUR4emRXSnFaV04wY3o0TkNpQWdJQ0E4YzNWaWFtVmpkRDVEY25semRHRnNJRk4wY25WamRIVnlaVHd2YzNWaWFtVmpkRDROQ2lBZ0lDQThjM1ZpYW1WamRENUZlSEJsY21sdFpXNTBZV3dnTTBRZ1EyOXZjbVJwYm1GMFpYTThMM04xWW1wbFkzUStEUW9nSUNBZ1BITjFZbXBsWTNRK1EzSjVjM1JoYkNCVGVYTjBaVzA4TDNOMVltcGxZM1ErRFFvZ0lDQWdQSE4xWW1wbFkzUStVM0JoWTJVZ1IzSnZkWEE4TDNOMVltcGxZM1ErRFFvZ0lDQWdQSE4xWW1wbFkzUStRMlZzYkNCUVlYSmhiV1YwWlhKelBDOXpkV0pxWldOMFBnMEtJQ0FnSUR4emRXSnFaV04wUGtOeWVYTjBZV3hzYjJkeVlYQm9lVHd2YzNWaWFtVmpkRDROQ2lBZ0lDQThjM1ZpYW1WamRENG9SR2xoWTJWMFlYUnZMVThzVHljcExXSnBjeWd6TFdoNVpISnZlSGx3ZVhKcFpHbHVaU2t0WTI5d2NHVnlLR2xwS1R3dmMzVmlhbVZqZEQ0TkNpQWdQQzl6ZFdKcVpXTjBjejROQ2lBZ1BHeGhibWQxWVdkbFBtVnVaend2YkdGdVozVmhaMlUrRFFvZ0lEeHlaWE52ZFhKalpWUjVjR1VnY21WemIzVnlZMlZVZVhCbFIyVnVaWEpoYkQwaVJHRjBZWE5sZENJZ0x6NE5DaUFnUEdGc2RHVnlibUYwWlVsa1pXNTBhV1pwWlhKelBnMEtJQ0FnSUR4aGJIUmxjbTVoZEdWSlpHVnVkR2xtYVdWeUlHRnNkR1Z5Ym1GMFpVbGtaVzUwYVdacFpYSlVlWEJsUFNKRFEwUkRJajR5TlRJM05EUThMMkZzZEdWeWJtRjBaVWxrWlc1MGFXWnBaWEkrRFFvZ0lEd3ZZV3gwWlhKdVlYUmxTV1JsYm5ScFptbGxjbk0rRFFvZ0lEeHlaV3hoZEdWa1NXUmxiblJwWm1sbGNuTStEUW9nSUNBZ1BISmxiR0YwWldSSlpHVnVkR2xtYVdWeUlISmxiR0YwWldSSlpHVnVkR2xtYVdWeVZIbHdaVDBpUkU5SklpQnlaV3hoZEdsdmJsUjVjR1U5SWtselUzVndjR3hsYldWdWRGUnZJajR4TUM0eE1UQTNMMU14TmpBd05UTTJPREEwTURJeE1UVTBQQzl5Wld4aGRHVmtTV1JsYm5ScFptbGxjajROQ2lBZ1BDOXlaV3hoZEdWa1NXUmxiblJwWm1sbGNuTStEUW9nSUR4bWIzSnRZWFJ6UGcwS0lDQWdJRHhtYjNKdFlYUStRMGxHUEM5bWIzSnRZWFErRFFvZ0lEd3ZabTl5YldGMGN6NE5DaUFnUEdSbGMyTnlhWEIwYVc5dWN6NE5DaUFnSUNBOFpHVnpZM0pwY0hScGIyNGdaR1Z6WTNKcGNIUnBiMjVVZVhCbFBTSlBkR2hsY2lJK1VtVnNZWFJsWkNCQmNuUnBZMnhsT2lCVGFHRnVJRWRoYnl3Z1dtaGxiaTFhYUc5dVp5Qk1kU3dnVEdrdFNIVmhJRWgxYnl3Z1dHbGhiaTFHWVNCYWFHRnVaeXdnU0hWcElGcG9ZVzk4TWpBd05IeEJZM1JoSUVOeWVYTjBZV3hzYjJkeUxpeFRaV04wTGtVNlUzUnlkV04wTGxKbGNDNVBibXhwYm1WOE5qQjhiVEV6TlROOFpHOXBPakV3TGpFeE1EY3ZVekUyTURBMU16WTRNRFF3TWpFeE5UUThMMlJsYzJOeWFYQjBhVzl1UGcwS0lDQWdJRHhrWlhOamNtbHdkR2x2YmlCa1pYTmpjbWx3ZEdsdmJsUjVjR1U5SWtGaWMzUnlZV04wSWo1QmJpQmxiblJ5ZVNCbWNtOXRJSFJvWlNCRFlXMWljbWxrWjJVZ1UzUnlkV04wZFhKaGJDQkVZWFJoWW1GelpTd2dkR2hsSUhkdmNteGs0b0NaY3lCeVpYQnZjMmwwYjNKNUlHWnZjaUJ6YldGc2JDQnRiMnhsWTNWc1pTQmpjbmx6ZEdGc0lITjBjblZqZEhWeVpYTXVJRlJvWlNCbGJuUnllU0JqYjI1MFlXbHVjeUJsZUhCbGNtbHRaVzUwWVd3Z1pHRjBZU0JtY205dElHRWdZM0o1YzNSaGJDQmthV1ptY21GamRHbHZiaUJ6ZEhWa2VTNGdWR2hsSUdSbGNHOXphWFJsWkNCa1lYUmhjMlYwSUdadmNpQjBhR2x6SUdWdWRISjVJR2x6SUdaeVpXVnNlU0JoZG1GcGJHRmliR1VnWm5KdmJTQjBhR1VnUTBORVF5QmhibVFnZEhsd2FXTmhiR3g1SUdsdVkyeDFaR1Z6SURORUlHTnZiM0prYVc1aGRHVnpMQ0JqWld4c0lIQmhjbUZ0WlhSbGNuTXNJSE53WVdObElHZHliM1Z3TENCbGVIQmxjbWx0Wlc1MFlXd2dZMjl1WkdsMGFXOXVjeUJoYm1RZ2NYVmhiR2wwZVNCdFpXRnpkWEpsY3k0OEwyUmxjMk55YVhCMGFXOXVQZzBLSUNBOEwyUmxjMk55YVhCMGFXOXVjejROQ2p3dmNtVnpiM1Z5WTJVKyIsInVybCI6Imh0dHA6Ly93d3cuY2NkYy5jYW0uYWMudWsvc2VydmljZXMvc3RydWN0dXJlX3JlcXVlc3Q/aWQ9ZG9pOjEwLjU1MTcvY2M4aDAxcyZzaWQ9RGF0YUNpdGUiLCJjb250ZW50VXJsIjpudWxsLCJtZXRhZGF0YVZlcnNpb24iOjIsInNjaGVtYVZlcnNpb24iOiJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtMyIsInNvdXJjZSI6bnVsbCwiaXNBY3RpdmUiOnRydWUsInN0YXRlIjoiZmluZGFibGUiLCJyZWFzb24iOm51bGwsImNyZWF0ZWQiOiIyMDE0LTAzLTE4VDE5OjIxOjQ5LjAwMC0wNDowMCIsInJlZ2lzdGVyZWQiOiIyMDE0LTAzLTE4VDE5OjIxOjUwLjAwMC0wNDowMCIsInB1Ymxpc2hlZCI6IjIwMDQiLCJ1cGRhdGVkIjoiMjAxOS0wMy0yOVQxMjo0Nzo1NC4wMDAtMDQ6MDAifSwicmVsYXRpb25zaGlwcyI6eyJjbGllbnQiOnsiZGF0YSI6eyJpZCI6ImNjZGMuY3NkIiwidHlwZSI6ImNsaWVudHMifX0sIm1lZGlhIjp7ImRhdGEiOltdfX19LCJpbmNsdWRlZCI6W3siaWQiOiJjY2RjLmNzZCIsInR5cGUiOiJjbGllbnRzIiwiYXR0cmlidXRlcyI6eyJuYW1lIjoiVGhlIENhbWJyaWRnZSBTdHJ1Y3R1cmFsIERhdGFiYXNlIiwic3ltYm9sIjoiQ0NEQy5DU0QiLCJ5ZWFyIjoyMDE5LCJjb250YWN0TmFtZSI6Ik1hdHQgTGlnaHRmb290IiwiY29udGFjdEVtYWlsIjoibGlnaHRmb290QGNjZGMuY2FtLmFjLnVrIiwiZGVzY3JpcHRpb24iOiJFc3RhYmxpc2hlZCBpbiAxOTY1LCB0aGUgQ2FtYnJpZGdlIFN0cnVjdHVyYWwgRGF0YWJhc2UgKENTRCkgaXMgdGhlIHdvcmxk4oCZcyByZXBvc2l0b3J5IGZvciBzbWFsbC1tb2xlY3VsZSBvcmdhbmljIGFuZCBtZXRhbC1vcmdhbmljIGNyeXN0YWwgc3RydWN0dXJlcy4gQ29udGFpbmluZyB0aGUgcmVzdWx0cyBvZiBhIG1pbGxpb24geC1yYXkgYW5kIG5ldXRyb24gZGlmZnJhY3Rpb24gYW5hbHlzZXMgdGhpcyB1bmlxdWUgZGF0YWJhc2Ugb2YgYWNjdXJhdGUgM0Qgc3RydWN0dXJlcyBoYXMgYmVjb21lIGFuIGVzc2VudGlhbCByZXNvdXJjZSB0byBzY2llbnRpc3RzIGFyb3VuZCB0aGUgd29ybGQuIFRoZSBDU0QgcmVjb3JkcyBiaWJsaW9ncmFwaGljLCBjaGVtaWNhbCBhbmQgY3J5c3RhbGxvZ3JhcGhpYyBpbmZvcm1hdGlvbiBmb3Igb3JnYW5pYyBhbmQgbWV0YWwtb3JnYW5pYyBjcnlzdGFsIHN0cnVjdHVyZXMgd2hvc2UgM0Qgc3RydWN0dXJlcyBoYXZlIGJlZW4gZGV0ZXJtaW5lZCBleHBlcmltZW50YWxseS5cblRoZSBDU0QgaW5jbHVkZXMgY3J5c3RhbCBzdHJ1Y3R1cmUgZGF0YSBhcmlzaW5nIGZyb20gcHVibGljYXRpb25zIGluIHRoZSBvcGVuIGxpdGVyYXR1cmUgYXMgd2VsbCBhcyBkYXRhIHB1Ymxpc2hlZCBkaXJlY3RseSB0aG91Z2ggdGhlIENTRCBhcyBDU0QgQ29tbXVuaWNhdGlvbnMuIiwiZG9tYWlucyI6IioiLCJ1cmwiOiJodHRwczovL3d3dy5jY2RjLmNhbS5hYy51ay8iLCJjcmVhdGVkIjoiMjAxOS0wMy0yNlQwNjoyODowOC4wMDAtMDQ6MDAiLCJ1cGRhdGVkIjoiMjAxOS0wMy0yNlQwNjozMTozMy4wMDAtMDQ6MDAiLCJpc0FjdGl2ZSI6dHJ1ZSwiaGFzUGFzc3dvcmQiOnRydWV9LCJyZWxhdGlvbnNoaXBzIjp7InByb3ZpZGVyIjp7ImRhdGEiOnsiaWQiOiJjY2RjIiwidHlwZSI6InByb3ZpZGVycyJ9fSwicmVwb3NpdG9yeSI6eyJkYXRhIjp7ImlkIjoiMTAuMTc2MTYvUjM2MDExIiwidHlwZSI6InJlcG9zaXRvcmllcyJ9fSwicHJlZml4ZXMiOnsiZGF0YSI6W3siaWQiOiIxMC41NTE3IiwidHlwZSI6InByZWZpeGVzIn0seyJpZCI6IjEwLjI1NTA1IiwidHlwZSI6InByZWZpeGVzIn1dfX19XX0=
94
+ eyJkYXRhIjp7ImlkIjoiMTAuNTUxNy9jYzhoMDFzIiwidHlwZSI6ImRvaXMiLCJhdHRyaWJ1dGVzIjp7ImRvaSI6IjEwLjU1MTcvY2M4aDAxcyIsInByZWZpeCI6IjEwLjU1MTciLCJzdWZmaXgiOiJjYzhoMDFzIiwiaWRlbnRpZmllcnMiOlt7ImlkZW50aWZpZXIiOiJodHRwczovL2RvaS5vcmcvMTAuNTUxNy9jYzhoMDFzIiwiaWRlbnRpZmllclR5cGUiOiJET0kifSx7ImlkZW50aWZpZXIiOiIyNTI3NDQiLCJpZGVudGlmaWVyVHlwZSI6IkNDREMifV0sImFsdGVybmF0ZUlkZW50aWZpZXJzIjpbeyJhbHRlcm5hdGVJZGVudGlmaWVyVHlwZSI6IkNDREMiLCJhbHRlcm5hdGVJZGVudGlmaWVyIjoiMjUyNzQ0In1dLCJjcmVhdG9ycyI6W3sibmFtZSI6IkdhbywgU2hhbiIsIm5hbWVUeXBlIjoiUGVyc29uYWwiLCJnaXZlbk5hbWUiOiJTaGFuIiwiZmFtaWx5TmFtZSI6IkdhbyIsImFmZmlsaWF0aW9uIjpbXX0seyJuYW1lIjoiTHUsIFpoZW4tWmhvbmciLCJuYW1lVHlwZSI6IlBlcnNvbmFsIiwiZ2l2ZW5OYW1lIjoiWmhlbi1aaG9uZyIsImZhbWlseU5hbWUiOiJMdSIsImFmZmlsaWF0aW9uIjpbXX0seyJuYW1lIjoiSHVvLCBMaS1IdWEiLCJuYW1lVHlwZSI6IlBlcnNvbmFsIiwiZ2l2ZW5OYW1lIjoiTGktSHVhIiwiZmFtaWx5TmFtZSI6Ikh1byIsImFmZmlsaWF0aW9uIjpbXX0seyJuYW1lIjoiWmhhbmcsIFhpYW4tRmEiLCJuYW1lVHlwZSI6IlBlcnNvbmFsIiwiZ2l2ZW5OYW1lIjoiWGlhbi1GYSIsImZhbWlseU5hbWUiOiJaaGFuZyIsImFmZmlsaWF0aW9uIjpbXX0seyJuYW1lIjoiWmhhbywgSHVpIiwibmFtZVR5cGUiOiJQZXJzb25hbCIsImdpdmVuTmFtZSI6Ikh1aSIsImZhbWlseU5hbWUiOiJaaGFvIiwiYWZmaWxpYXRpb24iOltdfV0sInRpdGxlcyI6W3sidGl0bGUiOiJDQ0RDIDI1Mjc0NDogRXhwZXJpbWVudGFsIENyeXN0YWwgU3RydWN0dXJlIERldGVybWluYXRpb24ifV0sInB1Ymxpc2hlciI6IkNhbWJyaWRnZSBDcnlzdGFsbG9ncmFwaGljIERhdGEgQ2VudHJlIiwiY29udGFpbmVyIjp7fSwicHVibGljYXRpb25ZZWFyIjoyMDA0LCJzdWJqZWN0cyI6W3sic3ViamVjdCI6IkNyeXN0YWwgU3RydWN0dXJlIn0seyJzdWJqZWN0IjoiRXhwZXJpbWVudGFsIDNEIENvb3JkaW5hdGVzIn0seyJzdWJqZWN0IjoiQ3J5c3RhbCBTeXN0ZW0ifSx7InN1YmplY3QiOiJTcGFjZSBHcm91cCJ9LHsic3ViamVjdCI6IkNlbGwgUGFyYW1ldGVycyJ9LHsic3ViamVjdCI6IkNyeXN0YWxsb2dyYXBoeSJ9LHsic3ViamVjdCI6IihEaWFjZXRhdG8tTyxPJyktYmlzKDMtaHlkcm94eXB5cmlkaW5lKS1jb3BwZXIoaWkpIn1dLCJjb250cmlidXRvcnMiOltdLCJkYXRlcyI6W3siZGF0ZSI6IjIwMDQiLCJkYXRlVHlwZSI6Iklzc3VlZCJ9XSwibGFuZ3VhZ2UiOiJlbmciLCJ0eXBlcyI6eyJyaXMiOiJEQVRBIiwiYmlidGV4IjoibWlzYyIsImNpdGVwcm9jIjoiZGF0YXNldCIsInNjaGVtYU9yZyI6IkRhdGFzZXQiLCJyZXNvdXJjZVR5cGVHZW5lcmFsIjoiRGF0YXNldCJ9LCJyZWxhdGVkSWRlbnRpZmllcnMiOlt7InJlbGF0aW9uVHlwZSI6IklzU3VwcGxlbWVudFRvIiwicmVsYXRlZElkZW50aWZpZXIiOiIxMC4xMTA3L3MxNjAwNTM2ODA0MDIxMTU0IiwicmVsYXRlZElkZW50aWZpZXJUeXBlIjoiRE9JIn1dLCJzaXplcyI6W10sImZvcm1hdHMiOlsiQ0lGIl0sInZlcnNpb24iOm51bGwsInJpZ2h0c0xpc3QiOltdLCJkZXNjcmlwdGlvbnMiOlt7ImRlc2NyaXB0aW9uIjoiUmVsYXRlZCBBcnRpY2xlOiBTaGFuIEdhbywgWmhlbi1aaG9uZyBMdSwgTGktSHVhIEh1bywgWGlhbi1GYSBaaGFuZywgSHVpIFpoYW98MjAwNHxBY3RhIENyeXN0YWxsb2dyLixTZWN0LkU6U3RydWN0LlJlcC5PbmxpbmV8NjB8bTEzNTN8ZG9pOjEwLjExMDcvUzE2MDA1MzY4MDQwMjExNTQiLCJkZXNjcmlwdGlvblR5cGUiOiJPdGhlciJ9LHsiZGVzY3JpcHRpb24iOiJBbiBlbnRyeSBmcm9tIHRoZSBDYW1icmlkZ2UgU3RydWN0dXJhbCBEYXRhYmFzZSwgdGhlIHdvcmxk4oCZcyByZXBvc2l0b3J5IGZvciBzbWFsbCBtb2xlY3VsZSBjcnlzdGFsIHN0cnVjdHVyZXMuIFRoZSBlbnRyeSBjb250YWlucyBleHBlcmltZW50YWwgZGF0YSBmcm9tIGEgY3J5c3RhbCBkaWZmcmFjdGlvbiBzdHVkeS4gVGhlIGRlcG9zaXRlZCBkYXRhc2V0IGZvciB0aGlzIGVudHJ5IGlzIGZyZWVseSBhdmFpbGFibGUgZnJvbSB0aGUgQ0NEQyBhbmQgdHlwaWNhbGx5IGluY2x1ZGVzIDNEIGNvb3JkaW5hdGVzLCBjZWxsIHBhcmFtZXRlcnMsIHNwYWNlIGdyb3VwLCBleHBlcmltZW50YWwgY29uZGl0aW9ucyBhbmQgcXVhbGl0eSBtZWFzdXJlcy4iLCJkZXNjcmlwdGlvblR5cGUiOiJBYnN0cmFjdCJ9XSwiZ2VvTG9jYXRpb25zIjpbXSwiZnVuZGluZ1JlZmVyZW5jZXMiOltdLCJ4bWwiOiJQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpZFhSbUxUZ2lQejROQ2p4eVpYTnZkWEpqWlNCNGJXeHVjenA0YzJROUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREV2V0UxTVUyTm9aVzFoSWlCNGJXeHVjenA0YzJrOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREV2V0UxTVUyTm9aVzFoTFdsdWMzUmhibU5sSWlCNGMyazZjMk5vWlcxaFRHOWpZWFJwYjI0OUltaDBkSEE2THk5a1lYUmhZMmwwWlM1dmNtY3ZjMk5vWlcxaEwydGxjbTVsYkMweklHaDBkSEE2THk5elkyaGxiV0V1WkdGMFlXTnBkR1V1YjNKbkwyMWxkR0V2YTJWeWJtVnNMVE12YldWMFlXUmhkR0V1ZUhOa0lpQjRiV3h1Y3owaWFIUjBjRG92TDJSaGRHRmphWFJsTG05eVp5OXpZMmhsYldFdmEyVnlibVZzTFRNaVBnMEtJQ0E4YVdSbGJuUnBabWxsY2lCcFpHVnVkR2xtYVdWeVZIbHdaVDBpUkU5SklqNHhNQzQxTlRFM0wyTmpPR2d3TVhNOEwybGtaVzUwYVdacFpYSStEUW9nSUR4amNtVmhkRzl5Y3o0TkNpQWdJQ0E4WTNKbFlYUnZjajROQ2lBZ0lDQWdJRHhqY21WaGRHOXlUbUZ0WlQ1SFlXOHNJRk5vWVc0OEwyTnlaV0YwYjNKT1lXMWxQZzBLSUNBZ0lEd3ZZM0psWVhSdmNqNE5DaUFnSUNBOFkzSmxZWFJ2Y2o0TkNpQWdJQ0FnSUR4amNtVmhkRzl5VG1GdFpUNU1kU3dnV21obGJpMWFhRzl1Wnp3dlkzSmxZWFJ2Y2s1aGJXVStEUW9nSUNBZ1BDOWpjbVZoZEc5eVBnMEtJQ0FnSUR4amNtVmhkRzl5UGcwS0lDQWdJQ0FnUEdOeVpXRjBiM0pPWVcxbFBraDFieXdnVEdrdFNIVmhQQzlqY21WaGRHOXlUbUZ0WlQ0TkNpQWdJQ0E4TDJOeVpXRjBiM0krRFFvZ0lDQWdQR055WldGMGIzSStEUW9nSUNBZ0lDQThZM0psWVhSdmNrNWhiV1UrV21oaGJtY3NJRmhwWVc0dFJtRThMMk55WldGMGIzSk9ZVzFsUGcwS0lDQWdJRHd2WTNKbFlYUnZjajROQ2lBZ0lDQThZM0psWVhSdmNqNE5DaUFnSUNBZ0lEeGpjbVZoZEc5eVRtRnRaVDVhYUdGdkxDQklkV2s4TDJOeVpXRjBiM0pPWVcxbFBnMEtJQ0FnSUR3dlkzSmxZWFJ2Y2o0TkNpQWdQQzlqY21WaGRHOXljejROQ2lBZ1BIUnBkR3hsY3o0TkNpQWdJQ0E4ZEdsMGJHVStRME5FUXlBeU5USTNORFE2SUVWNGNHVnlhVzFsYm5SaGJDQkRjbmx6ZEdGc0lGTjBjblZqZEhWeVpTQkVaWFJsY20xcGJtRjBhVzl1UEM5MGFYUnNaVDROQ2lBZ1BDOTBhWFJzWlhNK0RRb2dJRHh3ZFdKc2FYTm9aWEkrUTJGdFluSnBaR2RsSUVOeWVYTjBZV3hzYjJkeVlYQm9hV01nUkdGMFlTQkRaVzUwY21VOEwzQjFZbXhwYzJobGNqNE5DaUFnUEhCMVlteHBZMkYwYVc5dVdXVmhjajR5TURBMFBDOXdkV0pzYVdOaGRHbHZibGxsWVhJK0RRb2dJRHh6ZFdKcVpXTjBjejROQ2lBZ0lDQThjM1ZpYW1WamRENURjbmx6ZEdGc0lGTjBjblZqZEhWeVpUd3ZjM1ZpYW1WamRENE5DaUFnSUNBOGMzVmlhbVZqZEQ1RmVIQmxjbWx0Wlc1MFlXd2dNMFFnUTI5dmNtUnBibUYwWlhNOEwzTjFZbXBsWTNRK0RRb2dJQ0FnUEhOMVltcGxZM1ErUTNKNWMzUmhiQ0JUZVhOMFpXMDhMM04xWW1wbFkzUStEUW9nSUNBZ1BITjFZbXBsWTNRK1UzQmhZMlVnUjNKdmRYQThMM04xWW1wbFkzUStEUW9nSUNBZ1BITjFZbXBsWTNRK1EyVnNiQ0JRWVhKaGJXVjBaWEp6UEM5emRXSnFaV04wUGcwS0lDQWdJRHh6ZFdKcVpXTjBQa055ZVhOMFlXeHNiMmR5WVhCb2VUd3ZjM1ZpYW1WamRENE5DaUFnSUNBOGMzVmlhbVZqZEQ0b1JHbGhZMlYwWVhSdkxVOHNUeWNwTFdKcGN5Z3pMV2g1WkhKdmVIbHdlWEpwWkdsdVpTa3RZMjl3Y0dWeUtHbHBLVHd2YzNWaWFtVmpkRDROQ2lBZ1BDOXpkV0pxWldOMGN6NE5DaUFnUEd4aGJtZDFZV2RsUG1WdVp6d3ZiR0Z1WjNWaFoyVStEUW9nSUR4eVpYTnZkWEpqWlZSNWNHVWdjbVZ6YjNWeVkyVlVlWEJsUjJWdVpYSmhiRDBpUkdGMFlYTmxkQ0lnTHo0TkNpQWdQR0ZzZEdWeWJtRjBaVWxrWlc1MGFXWnBaWEp6UGcwS0lDQWdJRHhoYkhSbGNtNWhkR1ZKWkdWdWRHbG1hV1Z5SUdGc2RHVnlibUYwWlVsa1pXNTBhV1pwWlhKVWVYQmxQU0pEUTBSRElqNHlOVEkzTkRROEwyRnNkR1Z5Ym1GMFpVbGtaVzUwYVdacFpYSStEUW9nSUR3dllXeDBaWEp1WVhSbFNXUmxiblJwWm1sbGNuTStEUW9nSUR4eVpXeGhkR1ZrU1dSbGJuUnBabWxsY25NK0RRb2dJQ0FnUEhKbGJHRjBaV1JKWkdWdWRHbG1hV1Z5SUhKbGJHRjBaV1JKWkdWdWRHbG1hV1Z5Vkhsd1pUMGlSRTlKSWlCeVpXeGhkR2x2YmxSNWNHVTlJa2x6VTNWd2NHeGxiV1Z1ZEZSdklqNHhNQzR4TVRBM0wxTXhOakF3TlRNMk9EQTBNREl4TVRVMFBDOXlaV3hoZEdWa1NXUmxiblJwWm1sbGNqNE5DaUFnUEM5eVpXeGhkR1ZrU1dSbGJuUnBabWxsY25NK0RRb2dJRHhtYjNKdFlYUnpQZzBLSUNBZ0lEeG1iM0p0WVhRK1EwbEdQQzltYjNKdFlYUStEUW9nSUR3dlptOXliV0YwY3o0TkNpQWdQR1JsYzJOeWFYQjBhVzl1Y3o0TkNpQWdJQ0E4WkdWelkzSnBjSFJwYjI0Z1pHVnpZM0pwY0hScGIyNVVlWEJsUFNKUGRHaGxjaUkrVW1Wc1lYUmxaQ0JCY25ScFkyeGxPaUJUYUdGdUlFZGhieXdnV21obGJpMWFhRzl1WnlCTWRTd2dUR2t0U0hWaElFaDFieXdnV0dsaGJpMUdZU0JhYUdGdVp5d2dTSFZwSUZwb1lXOThNakF3Tkh4QlkzUmhJRU55ZVhOMFlXeHNiMmR5TGl4VFpXTjBMa1U2VTNSeWRXTjBMbEpsY0M1UGJteHBibVY4TmpCOGJURXpOVE44Wkc5cE9qRXdMakV4TURjdlV6RTJNREExTXpZNE1EUXdNakV4TlRROEwyUmxjMk55YVhCMGFXOXVQZzBLSUNBZ0lEeGtaWE5qY21sd2RHbHZiaUJrWlhOamNtbHdkR2x2YmxSNWNHVTlJa0ZpYzNSeVlXTjBJajVCYmlCbGJuUnllU0JtY205dElIUm9aU0JEWVcxaWNtbGtaMlVnVTNSeWRXTjBkWEpoYkNCRVlYUmhZbUZ6WlN3Z2RHaGxJSGR2Y214azRvQ1pjeUJ5WlhCdmMybDBiM0o1SUdadmNpQnpiV0ZzYkNCdGIyeGxZM1ZzWlNCamNubHpkR0ZzSUhOMGNuVmpkSFZ5WlhNdUlGUm9aU0JsYm5SeWVTQmpiMjUwWVdsdWN5QmxlSEJsY21sdFpXNTBZV3dnWkdGMFlTQm1jbTl0SUdFZ1kzSjVjM1JoYkNCa2FXWm1jbUZqZEdsdmJpQnpkSFZrZVM0Z1ZHaGxJR1JsY0c5emFYUmxaQ0JrWVhSaGMyVjBJR1p2Y2lCMGFHbHpJR1Z1ZEhKNUlHbHpJR1p5WldWc2VTQmhkbUZwYkdGaWJHVWdabkp2YlNCMGFHVWdRME5FUXlCaGJtUWdkSGx3YVdOaGJHeDVJR2x1WTJ4MVpHVnpJRE5FSUdOdmIzSmthVzVoZEdWekxDQmpaV3hzSUhCaGNtRnRaWFJsY25Nc0lITndZV05sSUdkeWIzVndMQ0JsZUhCbGNtbHRaVzUwWVd3Z1kyOXVaR2wwYVc5dWN5QmhibVFnY1hWaGJHbDBlU0J0WldGemRYSmxjeTQ4TDJSbGMyTnlhWEIwYVc5dVBnMEtJQ0E4TDJSbGMyTnlhWEIwYVc5dWN6NE5Dand2Y21WemIzVnlZMlUrIiwidXJsIjoiaHR0cDovL3d3dy5jY2RjLmNhbS5hYy51ay9zZXJ2aWNlcy9zdHJ1Y3R1cmVfcmVxdWVzdD9pZD1kb2k6MTAuNTUxNy9jYzhoMDFzJnNpZD1EYXRhQ2l0ZSIsImNvbnRlbnRVcmwiOm51bGwsIm1ldGFkYXRhVmVyc2lvbiI6Miwic2NoZW1hVmVyc2lvbiI6Imh0dHA6Ly9kYXRhY2l0ZS5vcmcvc2NoZW1hL2tlcm5lbC0zIiwic291cmNlIjpudWxsLCJpc0FjdGl2ZSI6dHJ1ZSwic3RhdGUiOiJmaW5kYWJsZSIsInJlYXNvbiI6bnVsbCwidmlld0NvdW50IjowLCJ2aWV3c092ZXJUaW1lIjpbXSwiZG93bmxvYWRDb3VudCI6MCwiZG93bmxvYWRzT3ZlclRpbWUiOltdLCJyZWZlcmVuY2VDb3VudCI6MCwiY2l0YXRpb25Db3VudCI6MCwiY2l0YXRpb25zT3ZlclRpbWUiOltdLCJwYXJ0Q291bnQiOjAsInBhcnRPZkNvdW50IjowLCJ2ZXJzaW9uQ291bnQiOjAsInZlcnNpb25PZkNvdW50IjowLCJjcmVhdGVkIjoiMjAxNC0wMy0xOFQyMzoyMTo0OS4wMDBaIiwicmVnaXN0ZXJlZCI6IjIwMTQtMDMtMThUMjM6MjE6NTAuMDAwWiIsInB1Ymxpc2hlZCI6IjIwMDQiLCJ1cGRhdGVkIjoiMjAxOS0wOC0wMlQwMzoyMzoxNy4wMDBaIn0sInJlbGF0aW9uc2hpcHMiOnsiY2xpZW50Ijp7ImRhdGEiOnsiaWQiOiJjY2RjLmNzZCIsInR5cGUiOiJjbGllbnRzIn19LCJtZWRpYSI6eyJkYXRhIjp7ImlkIjoiMTAuNTUxNy9jYzhoMDFzIiwidHlwZSI6Im1lZGlhIn19LCJyZWZlcmVuY2VzIjp7ImRhdGEiOltdfSwiY2l0YXRpb25zIjp7ImRhdGEiOltdfSwicGFydHMiOnsiZGF0YSI6W119LCJwYXJ0T2YiOnsiZGF0YSI6W119LCJ2ZXJzaW9ucyI6eyJkYXRhIjpbXX0sInZlcnNpb25PZiI6eyJkYXRhIjpbXX19fX0=
47
95
  http_version:
48
- recorded_at: Wed, 03 Jul 2019 19:25:15 GMT
96
+ recorded_at: Fri, 19 Jun 2020 11:54:09 GMT
49
97
  recorded_with: VCR 3.0.3
@@ -35,7 +35,11 @@ describe Bolognese::Metadata, vcr: true do
35
35
  expect(subject.creators.first).to eq("familyName"=>"Sankar", "givenName"=>"Martial", "name"=>"Sankar, Martial", "nameType"=>"Personal")
36
36
  expect(subject.titles).to eq([{"title"=>"Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth"}])
37
37
  expect(subject.descriptions.first["description"]).to start_with("Among various advantages, their small size makes model organisms preferred subjects of investigation.")
38
- expect(subject.rights_list.first["rightsUri"]).to eq("http://creativecommons.org/licenses/by/3.0/")
38
+ expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 3.0 Unported",
39
+ "rightsIdentifier"=>"CC-BY-3.0",
40
+ "rightsIdentifierScheme"=>"SPDX",
41
+ "rightsUri"=>"https://creativecommons.org/licenses/by/3.0/legalcode",
42
+ "schemeUri"=>"https://spdx.org/licenses/"}])
39
43
  expect(subject.dates).to eq([{"date"=>"2014", "dateType"=>"Issued"}])
40
44
  expect(subject.publication_year).to eq("2014")
41
45
  expect(subject.related_identifiers).to eq([{"relatedIdentifier"=>"2050-084X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "title"=>"eLife", "type"=>"Periodical"}])
@@ -36,6 +36,11 @@ describe Bolognese::Metadata, vcr: true do
36
36
  expect(subject.dates).to eq([{"date"=>"2017-02-24", "dateType"=>"Issued"}, {"date"=>"2015-11-28", "dateType"=>"Created"}, {"date"=>"2017-02-24", "dateType"=>"Updated"}])
37
37
  expect(subject.publication_year).to eq("2017")
38
38
  expect(subject.publisher).to eq("DataCite")
39
+ expect(subject.rights_list).to eq([{"rights"=>"MIT License",
40
+ "rightsIdentifier"=>"MIT",
41
+ "rightsIdentifierScheme"=>"SPDX",
42
+ "rightsUri"=>"https://opensource.org/licenses/MIT",
43
+ "schemeUri"=>"https://spdx.org/licenses/"}])
39
44
  end
40
45
 
41
46
  it "rdataone" do
@@ -72,6 +77,11 @@ describe Bolognese::Metadata, vcr: true do
72
77
  expect(subject.dates).to eq([{"date"=>"2016-05-27", "dateType"=>"Issued"}, {"date"=>"2016-05-27", "dateType"=>"Created"}, {"date"=>"2016-05-27", "dateType"=>"Updated"}])
73
78
  expect(subject.publication_year).to eq("2016")
74
79
  expect(subject.publisher).to eq("https://cran.r-project.org")
80
+ expect(subject.rights_list).to eq([{"rights"=>"Apache License 2.0",
81
+ "rightsIdentifier"=>"Apache-2.0",
82
+ "rightsIdentifierScheme"=>"SPDX",
83
+ "rightsUri"=>"http://www.apache.org/licenses/LICENSE-2.0",
84
+ "schemeUri"=>"https://spdx.org/licenses/"}])
75
85
  end
76
86
 
77
87
  it "maremma" do
@@ -96,6 +106,11 @@ describe Bolognese::Metadata, vcr: true do
96
106
  expect(subject.dates).to eq([{"date"=>"2017-02-24", "dateType"=>"Issued"}, {"date"=>"2015-11-28", "dateType"=>"Created"}, {"date"=>"2017-02-24", "dateType"=>"Updated"}])
97
107
  expect(subject.publication_year).to eq("2017")
98
108
  expect(subject.publisher).to eq("DataCite")
109
+ expect(subject.rights_list).to eq([{"rights"=>"MIT License",
110
+ "rightsIdentifier"=>"MIT",
111
+ "rightsIdentifierScheme"=>"SPDX",
112
+ "rightsUri"=>"https://opensource.org/licenses/MIT",
113
+ "schemeUri"=>"https://spdx.org/licenses/"}])
99
114
  end
100
115
 
101
116
  it "metadata_reports" do
@@ -113,6 +128,11 @@ describe Bolognese::Metadata, vcr: true do
113
128
  expect(subject.dates).to eq([{"date"=>"2018-05-17", "dateType"=>"Issued"}, {"date"=>"2018-03-09", "dateType"=>"Created"}, {"date"=>"2018-05-17", "dateType"=>"Updated"}])
114
129
  expect(subject.publication_year).to eq("2018")
115
130
  expect(subject.publisher).to eq("DataCite")
131
+ expect(subject.rights_list).to eq([{"rights"=>"MIT License",
132
+ "rightsIdentifier"=>"MIT",
133
+ "rightsIdentifierScheme"=>"SPDX",
134
+ "rightsUri"=>"https://opensource.org/licenses/MIT",
135
+ "schemeUri"=>"https://spdx.org/licenses/"}])
116
136
  end
117
137
  end
118
138
  end
@@ -23,7 +23,11 @@ describe Bolognese::Metadata, vcr: true do
23
23
  expect(subject.url).to eq("https://elifesciences.org/articles/01567")
24
24
  expect(subject.creators.length).to eq(5)
25
25
  expect(subject.creators.first).to eq("nameType"=>"Personal", "name"=>"Sankar, Martial", "givenName"=>"Martial", "familyName"=>"Sankar", "affiliation" => [{"name"=>"Department of Plant Molecular Biology, University of Lausanne, Lausanne, Switzerland"}])
26
- expect(subject.rights_list).to eq([{"rightsUri"=>"http://creativecommons.org/licenses/by/3.0"}])
26
+ expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 3.0 Unported",
27
+ "rightsIdentifier"=>"CC-BY-3.0",
28
+ "rightsIdentifierScheme"=>"SPDX",
29
+ "rightsUri"=>"https://creativecommons.org/licenses/by/3.0/legalcode",
30
+ "schemeUri"=>"https://spdx.org/licenses/"}])
27
31
  expect(subject.titles).to eq([{"title"=>"Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth"}])
28
32
  expect(subject.dates).to eq([{"date"=>"2014-02-11", "dateType"=>"Issued"}, {"date"=>"2018-08-23T13:41:49Z", "dateType"=>"Updated"}])
29
33
  expect(subject.publication_year).to eq("2014")
@@ -56,7 +60,11 @@ describe Bolognese::Metadata, vcr: true do
56
60
  expect(subject.creators.first).to eq("nameType"=>"Personal", "name"=>"Ralser, Markus", "givenName"=>"Markus", "familyName"=>"Ralser")
57
61
  expect(subject.contributors).to eq("contributorType"=>"Editor", "familyName"=>"Janbon", "givenName"=>"Guilhem", "name"=>"Janbon, Guilhem", "nameType"=>"Personal")
58
62
  expect(subject.titles).to eq([{"title"=>"Triose Phosphate Isomerase Deficiency Is Caused by Altered Dimerization–Not Catalytic Inactivity–of the Mutant Enzymes"}])
59
- expect(subject.rights_list).to eq([{"rightsUri"=>"http://creativecommons.org/licenses/by/4.0"}])
63
+ expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 4.0 International",
64
+ "rightsIdentifier"=>"CC-BY-4.0",
65
+ "rightsIdentifierScheme"=>"SPDX",
66
+ "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode",
67
+ "schemeUri"=>"https://spdx.org/licenses/"}])
60
68
  expect(subject.dates).to eq([{"date"=>"2006-12-20", "dateType"=>"Issued"}, {"date"=>"2019-04-23T08:33:24Z", "dateType"=>"Updated"}])
61
69
  expect(subject.publication_year).to eq("2006")
62
70
  expect(subject.publisher).to eq("Public Library of Science (PLoS)")
@@ -77,7 +85,11 @@ describe Bolognese::Metadata, vcr: true do
77
85
  expect(subject.creators.length).to eq(4)
78
86
  expect(subject.creators.first).to eq("familyName"=>"Fortes", "givenName"=>"Ana Margarida", "name"=>"Fortes, Ana Margarida", "nameType"=>"Personal")
79
87
  expect(subject.titles).to eq([{"title"=>"Transcriptional Modulation of Polyamine Metabolism in Fruit Species Under Abiotic and Biotic Stress"}])
80
- expect(subject.rights_list).to eq([{"rightsUri"=>"https://creativecommons.org/licenses/by/4.0"}])
88
+ expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 4.0 International",
89
+ "rightsIdentifier"=>"CC-BY-4.0",
90
+ "rightsIdentifierScheme"=>"SPDX",
91
+ "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode",
92
+ "schemeUri"=>"https://spdx.org/licenses/"}])
81
93
  expect(subject.dates).to eq([{"date"=>"2019-07-02", "dateType"=>"Issued"}, {"date"=>"2019-07-02T11:08:31Z", "dateType"=>"Updated"}])
82
94
  expect(subject.publication_year).to eq("2019")
83
95
  expect(subject.publisher).to eq("Frontiers Media SA")
@@ -192,7 +204,11 @@ describe Bolognese::Metadata, vcr: true do
192
204
  expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
193
205
  expect(subject.creators.length).to eq(7)
194
206
  expect(subject.creators[2]).to eq("nameType"=>"Personal", "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-2043-4925", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "name"=>"Hernandez, Beatriz", "givenName"=>"Beatriz", "familyName"=>"Hernandez", "affiliation" => [{"name"=>"War Related Illness and Injury Study Center (WRIISC) and Mental Illness Research Education and Clinical Center (MIRECC), Department of Veterans Affairs, Palo Alto, CA 94304, USA"}, {"name"=>"Department of Psychiatry and Behavioral Sciences, Stanford University School of Medicine, Stanford, CA 94304, USA"}])
195
- expect(subject.rights_list).to eq([{"rightsUri"=>"http://creativecommons.org/licenses/by/3.0"}])
207
+ expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 3.0 Unported",
208
+ "rightsIdentifier"=>"CC-BY-3.0",
209
+ "rightsIdentifierScheme"=>"SPDX",
210
+ "rightsUri"=>"https://creativecommons.org/licenses/by/3.0/legalcode",
211
+ "schemeUri"=>"https://spdx.org/licenses/"}])
196
212
  expect(subject.titles).to eq([{"title"=>"Delineating a Retesting Zone Using Receiver Operating Characteristic Analysis on Serial QuantiFERON Tuberculosis Test Results in US Healthcare Workers"}])
197
213
  expect(subject.dates).to eq([{"date"=>"2012", "dateType"=>"Issued"}, {"date"=>"2016-08-02T18:42:41Z", "dateType"=>"Updated"}])
198
214
  expect(subject.publication_year).to eq("2012")
@@ -547,7 +563,7 @@ describe Bolognese::Metadata, vcr: true do
547
563
  expect(subject.creators.length).to eq(3)
548
564
  expect(subject.creators.first).to eq("nameType"=>"Personal", "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0002-4156-3761", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "name"=>"Dissmeyer, Nico", "givenName"=>"Nico", "familyName"=>"Dissmeyer", "affiliation" => [{"name"=>"Independent Junior Research Group on Protein Recognition and Degradation; Leibniz Institute of Plant Biochemistry (IPB); Weinberg 3 Halle (Saale) D-06120 Germany"}, {"name"=>"ScienceCampus Halle - Plant-based Bioeconomy; Betty-Heimann-Strasse 3 Halle (Saale) D-06120 Germany"}])
549
565
  expect(subject.titles).to eq([{"title"=>"Life and death of proteins after protease cleavage: protein degradation by the N-end rule pathway"}])
550
- expect(subject.rights_list).to eq([{"rightsUri"=>"http://doi.wiley.com/10.1002/tdm_license_1.1"}, {"rightsUri"=>"http://onlinelibrary.wiley.com/termsAndConditions"}])
566
+ expect(subject.rights_list).to eq([{"rightsUri"=>"http://doi.wiley.com/10.1002/tdm_license_1.1"}, {"rightsUri"=>"http://onlinelibrary.wiley.com/termsAndConditions#vor"}])
551
567
  expect(subject.dates).to eq([{"date"=>"2018-05", "dateType"=>"Issued"}, {"date"=>"2018-08-07T05:52:14Z", "dateType"=>"Updated"}])
552
568
  expect(subject.publication_year).to eq("2018")
553
569
  expect(subject.publisher).to eq("Wiley")
@@ -31,7 +31,11 @@ describe Bolognese::Metadata, vcr: true do
31
31
  {"identifier"=>
32
32
  "Ollomo B, Durand P, Prugnolle F, Douzery EJP, Arnathau C, Nkoghe D, Leroy E, Renaud F (2009) A new malaria agent in African hominids. PLoS Pathogens 5(5): e1000446.",
33
33
  "identifierType"=>"citation"}])
34
- expect(subject.rights_list).to eq([{"rightsUri"=>"http://creativecommons.org/publicdomain/zero/1.0"}])
34
+ expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Zero v1.0 Universal",
35
+ "rightsIdentifier"=>"CC0-1.0",
36
+ "rightsIdentifierScheme"=>"SPDX",
37
+ "rightsUri"=>"https://creativecommons.org/publicdomain/zero/1.0/legalcode",
38
+ "schemeUri"=>"https://spdx.org/licenses/"}])
35
39
  expect(subject.publication_year).to eq("2011")
36
40
  expect(subject.related_identifiers.length).to eq(6)
37
41
  expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"19478877", "relatedIdentifierType"=>"PMID", "relationType"=>"IsSupplementTo")
@@ -121,7 +125,7 @@ describe Bolognese::Metadata, vcr: true do
121
125
  {"identifier"=>
122
126
  "https://schema.datacite.org/meta/kernel-4.2/example/datacite-example-full-v4.2.xml",
123
127
  "identifierType"=>"URL"}])
124
- expect(subject.rights_list).to eq([{"lang"=>"en-US", "rightsUri"=>"http://creativecommons.org/publicdomain/zero/1.0"}])
128
+ expect(subject.rights_list).to eq([{"lang"=>"en-US", "rights"=>"Creative Commons Zero v1.0 Universal", "rightsIdentifier"=>"CC0-1.0", "rightsIdentifierScheme"=>"SPDX", "rightsUri"=>"https://creativecommons.org/publicdomain/zero/1.0/legalcode", "schemeUri"=>"https://spdx.org/licenses/"}])
125
129
  expect(subject.publication_year).to eq("2014")
126
130
  expect(subject.contributors).to eq([{"name"=>"Starr, Joan", "givenName"=>"Joan", "familyName"=>"Starr", "nameIdentifiers"=>[{"nameIdentifier"=>"https://orcid.org/0000-0002-7285-027X", "schemeUri"=>"https://orcid.org", "nameIdentifierScheme"=>"ORCID"}], "affiliation"=>
127
131
  [{"affiliationIdentifier"=>"https://ror.org/03yrm5c26",
@@ -193,7 +197,13 @@ describe Bolognese::Metadata, vcr: true do
193
197
  expect(subject.creators).to eq([{"nameType"=>"Personal", "name"=>"Garza, Kristian", "givenName"=>"Kristian", "familyName"=>"Garza", "nameIdentifiers" => [], "affiliation" => []}])
194
198
  expect(subject.titles).to eq([{"title"=>"Analysis Tools For Crossover Experiment Of Ui Using Choice Architecture"}])
195
199
  expect(subject.descriptions.first["description"]).to start_with("This tools are used to analyse the data produced by the Crosssover Experiment")
196
- expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution-NonCommercial-ShareAlike", "rightsUri"=>"https://creativecommons.org/licenses/by-nc-sa/4.0"},{"rights"=>"Open Access", "rightsUri"=>"info:eu-repo/semantics/openAccess"}])
200
+ expect(subject.rights_list).to eq([{"rights"=>
201
+ "Creative Commons Attribution Non Commercial Share Alike 4.0 International",
202
+ "rightsIdentifier"=>"CC-BY-NC-SA-4.0",
203
+ "rightsIdentifierScheme"=>"SPDX",
204
+ "rightsUri"=>"https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode",
205
+ "schemeUri"=>"https://spdx.org/licenses/"},
206
+ {"rights"=>"Open Access", "rightsUri"=>"info:eu-repo/semantics/openAccess"}])
197
207
  expect(subject.dates).to eq([{"date"=>"2016-03-27", "dateType"=>"Issued"}])
198
208
  expect(subject.publication_year).to eq("2016")
199
209
  expect(subject.related_identifiers.length).to eq(1)
@@ -218,7 +228,11 @@ describe Bolognese::Metadata, vcr: true do
218
228
  expect(subject.creators.first).to eq("nameType"=>"Personal", "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0002-2410-9671", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "name"=>"Junge, Alexander", "givenName"=>"Alexander", "familyName"=>"Junge", "affiliation" => [])
219
229
  expect(subject.titles).to eq([{"title"=>"RAIN v1"}])
220
230
  expect(subject.descriptions.first["description"]).to start_with("<b>RAIN: RNA–protein Association and Interaction Networks")
221
- expect(subject.rights_list).to eq([{"rightsUri"=>"https://creativecommons.org/licenses/by/4.0", "rights"=>"CC-BY"}])
231
+ expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 4.0 International",
232
+ "rightsIdentifier"=>"CC-BY-4.0",
233
+ "rightsIdentifierScheme"=>"SPDX",
234
+ "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode",
235
+ "schemeUri"=>"https://spdx.org/licenses/"}])
222
236
  expect(subject.dates).to eq([{"date"=>"2016-11-16", "dateType"=>"Created"}, {"date"=>"2016-11-16", "dateType"=>"Updated"}, {"date"=>"2016", "dateType"=>"Issued"}])
223
237
  expect(subject.publication_year).to eq("2016")
224
238
  expect(subject.related_identifiers.length).to eq(1)
@@ -249,7 +263,11 @@ describe Bolognese::Metadata, vcr: true do
249
263
  "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0002-2874-287X", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "affiliation" => [])
250
264
  expect(subject.titles).to eq([{"title"=>"Drosophila melanogaster African Wings"}])
251
265
  expect(subject.descriptions.first["description"]).to start_with("These are raw wing images from <i>Drosophila melanogaster</i>")
252
- expect(subject.rights_list).to eq([{"rights"=>"CC BY 4.0", "rightsUri"=>"https://creativecommons.org/licenses/by/4.0"}])
266
+ expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 4.0 International",
267
+ "rightsIdentifier"=>"CC-BY-4.0",
268
+ "rightsIdentifierScheme"=>"SPDX",
269
+ "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode",
270
+ "schemeUri"=>"https://spdx.org/licenses/"}])
253
271
  expect(subject.dates).to eq([{"date"=>"2015-06-14", "dateType"=>"Created"},
254
272
  {"date"=>"2018-03-17", "dateType"=>"Updated"},
255
273
  {"date"=>"2015", "dateType"=>"Issued"}])
@@ -684,7 +702,12 @@ describe Bolognese::Metadata, vcr: true do
684
702
  expect(subject.publication_year).to eq("2010")
685
703
  expect(subject.related_identifiers.length).to eq(1)
686
704
  expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.5272/oldertestpub", "relatedIdentifierType"=>"DOI", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Text")
687
- expect(subject.rights_list).to eq([{"lang"=>"eng", "rightsUri"=>"http://creativecommons.org/licenses/by-nd/2.0", "rights"=>"Creative Commons Attribution-NoDerivs 2.0 Generic"}])
705
+ expect(subject.rights_list).to eq([{"lang"=>"eng",
706
+ "rights"=>"Creative Commons Attribution No Derivatives 2.0 Generic",
707
+ "rightsIdentifier"=>"CC-BY-ND-2.0",
708
+ "rightsIdentifierScheme"=>"SPDX",
709
+ "rightsUri"=>"https://creativecommons.org/licenses/by-nd/2.0/legalcode",
710
+ "schemeUri"=>"https://spdx.org/licenses/"}])
688
711
  expect(subject.publisher).to eq("Springer")
689
712
  expect(subject.agency).to eq("DataCite")
690
713
  expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-4")
@@ -709,7 +732,11 @@ describe Bolognese::Metadata, vcr: true do
709
732
  expect(subject.publication_year).to eq("2010")
710
733
  expect(subject.related_identifiers.length).to eq(1)
711
734
  expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.5272/oldertestpub", "relatedIdentifierType"=>"DOI", "relationType"=>"IsPartOf")
712
- expect(subject.rights_list).to eq([{"rightsUri"=>"http://creativecommons.org/licenses/by-nd/2.0", "rights"=>"Creative Commons Attribution-NoDerivs 2.0 Generic"}])
735
+ expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution No Derivatives 2.0 Generic",
736
+ "rightsIdentifier"=>"CC-BY-ND-2.0",
737
+ "rightsIdentifierScheme"=>"SPDX",
738
+ "rightsUri"=>"https://creativecommons.org/licenses/by-nd/2.0/legalcode",
739
+ "schemeUri"=>"https://spdx.org/licenses/"}])
713
740
  expect(subject.publisher).to eq("Springer")
714
741
  expect(subject.agency).to eq("DataCite")
715
742
  expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-4.0")
@@ -734,7 +761,11 @@ describe Bolognese::Metadata, vcr: true do
734
761
  expect(subject.publication_year).to eq("2011")
735
762
  expect(subject.related_identifiers.length).to eq(4)
736
763
  expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"19478877", "relatedIdentifierType"=>"PMID", "relationType"=>"IsReferencedBy")
737
- expect(subject.rights_list).to eq([{"rightsUri"=>"http://creativecommons.org/publicdomain/zero/1.0"}])
764
+ expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Zero v1.0 Universal",
765
+ "rightsIdentifier"=>"CC0-1.0",
766
+ "rightsIdentifierScheme"=>"SPDX",
767
+ "rightsUri"=>"https://creativecommons.org/publicdomain/zero/1.0/legalcode",
768
+ "schemeUri"=>"https://spdx.org/licenses/"}])
738
769
  expect(subject.publisher).to eq("Dryad Digital Repository")
739
770
  expect(subject.agency).to eq("DataCite")
740
771
  expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-3")
@@ -759,7 +790,11 @@ describe Bolognese::Metadata, vcr: true do
759
790
  expect(subject.publication_year).to eq("2010")
760
791
  expect(subject.related_identifiers.length).to eq(1)
761
792
  expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.5272/oldertestpub", "relatedIdentifierType"=>"DOI", "relationType"=>"IsPartOf")
762
- expect(subject.rights_list).to eq([{"rightsUri"=>"http://creativecommons.org/licenses/by-nd/2.0", "rights"=>"Creative Commons Attribution-NoDerivs 2.0 Generic"}])
793
+ expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution No Derivatives 2.0 Generic",
794
+ "rightsIdentifier"=>"CC-BY-ND-2.0",
795
+ "rightsIdentifierScheme"=>"SPDX",
796
+ "rightsUri"=>"https://creativecommons.org/licenses/by-nd/2.0/legalcode",
797
+ "schemeUri"=>"https://spdx.org/licenses/"}])
763
798
  expect(subject.publisher).to eq("Springer")
764
799
  expect(subject.agency).to eq("DataCite")
765
800
  expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-3.0")
@@ -811,7 +846,12 @@ describe Bolognese::Metadata, vcr: true do
811
846
  expect(subject.publication_year).to eq("2010")
812
847
  expect(subject.related_identifiers.length).to eq(1)
813
848
  expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.5272/oldertestpub", "relatedIdentifierType"=>"DOI", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Text")
814
- expect(subject.rights_list).to eq([{"lang"=>"eng", "rightsUri"=>"http://creativecommons.org/licenses/by-nd/2.0", "rights"=>"Creative Commons Attribution-NoDerivs 2.0 Generic"}])
849
+ expect(subject.rights_list).to eq([{"lang"=>"eng",
850
+ "rights"=>"Creative Commons Attribution No Derivatives 2.0 Generic",
851
+ "rightsIdentifier"=>"CC-BY-ND-2.0",
852
+ "rightsIdentifierScheme"=>"SPDX",
853
+ "rightsUri"=>"https://creativecommons.org/licenses/by-nd/2.0/legalcode",
854
+ "schemeUri"=>"https://spdx.org/licenses/"}])
815
855
  expect(subject.publisher).to eq("Springer")
816
856
  expect(subject.agency).to eq("DataCite")
817
857
  end
@@ -212,6 +212,12 @@ describe Bolognese::Metadata, vcr: true do
212
212
  expect(response).to eq("http://creativecommons.org/publicdomain/zero/1.0")
213
213
  end
214
214
 
215
+ it "with trailing slash and to https" do
216
+ url = "http://creativecommons.org/publicdomain/zero/1.0/"
217
+ response = subject.normalize_url(url, https: true)
218
+ expect(response).to eq("https://creativecommons.org/publicdomain/zero/1.0")
219
+ end
220
+
215
221
  it "uri" do
216
222
  url = "info:eu-repo/semantics/openAccess"
217
223
  response = subject.normalize_url(url)
@@ -219,6 +225,26 @@ describe Bolognese::Metadata, vcr: true do
219
225
  end
220
226
  end
221
227
 
228
+ context "normalize cc url" do
229
+ it "with trailing slash" do
230
+ url = "http://creativecommons.org/publicdomain/zero/1.0/"
231
+ response = subject.normalize_cc_url(url)
232
+ expect(response).to eq("https://creativecommons.org/publicdomain/zero/1.0/legalcode")
233
+ end
234
+
235
+ it "with trailing slash and to https" do
236
+ url = "http://creativecommons.org/publicdomain/zero/1.0/"
237
+ response = subject.normalize_cc_url(url)
238
+ expect(response).to eq("https://creativecommons.org/publicdomain/zero/1.0/legalcode")
239
+ end
240
+
241
+ it "not found" do
242
+ url = "http://creativecommons.org/publicdomain/zero/2.0/"
243
+ response = subject.normalize_cc_url(url)
244
+ expect(response).to eq("https://creativecommons.org/publicdomain/zero/2.0")
245
+ end
246
+ end
247
+
222
248
  context "normalize issn" do
223
249
  it "from array" do
224
250
  input = [{"media_type"=>"print", "__content__"=>"13040855"}, {"media_type"=>"electronic", "__content__"=>"21468427"}]
@@ -482,6 +508,38 @@ describe Bolognese::Metadata, vcr: true do
482
508
  end
483
509
  end
484
510
 
511
+ context "spdx" do
512
+ it "name_to_spdx exists" do
513
+ name = "Creative Commons Attribution 4.0 International"
514
+ response = subject.name_to_spdx(name)
515
+ expect(response).to eq({"rights"=>"Creative Commons Attribution 4.0 International", "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode", "rightsIdentifier"=>"CC-BY-4.0", "rightsIdentifierScheme"=>"SPDX", "schemeUri"=>"https://spdx.org/licenses/"})
516
+ end
517
+
518
+ it "name_to_spdx id" do
519
+ name = "CC-BY-4.0"
520
+ response = subject.name_to_spdx(name)
521
+ expect(response).to eq({"rights"=>"Creative Commons Attribution 4.0 International", "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode", "rightsIdentifier"=>"CC-BY-4.0", "rightsIdentifierScheme"=>"SPDX", "schemeUri"=>"https://spdx.org/licenses/"})
522
+ end
523
+
524
+ it "hsh_to_spdx id" do
525
+ hsh = { "rightsIdentifier" => "CC-BY-4.0" }
526
+ response = subject.hsh_to_spdx(hsh)
527
+ expect(response).to eq({"rights"=>"Creative Commons Attribution 4.0 International", "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode", "rightsIdentifier"=>"CC-BY-4.0", "rightsIdentifierScheme"=>"SPDX", "schemeUri"=>"https://spdx.org/licenses/"})
528
+ end
529
+
530
+ it "hsh_to_spdx url" do
531
+ hsh = { "rightsURI" => "http://creativecommons.org/licenses/by-nc/4.0/legalcode" }
532
+ response = subject.hsh_to_spdx(hsh)
533
+ expect(response).to eq("rights"=>"Creative Commons Attribution Non Commercial 4.0 International", "rightsUri"=>"https://creativecommons.org/licenses/by-nc/4.0/legalcode", "rightsIdentifier"=>"CC-BY-NC-4.0", "rightsIdentifierScheme"=>"SPDX", "schemeUri"=>"https://spdx.org/licenses/")
534
+ end
535
+
536
+ it "hsh_to_spdx not found" do
537
+ hsh = { "rightsURI" => "info:eu-repo/semantics/openAccess" }
538
+ response = subject.hsh_to_spdx(hsh)
539
+ expect(response).to eq({"rightsUri"=>"info:eu-repo/semantics/openAccess"})
540
+ end
541
+ end
542
+
485
543
  context "fos" do
486
544
  it "name_to_fos match" do
487
545
  name = "Biological sciences"