commonmeta-ruby 3.0.9 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -3
  3. data/Gemfile.lock +42 -43
  4. data/commonmeta.gemspec +1 -2
  5. data/lib/commonmeta/crossref_utils.rb +4 -7
  6. data/lib/commonmeta/metadata.rb +4 -10
  7. data/lib/commonmeta/metadata_utils.rb +2 -0
  8. data/lib/commonmeta/readers/json_post_reader.rb +78 -0
  9. data/lib/commonmeta/utils.rb +19 -0
  10. data/lib/commonmeta/version.rb +1 -1
  11. data/lib/commonmeta.rb +0 -1
  12. data/spec/author_utils_spec.rb +10 -0
  13. data/spec/cli_spec.rb +21 -1
  14. data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/convert_file/crossref/to_crossref_xml.yml +107 -0
  15. data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/convert_file/crossref_xml/to_crossref_xml.yml +52 -0
  16. data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/convert_file/crossref_xml/to_crossref_xml_refresh.yml +107 -0
  17. data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/convert_from_id/schema_org/to_crossref_xml.yml +2189 -0
  18. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/blogger_post.yml +94 -0
  19. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/ghost_post.yml +117 -0
  20. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/ghost_post_with_doi.yml +117 -0
  21. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/jekyll_post.yml +170 -0
  22. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/wordpress_post.yml +163 -0
  23. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/blogger_post.yml +94 -0
  24. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/ghost_post_with_doi.yml +117 -0
  25. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/jekyll_post.yml +87 -0
  26. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/wordpress_post.yml +163 -0
  27. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_link/license.yml +221 -0
  28. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_link/url.yml +221 -0
  29. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_item_from_rogue_scholar_with_doi.yml +163 -0
  30. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_item_from_upstream_blog.yml +243 -0
  31. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_post_from_rogue_scholar_with_doi.yml +163 -0
  32. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_post_from_upstream_blog.yml +243 -0
  33. data/spec/metadata_spec.rb +1 -1
  34. data/spec/readers/datacite_reader_spec.rb +1 -1
  35. data/spec/readers/json_post_reader_spec.rb +89 -0
  36. data/spec/utils_spec.rb +330 -314
  37. data/spec/writers/crossref_xml_writer_spec.rb +183 -137
  38. metadata +24 -25
@@ -107,4 +107,111 @@ http_interactions:
107
107
  }
108
108
  ]
109
109
  recorded_at: Sun, 19 Mar 2023 17:35:44 GMT
110
+ - request:
111
+ method: get
112
+ uri: https://api.crossref.org/members/4374
113
+ body:
114
+ encoding: UTF-8
115
+ string: ''
116
+ headers:
117
+ Connection:
118
+ - close
119
+ Host:
120
+ - api.crossref.org
121
+ User-Agent:
122
+ - http.rb/5.1.1
123
+ response:
124
+ status:
125
+ code: 200
126
+ message: OK
127
+ headers:
128
+ Date:
129
+ - Fri, 14 Apr 2023 14:56:25 GMT
130
+ Content-Type:
131
+ - application/json
132
+ Transfer-Encoding:
133
+ - chunked
134
+ Access-Control-Expose-Headers:
135
+ - Link
136
+ Access-Control-Allow-Headers:
137
+ - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language,
138
+ Accept-Ranges, Cache-Control
139
+ Access-Control-Allow-Origin:
140
+ - "*"
141
+ Server:
142
+ - Jetty(9.4.40.v20210413)
143
+ X-Ratelimit-Limit:
144
+ - '50'
145
+ X-Ratelimit-Interval:
146
+ - 1s
147
+ X-Api-Pool:
148
+ - public
149
+ X-Rate-Limit-Limit:
150
+ - '50'
151
+ X-Rate-Limit-Interval:
152
+ - 1s
153
+ Permissions-Policy:
154
+ - interest-cohort=()
155
+ Connection:
156
+ - close
157
+ body:
158
+ encoding: UTF-8
159
+ string: '{"status":"ok","message-type":"member","message-version":"1.0.0","message":{"last-status-check-time":1681445056270,"primary-name":"eLife
160
+ Sciences Publications, Ltd","counts":{"current-dois":15033,"backfile-dois":28280,"total-dois":43313},"breakdowns":{"dois-by-issued-year":[[2021,7229],[2022,6717],[2020,6182],[2019,4848],[2017,4118],[2018,4058],[2016,3510],[2015,2808],[2014,1786],[2023,1087],[2013,811],[2012,159]]},"prefixes":["10.7554"],"coverage":{"affiliations-current":0.9813077895297013,"similarity-checking-current":0.0,"descriptions-current":0.0,"ror-ids-current":0.5641588505288366,"funders-backfile":0.3052687411598303,"licenses-backfile":0.999964639321075,"funders-current":0.2880995144016497,"affiliations-backfile":0.9898161244695898,"resource-links-backfile":0.3481966053748232,"orcids-backfile":0.8474540311173975,"update-policies-current":0.3135102773897426,"ror-ids-backfile":0.002192362093352192,"orcids-current":0.9405973524911861,"similarity-checking-backfile":0.0,"references-backfile":0.3392857142857143,"descriptions-backfile":0.0,"award-numbers-backfile":0.2866690240452617,"update-policies-backfile":0.0708981612446959,"licenses-current":1.0,"award-numbers-current":0.2787201490055212,"abstracts-backfile":0.3405586987270156,"resource-links-current":0.3135102773897426,"abstracts-current":0.3157054480143684,"references-current":0.3028005055544469},"prefix":[{"name":"eLife
161
+ Sciences Publications, Ltd.","value":"10.7554"}],"id":4374,"tokens":["elife","sciences","publications","ltd"],"counts-type":{"all":{"peer-review":28652,"journal-article":14562,"journal":1,"component":143802,"posted-content":99},"backfile":{"peer-review":18431,"journal-article":9849},"current":{"peer-review":10221,"journal-article":4713,"posted-content":99}},"coverage-type":{"all":{"peer-review":{"last-status-check-time":1681445056270,"affiliations":0.9906812787938015,"abstracts":0.0,"orcids":0.8816138489459724,"licenses":1.0,"references":0.0,"funders":0.0,"similarity-checking":0.0,"award-numbers":0.0,"ror-ids":0.2177509423425939,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"journal-article":{"last-status-check-time":1681445056270,"affiliations":0.9792610905095454,"abstracts":0.9804971844526851,"orcids":0.8760472462573822,"licenses":0.99993132811427,"references":0.9715011674220574,"funders":0.8902623266034885,"similarity-checking":0.0,"award-numbers":0.8444581788215904,"ror-ids":0.1582200247218789,"update-policies":0.4613377283340201,"resource-links":0.99986265622854,"descriptions":0.0},"journal":{"last-status-check-time":1681445056270,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.0,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"component":{"last-status-check-time":1681445056270,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":4.867804342081473E-4,"references":0.0,"funders":0.0,"similarity-checking":0.0,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"posted-content":{"last-status-check-time":1681445056270,"affiliations":1.0,"abstracts":1.0,"orcids":0.898989898989899,"licenses":1.0,"references":0.0,"funders":0.0,"similarity-checking":0.0,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0}},"backfile":{"peer-review":{"last-status-check-time":1681445056270,"affiliations":0.9971244099614779,"abstracts":0.0,"orcids":0.86376213987304,"licenses":1.0,"references":0.0,"funders":0.0,"similarity-checking":0.0,"award-numbers":0.0,"ror-ids":0.003363897780912593,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"journal-article":{"last-status-check-time":1681445056270,"affiliations":0.9761397096151894,"abstracts":0.9778657731749416,"orcids":0.8169357295156869,"licenses":0.9998984668494263,"references":0.9742105797542898,"funders":0.8765356889024266,"similarity-checking":0.0,"award-numbers":0.8231292517006803,"ror-ids":0.0,"update-policies":0.2035739669001929,"resource-links":0.9997969336988527,"descriptions":0.0}},"current":{"peer-review":{"last-status-check-time":1681445056270,"affiliations":0.9790627140201545,"abstracts":0.0,"orcids":0.9138049114568046,"licenses":1.0,"references":0.0,"funders":0.0,"similarity-checking":0.0,"award-numbers":0.0,"ror-ids":0.6043439976518932,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"journal-article":{"last-status-check-time":1681445056270,"affiliations":0.9857840016974326,"abstracts":0.9859961807765754,"orcids":0.9995756418417144,"licenses":1.0,"references":0.9658391682580098,"funders":0.9189475917674517,"similarity-checking":0.0,"award-numbers":0.8890303416083174,"ror-ids":0.4888605983450032,"update-policies":1.0,"resource-links":1.0,"descriptions":0.0},"posted-content":{"last-status-check-time":1681445056270,"affiliations":1.0,"abstracts":1.0,"orcids":0.898989898989899,"licenses":1.0,"references":0.0,"funders":0.0,"similarity-checking":0.0,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0}}},"flags":{"deposits-abstracts-current":true,"deposits-orcids-current":true,"deposits":true,"deposits-affiliations-backfile":true,"deposits-update-policies-backfile":true,"deposits-similarity-checking-backfile":false,"deposits-award-numbers-current":true,"deposits-resource-links-current":true,"deposits-ror-ids-current":true,"deposits-articles":true,"deposits-affiliations-current":true,"deposits-funders-current":true,"deposits-references-backfile":true,"deposits-ror-ids-backfile":true,"deposits-abstracts-backfile":true,"deposits-licenses-backfile":true,"deposits-award-numbers-backfile":true,"deposits-descriptions-current":false,"deposits-references-current":true,"deposits-resource-links-backfile":true,"deposits-descriptions-backfile":false,"deposits-orcids-backfile":true,"deposits-funders-backfile":true,"deposits-update-policies-current":true,"deposits-similarity-checking-current":false,"deposits-licenses-current":true},"location":"Cambridge,
162
+ United Kingdom","names":["eLife Sciences Publications, Ltd","eLife Sciences
163
+ Publications, Ltd."]}}'
164
+ recorded_at: Fri, 14 Apr 2023 14:56:25 GMT
165
+ - request:
166
+ method: get
167
+ uri: https://doi.org/ra/10.7554
168
+ body:
169
+ encoding: UTF-8
170
+ string: ''
171
+ headers:
172
+ Connection:
173
+ - close
174
+ Host:
175
+ - doi.org
176
+ User-Agent:
177
+ - http.rb/5.1.1
178
+ response:
179
+ status:
180
+ code: 200
181
+ message: OK
182
+ headers:
183
+ Date:
184
+ - Fri, 14 Apr 2023 14:56:25 GMT
185
+ Content-Type:
186
+ - application/json;charset=UTF-8
187
+ Transfer-Encoding:
188
+ - chunked
189
+ Connection:
190
+ - close
191
+ Permissions-Policy:
192
+ - interest-cohort=(),browsing-topics=()
193
+ Cf-Cache-Status:
194
+ - DYNAMIC
195
+ Report-To:
196
+ - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=sEMA5Qwgps61wkVVbFF7kyRxCF8A1G%2BpuuBK0fmnk%2BC3bt91lIuifBIFty37rOQo%2FBj%2FmLlCoI2szZTwurXZS4RnDGSsRHRx25nyh7%2Bjlz%2BmdhcV0qlHK0hzmiyAz4LMDOSKOx4%3D"}],"group":"cf-nel","max_age":604800}'
197
+ Nel:
198
+ - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
199
+ Strict-Transport-Security:
200
+ - max-age=31536000; includeSubDomains; preload
201
+ Server:
202
+ - cloudflare
203
+ Cf-Ray:
204
+ - 7b7ccb9f9e9eb890-AMS
205
+ Alt-Svc:
206
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
207
+ body:
208
+ encoding: UTF-8
209
+ string: |-
210
+ [
211
+ {
212
+ "DOI": "10.7554",
213
+ "RA": "Crossref"
214
+ }
215
+ ]
216
+ recorded_at: Fri, 14 Apr 2023 14:56:25 GMT
110
217
  recorded_with: VCR 6.1.0
@@ -52,4 +52,56 @@ http_interactions:
52
52
  }
53
53
  ]
54
54
  recorded_at: Sun, 19 Mar 2023 20:04:52 GMT
55
+ - request:
56
+ method: get
57
+ uri: https://doi.org/ra/10.7554
58
+ body:
59
+ encoding: UTF-8
60
+ string: ''
61
+ headers:
62
+ Connection:
63
+ - close
64
+ Host:
65
+ - doi.org
66
+ User-Agent:
67
+ - http.rb/5.1.1
68
+ response:
69
+ status:
70
+ code: 200
71
+ message: OK
72
+ headers:
73
+ Date:
74
+ - Fri, 14 Apr 2023 14:58:01 GMT
75
+ Content-Type:
76
+ - application/json;charset=UTF-8
77
+ Transfer-Encoding:
78
+ - chunked
79
+ Connection:
80
+ - close
81
+ Permissions-Policy:
82
+ - interest-cohort=(),browsing-topics=()
83
+ Cf-Cache-Status:
84
+ - DYNAMIC
85
+ Report-To:
86
+ - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=DY93SvDIpxTkBL%2BZAbaq98D4jK06wGEfXAiTBM3KXwnnmGwrdMgtXzK0kKmFaKsByV4QZ%2BkqYO849DrwnvZRV4ctCLx4DvrVe%2B0CMhFK6A00sV1RR459Vw6yLVZa8ApUuvGMWqc%3D"}],"group":"cf-nel","max_age":604800}'
87
+ Nel:
88
+ - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
89
+ Strict-Transport-Security:
90
+ - max-age=31536000; includeSubDomains; preload
91
+ Server:
92
+ - cloudflare
93
+ Cf-Ray:
94
+ - 7b7ccdf9ddd7d0b5-AMS
95
+ Alt-Svc:
96
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
97
+ body:
98
+ encoding: UTF-8
99
+ string: |-
100
+ [
101
+ {
102
+ "DOI": "10.7554",
103
+ "RA": "Crossref"
104
+ }
105
+ ]
106
+ recorded_at: Fri, 14 Apr 2023 14:58:01 GMT
55
107
  recorded_with: VCR 6.1.0
@@ -0,0 +1,107 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://doi.org/ra/10.7554
6
+ body:
7
+ encoding: UTF-8
8
+ string: ''
9
+ headers:
10
+ Connection:
11
+ - close
12
+ Host:
13
+ - doi.org
14
+ User-Agent:
15
+ - http.rb/5.1.1
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Fri, 14 Apr 2023 15:01:05 GMT
23
+ Content-Type:
24
+ - application/json;charset=UTF-8
25
+ Transfer-Encoding:
26
+ - chunked
27
+ Connection:
28
+ - close
29
+ Permissions-Policy:
30
+ - interest-cohort=(),browsing-topics=()
31
+ Cf-Cache-Status:
32
+ - DYNAMIC
33
+ Report-To:
34
+ - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=FbYmEwnk6%2FvCn1ICgcABvrgkgOur%2BDwXjbYMG%2FeY6v75G%2FUgiDXEUeiF4B5CfTrcpdAvnWfMkR%2FSNyoImowByRI7Kh3TTs%2FdPpzEz69xOTXUj8OC3eKuJV4fT0KAn7kRPeV6A10%3D"}],"group":"cf-nel","max_age":604800}'
35
+ Nel:
36
+ - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
37
+ Strict-Transport-Security:
38
+ - max-age=31536000; includeSubDomains; preload
39
+ Server:
40
+ - cloudflare
41
+ Cf-Ray:
42
+ - 7b7cd273a87eb79a-AMS
43
+ Alt-Svc:
44
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
45
+ body:
46
+ encoding: UTF-8
47
+ string: |-
48
+ [
49
+ {
50
+ "DOI": "10.7554",
51
+ "RA": "Crossref"
52
+ }
53
+ ]
54
+ recorded_at: Fri, 14 Apr 2023 15:01:05 GMT
55
+ - request:
56
+ method: get
57
+ uri: https://doi.org/ra/10.7554
58
+ body:
59
+ encoding: UTF-8
60
+ string: ''
61
+ headers:
62
+ Connection:
63
+ - close
64
+ Host:
65
+ - doi.org
66
+ User-Agent:
67
+ - http.rb/5.1.1
68
+ response:
69
+ status:
70
+ code: 200
71
+ message: OK
72
+ headers:
73
+ Date:
74
+ - Fri, 14 Apr 2023 15:01:05 GMT
75
+ Content-Type:
76
+ - application/json;charset=UTF-8
77
+ Transfer-Encoding:
78
+ - chunked
79
+ Connection:
80
+ - close
81
+ Permissions-Policy:
82
+ - interest-cohort=(),browsing-topics=()
83
+ Cf-Cache-Status:
84
+ - DYNAMIC
85
+ Report-To:
86
+ - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=L8kCqbNd7V4AI3QLk2YnXnFQDYk3KLq9eHI1FgwvGQ%2FzZvThvCBJV8x5OD6LGZSwuceCDBIoUxlqEb5RCEXSN%2BIk%2FvEA%2BADk7Q2K6DlJXPHuJV3E0yQaOuxqMwT1wnwBYUhnR1Y%3D"}],"group":"cf-nel","max_age":604800}'
87
+ Nel:
88
+ - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
89
+ Strict-Transport-Security:
90
+ - max-age=31536000; includeSubDomains; preload
91
+ Server:
92
+ - cloudflare
93
+ Cf-Ray:
94
+ - 7b7cd275cf6b0e3a-AMS
95
+ Alt-Svc:
96
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
97
+ body:
98
+ encoding: UTF-8
99
+ string: |-
100
+ [
101
+ {
102
+ "DOI": "10.7554",
103
+ "RA": "Crossref"
104
+ }
105
+ ]
106
+ recorded_at: Fri, 14 Apr 2023 15:01:05 GMT
107
+ recorded_with: VCR 6.1.0