orcid_client 0.2.3 → 0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +120 -43
  3. data/lib/orcid_client/api.rb +1 -1
  4. data/lib/orcid_client/author.rb +2 -49
  5. data/lib/orcid_client/date.rb +3 -3
  6. data/lib/orcid_client/external_identifier.rb +1 -1
  7. data/lib/orcid_client/notification.rb +3 -5
  8. data/lib/orcid_client/version.rb +1 -1
  9. data/lib/orcid_client/work.rb +23 -28
  10. data/lib/orcid_client.rb +2 -0
  11. data/orcid_client.gemspec +5 -4
  12. data/resources/{common_2.0_rc3/common-2.0_rc3.xsd → common_2.0/common-2.0.xsd} +68 -49
  13. data/resources/{common_2.0_rc3/samples/common-2.0_rc3.xml → common_2.0/samples/common-2.0.xml} +1 -1
  14. data/resources/notification_2.0/README.md +123 -0
  15. data/resources/notification_2.0/notification-custom-2.0.xsd +38 -0
  16. data/resources/notification_2.0/notification-permission-2.0.xsd +134 -0
  17. data/resources/{notification_2.0_rc3/samples/notification-custom-2.0_rc3.xml → notification_2.0/samples/notification-custom-2.0.xml} +3 -3
  18. data/resources/{notification_2.0_rc3/samples/notification-permission-2.0_rc3.xml → notification_2.0/samples/notification-permission-2.0.xml} +2 -2
  19. data/resources/record_2.0/README.md +304 -0
  20. data/resources/{record_2.0_rc3/activities-2.0_rc3.xsd → record_2.0/activities-2.0.xsd} +79 -46
  21. data/resources/{record_2.0_rc3/address-2.0_rc3.xsd → record_2.0/address-2.0.xsd} +1 -1
  22. data/resources/{record_2.0_rc3/bulk-2.0_rc3.xsd → record_2.0/bulk-2.0.xsd} +12 -12
  23. data/resources/{record_2.0_rc3/education-2.0_rc3.xsd → record_2.0/education-2.0.xsd} +5 -5
  24. data/resources/{record_2.0_rc3/email-2.0_rc3.xsd → record_2.0/email-2.0.xsd} +3 -1
  25. data/resources/{record_2.0_rc3/employment-2.0_rc3.xsd → record_2.0/employment-2.0.xsd} +5 -5
  26. data/resources/{record_2.0_rc3/error-2.0_rc3.xsd → record_2.0/error-2.0.xsd} +0 -0
  27. data/resources/{record_2.0_rc3/funding-2.0_rc3.xsd → record_2.0/funding-2.0.xsd} +5 -49
  28. data/resources/{record_2.0_rc3/history-2.0_rc3.xsd → record_2.0/history-2.0.xsd} +1 -1
  29. data/resources/{record_2.0_rc3/keyword-2.0_rc3.xsd → record_2.0/keyword-2.0.xsd} +2 -2
  30. data/resources/{record_2.0_rc3/other-name-2.0_rc3.xsd → record_2.0/other-name-2.0.xsd} +2 -2
  31. data/resources/{record_2.0_rc3/peer-review-2.0_rc3.xsd → record_2.0/peer-review-2.0.xsd} +4 -4
  32. data/resources/record_2.0/peer-review-guide-v2.0.md +131 -0
  33. data/resources/{record_2.0_rc3/person-2.0_rc3.xsd → record_2.0/person-2.0.xsd} +8 -21
  34. data/resources/{record_2.0_rc3/person-external-identifier-2.0_rc3.xsd → record_2.0/person-external-identifier-2.0.xsd} +1 -1
  35. data/resources/{record_2.0_rc3/personal-details-2.0_rc3.xsd → record_2.0/personal-details-2.0.xsd} +5 -7
  36. data/resources/{record_2.0_rc3/preferences-2.0_rc3.xsd → record_2.0/preferences-2.0.xsd} +1 -1
  37. data/resources/{record_2.0_rc3/record-2.0_rc3.xsd → record_2.0/record-2.0.xsd} +16 -23
  38. data/resources/{record_2.0_rc3/researcher-url-2.0_rc3.xsd → record_2.0/researcher-url-2.0.xsd} +2 -2
  39. data/resources/{record_2.0_rc3/samples/activities-2.0_rc3.xml → record_2.0/samples/read_samples/activities-2.0.xml} +24 -12
  40. data/resources/{record_2.0_rc3/samples/address-2.0_rc3.xml → record_2.0/samples/read_samples/address-2.0.xml} +1 -1
  41. data/resources/{record_2.0_rc3/samples/addresses-2.0_rc3.xml → record_2.0/samples/read_samples/addresses-2.0.xml} +1 -1
  42. data/resources/{record_2.0_rc3/samples/biography-2.0_rc3.xml → record_2.0/samples/read_samples/biography-2.0.xml} +2 -2
  43. data/resources/record_2.0/samples/read_samples/bulk-work-error.xml +45 -0
  44. data/resources/{record_2.0_rc3/samples/credit-name-2.0_rc3.xml → record_2.0/samples/read_samples/credit-name-2.0.xml} +2 -2
  45. data/resources/{record_2.0_rc3/samples/education-full-2.0_rc3.xml → record_2.0/samples/read_samples/education-2.0.xml} +1 -1
  46. data/resources/{record_2.0_rc3/samples/education-2.0_rc3.xml → record_2.0/samples/read_samples/education-full-2.0.xml} +12 -2
  47. data/resources/record_2.0/samples/read_samples/educations-2.0.xml +52 -0
  48. data/resources/{record_2.0_rc3/samples/email-2.0_rc3.xml → record_2.0/samples/read_samples/email-2.0.xml} +2 -2
  49. data/resources/{record_2.0_rc3/samples/emails-2.0_rc3.xml → record_2.0/samples/read_samples/emails-2.0.xml} +3 -3
  50. data/resources/{record_2.0_rc3/samples/employment-full-2.0_rc3.xml → record_2.0/samples/read_samples/employment-2.0.xml} +1 -1
  51. data/resources/{record_2.0_rc3/samples/employment-2.0_rc3.xml → record_2.0/samples/read_samples/employment-full-2.0.xml} +14 -4
  52. data/resources/record_2.0/samples/read_samples/employments-2.0.xml +52 -0
  53. data/resources/{record_2.0_rc3/samples/error-2.0_rc3.xml → record_2.0/samples/read_samples/error-2.0.xml} +1 -1
  54. data/resources/{record_2.0_rc3/samples/external-identifier-2.0_rc3.xml → record_2.0/samples/read_samples/external-identifier-2.0.xml} +3 -2
  55. data/resources/{record_2.0_rc3/samples/external-identifiers-2.0_rc3.xml → record_2.0/samples/read_samples/external-identifiers-2.0.xml} +5 -3
  56. data/resources/{record_2.0_rc3/samples/funding-full-2.0_rc3.xml → record_2.0/samples/read_samples/funding-2.0.xml} +2 -2
  57. data/resources/{record_2.0_rc3/samples/funding-2.0_rc3.xml → record_2.0/samples/read_samples/funding-full-2.0.xml} +13 -3
  58. data/resources/record_2.0/samples/read_samples/fundings-2.0.xml +138 -0
  59. data/resources/{record_2.0_rc3/samples/history-2.0_rc3.xml → record_2.0/samples/read_samples/history-2.0.xml} +1 -1
  60. data/resources/{record_2.0_rc3/samples/keyword-2.0_rc3.xml → record_2.0/samples/read_samples/keyword-2.0.xml} +1 -1
  61. data/resources/{record_2.0_rc3/samples/keywords-2.0_rc3.xml → record_2.0/samples/read_samples/keywords-2.0.xml} +1 -1
  62. data/resources/{record_2.0_rc3/samples/name-2.0_rc3.xml → record_2.0/samples/read_samples/name-2.0.xml} +1 -1
  63. data/resources/{record_2.0_rc3/samples/other-name-2.0_rc3.xml → record_2.0/samples/read_samples/other-name-2.0.xml} +1 -1
  64. data/resources/{record_2.0_rc3/samples/other-names-2.0_rc3.xml → record_2.0/samples/read_samples/other-names-2.0.xml} +1 -1
  65. data/resources/{record_2.0_rc3/samples/peer-review-full-2.0_rc3.xml → record_2.0/samples/read_samples/peer-review-2.0.xml} +1 -1
  66. data/resources/{record_2.0_rc3/samples/peer-review-2.0_rc3.xml → record_2.0/samples/read_samples/peer-review-full-2.0.xml} +18 -8
  67. data/resources/record_2.0/samples/read_samples/peer-reviews-2.0.xml +73 -0
  68. data/resources/{record_2.0_rc3/samples/person-2.0_rc3.xml → record_2.0/samples/read_samples/person-2.0.xml} +1 -1
  69. data/resources/{record_2.0_rc3/samples/personal-details-2.0_rc3.xml → record_2.0/samples/read_samples/personal-details-2.0.xml} +1 -1
  70. data/resources/{record_2.0_rc3/samples/preferences-2.0_rc3.xml → record_2.0/samples/read_samples/preferences-2.0.xml} +1 -1
  71. data/resources/{record_2.0_rc3/samples/record-2.0_rc3.xml → record_2.0/samples/read_samples/record-2.0.xml} +73 -85
  72. data/resources/{record_2.0_rc3/samples/researcher-url-2.0_rc3.xml → record_2.0/samples/read_samples/researcher-url-2.0.xml} +1 -1
  73. data/resources/{record_2.0_rc3/samples/researcher-urls-2.0_rc3.xml → record_2.0/samples/read_samples/researcher-urls-2.0.xml} +1 -1
  74. data/resources/record_2.0/samples/read_samples/search-2.0.xml +14 -0
  75. data/resources/{record_2.0_rc3/samples/work-full-2.0_rc3.xml → record_2.0/samples/read_samples/work-2.0.xml} +5 -5
  76. data/resources/{record_2.0_rc3/samples/work-2.0_rc3.xml → record_2.0/samples/read_samples/work-full-2.0.xml} +14 -4
  77. data/resources/record_2.0/samples/read_samples/works-2.0.xml +146 -0
  78. data/resources/record_2.0/samples/write_sample/address-2.0.xml +6 -0
  79. data/resources/{record_2.0_rc3/samples/bulk-work-2.0_rc3.json → record_2.0/samples/write_sample/bulk-work-2.0.json} +55 -55
  80. data/resources/{record_2.0_rc3/samples/bulk-work-2.0_rc3.xml → record_2.0/samples/write_sample/bulk-work-2.0.xml} +18 -11
  81. data/resources/record_2.0/samples/write_sample/education-2.0.xml +30 -0
  82. data/resources/record_2.0/samples/write_sample/employment-2.0.xml +30 -0
  83. data/resources/record_2.0/samples/write_sample/external-identifier-2.0.xml +11 -0
  84. data/resources/record_2.0/samples/write_sample/funding-2.0.xml +44 -0
  85. data/resources/record_2.0/samples/write_sample/keyword-2.0.xml +7 -0
  86. data/resources/record_2.0/samples/write_sample/other-name-2.0.xml +6 -0
  87. data/resources/record_2.0/samples/write_sample/peer-review-full-2.0.xml +48 -0
  88. data/resources/record_2.0/samples/write_sample/peer-review-simple-2.0.xml +32 -0
  89. data/resources/record_2.0/samples/write_sample/researcher-url-2.0.xml +7 -0
  90. data/resources/record_2.0/samples/write_sample/work-full-2.0.xml +54 -0
  91. data/resources/record_2.0/samples/write_sample/work-simple-2.0.xml +18 -0
  92. data/resources/{record_2.0_rc3/search-2.0_rc3.xsd → record_2.0/search-2.0.xsd} +6 -26
  93. data/resources/{record_2.0_rc3/work-2.0_rc3.xsd → record_2.0/work-2.0.xsd} +8 -129
  94. data/spec/api_spec.rb +3 -3
  95. data/spec/external_identifier_spec.rb +2 -2
  96. data/spec/fixtures/external_identifier.xml +1 -1
  97. data/spec/fixtures/vcr_cassettes/OrcidClient/external_identifier/delete/should_delete_external_identifier.yml +17 -5
  98. data/spec/fixtures/vcr_cassettes/OrcidClient/external_identifier/post/should_create_external_identifier.yml +19 -7
  99. data/spec/fixtures/vcr_cassettes/OrcidClient/notifications/delete/should_delete_notification.yml +19 -6
  100. data/spec/fixtures/vcr_cassettes/OrcidClient/notifications/get/should_get_notification.yml +20 -6
  101. data/spec/fixtures/vcr_cassettes/OrcidClient/notifications/post/should_create_notification.yml +90 -25
  102. data/spec/fixtures/vcr_cassettes/OrcidClient/works/delete/should_delete_work.yml +17 -5
  103. data/spec/fixtures/vcr_cassettes/OrcidClient/works/get/should_get_works.yml +554 -543
  104. data/spec/fixtures/vcr_cassettes/OrcidClient/works/post/should_create_work.yml +90 -25
  105. data/spec/fixtures/vcr_cassettes/OrcidClient/works/put/should_update_work.yml +99 -28
  106. data/spec/fixtures/vcr_cassettes/OrcidClient_Notification/data.yml +72 -17
  107. data/spec/fixtures/vcr_cassettes/OrcidClient_Notification/schema/validates_data.yml +70 -17
  108. data/spec/fixtures/vcr_cassettes/OrcidClient_Notification/schema/validates_item_type_work.yml +72 -14
  109. data/spec/fixtures/vcr_cassettes/OrcidClient_Work/contributors/literal.yml +72 -20
  110. data/spec/fixtures/vcr_cassettes/OrcidClient_Work/contributors/multiple_titles.yml +72 -20
  111. data/spec/fixtures/vcr_cassettes/OrcidClient_Work/contributors/valid.yml +72 -23
  112. data/spec/fixtures/vcr_cassettes/OrcidClient_Work/contributors/with_ORCID_IDs.yml +75 -133
  113. data/spec/fixtures/vcr_cassettes/OrcidClient_Work/data.yml +72 -23
  114. data/spec/fixtures/vcr_cassettes/OrcidClient_Work/publication_date.yml +72 -23
  115. data/spec/fixtures/vcr_cassettes/OrcidClient_Work/schema/validates_ORCID_IDs_for_contributors.yml +75 -133
  116. data/spec/fixtures/vcr_cassettes/OrcidClient_Work/schema/validates_data.yml +72 -23
  117. data/spec/fixtures/vcr_cassettes/OrcidClient_Work/schema/validates_work_type_data-set.yml +72 -20
  118. data/spec/fixtures/work.xml +4 -2
  119. data/spec/notification_spec.rb +4 -4
  120. data/spec/work_spec.rb +6 -6
  121. metadata +122 -80
  122. data/lib/orcid_client/metadata.rb +0 -128
  123. data/resources/notification_2.0_rc3/notification-custom-2.0_rc3.xsd +0 -32
  124. data/resources/notification_2.0_rc3/notification-permission-2.0_rc3.xsd +0 -128
  125. data/resources/record_2.0_rc3/deprecated-2.0_rc3.xsd +0 -80
  126. data/resources/record_2.0_rc3/internal-2.0_rc3.xsd +0 -199
  127. data/resources/record_2.0_rc3/samples/deprecated-2.0_rc3.xml +0 -13
  128. data/resources/record_2.0_rc3/samples/search-2.0_rc3.xml +0 -368
  129. data/spec/fixtures/vcr_cassettes/OrcidClient_Work/citation.yml +0 -50
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: orcid_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: '0.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-04 00:00:00.000000000 Z
11
+ date: 2017-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: maremma
@@ -16,19 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.0'
19
+ version: '3.5'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 3.5.7
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: '3.0'
29
+ version: '3.5'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 3.5.7
33
+ - !ruby/object:Gem::Dependency
34
+ name: bolognese
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.9.26
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.9.26
27
47
  - !ruby/object:Gem::Dependency
28
48
  name: nokogiri
29
49
  requirement: !ruby/object:Gem::Requirement
30
50
  requirements:
31
51
  - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.6'
54
+ - - ">="
32
55
  - !ruby/object:Gem::Version
33
56
  version: 1.6.8
34
57
  type: :runtime
@@ -36,6 +59,9 @@ dependencies:
36
59
  version_requirements: !ruby/object:Gem::Requirement
37
60
  requirements:
38
61
  - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.6'
64
+ - - ">="
39
65
  - !ruby/object:Gem::Version
40
66
  version: 1.6.8
41
67
  - !ruby/object:Gem::Dependency
@@ -76,22 +102,22 @@ dependencies:
76
102
  name: activesupport
77
103
  requirement: !ruby/object:Gem::Requirement
78
104
  requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '4.2'
82
105
  - - ">="
83
106
  - !ruby/object:Gem::Version
84
107
  version: 4.2.5
108
+ - - "<"
109
+ - !ruby/object:Gem::Version
110
+ version: '6'
85
111
  type: :runtime
86
112
  prerelease: false
87
113
  version_requirements: !ruby/object:Gem::Requirement
88
114
  requirements:
89
- - - "~>"
90
- - !ruby/object:Gem::Version
91
- version: '4.2'
92
115
  - - ">="
93
116
  - !ruby/object:Gem::Version
94
117
  version: 4.2.5
118
+ - - "<"
119
+ - !ruby/object:Gem::Version
120
+ version: '6'
95
121
  - !ruby/object:Gem::Dependency
96
122
  name: sanitize
97
123
  requirement: !ruby/object:Gem::Requirement
@@ -208,20 +234,20 @@ dependencies:
208
234
  requirements:
209
235
  - - "~>"
210
236
  - !ruby/object:Gem::Version
211
- version: '1.22'
237
+ version: '3.0'
212
238
  - - ">="
213
239
  - !ruby/object:Gem::Version
214
- version: 1.22.3
240
+ version: 3.0.1
215
241
  type: :development
216
242
  prerelease: false
217
243
  version_requirements: !ruby/object:Gem::Requirement
218
244
  requirements:
219
245
  - - "~>"
220
246
  - !ruby/object:Gem::Version
221
- version: '1.22'
247
+ version: '3.0'
222
248
  - - ">="
223
249
  - !ruby/object:Gem::Version
224
- version: 1.22.3
250
+ version: 3.0.1
225
251
  - !ruby/object:Gem::Dependency
226
252
  name: codeclimate-test-reporter
227
253
  requirement: !ruby/object:Gem::Requirement
@@ -272,76 +298,93 @@ files:
272
298
  - lib/orcid_client/base.rb
273
299
  - lib/orcid_client/date.rb
274
300
  - lib/orcid_client/external_identifier.rb
275
- - lib/orcid_client/metadata.rb
276
301
  - lib/orcid_client/notification.rb
277
302
  - lib/orcid_client/version.rb
278
303
  - lib/orcid_client/work.rb
279
304
  - lib/orcid_client/work_type.rb
280
305
  - orcid_client.gemspec
281
- - resources/common_2.0_rc3/common-2.0_rc3.xsd
282
- - resources/common_2.0_rc3/samples/common-2.0_rc3.xml
283
- - resources/notification_2.0_rc3/notification-custom-2.0_rc3.xsd
284
- - resources/notification_2.0_rc3/notification-permission-2.0_rc3.xsd
285
- - resources/notification_2.0_rc3/samples/notification-custom-2.0_rc3.xml
286
- - resources/notification_2.0_rc3/samples/notification-permission-2.0_rc3.xml
287
- - resources/record_2.0_rc3/activities-2.0_rc3.xsd
288
- - resources/record_2.0_rc3/address-2.0_rc3.xsd
289
- - resources/record_2.0_rc3/bulk-2.0_rc3.xsd
290
- - resources/record_2.0_rc3/deprecated-2.0_rc3.xsd
291
- - resources/record_2.0_rc3/education-2.0_rc3.xsd
292
- - resources/record_2.0_rc3/email-2.0_rc3.xsd
293
- - resources/record_2.0_rc3/employment-2.0_rc3.xsd
294
- - resources/record_2.0_rc3/error-2.0_rc3.xsd
295
- - resources/record_2.0_rc3/funding-2.0_rc3.xsd
296
- - resources/record_2.0_rc3/history-2.0_rc3.xsd
297
- - resources/record_2.0_rc3/internal-2.0_rc3.xsd
298
- - resources/record_2.0_rc3/keyword-2.0_rc3.xsd
299
- - resources/record_2.0_rc3/other-name-2.0_rc3.xsd
300
- - resources/record_2.0_rc3/peer-review-2.0_rc3.xsd
301
- - resources/record_2.0_rc3/person-2.0_rc3.xsd
302
- - resources/record_2.0_rc3/person-external-identifier-2.0_rc3.xsd
303
- - resources/record_2.0_rc3/personal-details-2.0_rc3.xsd
304
- - resources/record_2.0_rc3/preferences-2.0_rc3.xsd
305
- - resources/record_2.0_rc3/record-2.0_rc3.xsd
306
- - resources/record_2.0_rc3/researcher-url-2.0_rc3.xsd
307
- - resources/record_2.0_rc3/samples/activities-2.0_rc3.xml
308
- - resources/record_2.0_rc3/samples/address-2.0_rc3.xml
309
- - resources/record_2.0_rc3/samples/addresses-2.0_rc3.xml
310
- - resources/record_2.0_rc3/samples/biography-2.0_rc3.xml
311
- - resources/record_2.0_rc3/samples/bulk-work-2.0_rc3.json
312
- - resources/record_2.0_rc3/samples/bulk-work-2.0_rc3.xml
313
- - resources/record_2.0_rc3/samples/credit-name-2.0_rc3.xml
314
- - resources/record_2.0_rc3/samples/deprecated-2.0_rc3.xml
315
- - resources/record_2.0_rc3/samples/education-2.0_rc3.xml
316
- - resources/record_2.0_rc3/samples/education-full-2.0_rc3.xml
317
- - resources/record_2.0_rc3/samples/email-2.0_rc3.xml
318
- - resources/record_2.0_rc3/samples/emails-2.0_rc3.xml
319
- - resources/record_2.0_rc3/samples/employment-2.0_rc3.xml
320
- - resources/record_2.0_rc3/samples/employment-full-2.0_rc3.xml
321
- - resources/record_2.0_rc3/samples/error-2.0_rc3.xml
322
- - resources/record_2.0_rc3/samples/external-identifier-2.0_rc3.xml
323
- - resources/record_2.0_rc3/samples/external-identifiers-2.0_rc3.xml
324
- - resources/record_2.0_rc3/samples/funding-2.0_rc3.xml
325
- - resources/record_2.0_rc3/samples/funding-full-2.0_rc3.xml
326
- - resources/record_2.0_rc3/samples/history-2.0_rc3.xml
327
- - resources/record_2.0_rc3/samples/keyword-2.0_rc3.xml
328
- - resources/record_2.0_rc3/samples/keywords-2.0_rc3.xml
329
- - resources/record_2.0_rc3/samples/name-2.0_rc3.xml
330
- - resources/record_2.0_rc3/samples/other-name-2.0_rc3.xml
331
- - resources/record_2.0_rc3/samples/other-names-2.0_rc3.xml
332
- - resources/record_2.0_rc3/samples/peer-review-2.0_rc3.xml
333
- - resources/record_2.0_rc3/samples/peer-review-full-2.0_rc3.xml
334
- - resources/record_2.0_rc3/samples/person-2.0_rc3.xml
335
- - resources/record_2.0_rc3/samples/personal-details-2.0_rc3.xml
336
- - resources/record_2.0_rc3/samples/preferences-2.0_rc3.xml
337
- - resources/record_2.0_rc3/samples/record-2.0_rc3.xml
338
- - resources/record_2.0_rc3/samples/researcher-url-2.0_rc3.xml
339
- - resources/record_2.0_rc3/samples/researcher-urls-2.0_rc3.xml
340
- - resources/record_2.0_rc3/samples/search-2.0_rc3.xml
341
- - resources/record_2.0_rc3/samples/work-2.0_rc3.xml
342
- - resources/record_2.0_rc3/samples/work-full-2.0_rc3.xml
343
- - resources/record_2.0_rc3/search-2.0_rc3.xsd
344
- - resources/record_2.0_rc3/work-2.0_rc3.xsd
306
+ - resources/common_2.0/common-2.0.xsd
307
+ - resources/common_2.0/samples/common-2.0.xml
308
+ - resources/notification_2.0/README.md
309
+ - resources/notification_2.0/notification-custom-2.0.xsd
310
+ - resources/notification_2.0/notification-permission-2.0.xsd
311
+ - resources/notification_2.0/samples/notification-custom-2.0.xml
312
+ - resources/notification_2.0/samples/notification-permission-2.0.xml
313
+ - resources/record_2.0/README.md
314
+ - resources/record_2.0/activities-2.0.xsd
315
+ - resources/record_2.0/address-2.0.xsd
316
+ - resources/record_2.0/bulk-2.0.xsd
317
+ - resources/record_2.0/education-2.0.xsd
318
+ - resources/record_2.0/email-2.0.xsd
319
+ - resources/record_2.0/employment-2.0.xsd
320
+ - resources/record_2.0/error-2.0.xsd
321
+ - resources/record_2.0/funding-2.0.xsd
322
+ - resources/record_2.0/history-2.0.xsd
323
+ - resources/record_2.0/keyword-2.0.xsd
324
+ - resources/record_2.0/other-name-2.0.xsd
325
+ - resources/record_2.0/peer-review-2.0.xsd
326
+ - resources/record_2.0/peer-review-guide-v2.0.md
327
+ - resources/record_2.0/person-2.0.xsd
328
+ - resources/record_2.0/person-external-identifier-2.0.xsd
329
+ - resources/record_2.0/personal-details-2.0.xsd
330
+ - resources/record_2.0/preferences-2.0.xsd
331
+ - resources/record_2.0/record-2.0.xsd
332
+ - resources/record_2.0/researcher-url-2.0.xsd
333
+ - resources/record_2.0/samples/read_samples/activities-2.0.xml
334
+ - resources/record_2.0/samples/read_samples/address-2.0.xml
335
+ - resources/record_2.0/samples/read_samples/addresses-2.0.xml
336
+ - resources/record_2.0/samples/read_samples/biography-2.0.xml
337
+ - resources/record_2.0/samples/read_samples/bulk-work-error.xml
338
+ - resources/record_2.0/samples/read_samples/credit-name-2.0.xml
339
+ - resources/record_2.0/samples/read_samples/education-2.0.xml
340
+ - resources/record_2.0/samples/read_samples/education-full-2.0.xml
341
+ - resources/record_2.0/samples/read_samples/educations-2.0.xml
342
+ - resources/record_2.0/samples/read_samples/email-2.0.xml
343
+ - resources/record_2.0/samples/read_samples/emails-2.0.xml
344
+ - resources/record_2.0/samples/read_samples/employment-2.0.xml
345
+ - resources/record_2.0/samples/read_samples/employment-full-2.0.xml
346
+ - resources/record_2.0/samples/read_samples/employments-2.0.xml
347
+ - resources/record_2.0/samples/read_samples/error-2.0.xml
348
+ - resources/record_2.0/samples/read_samples/external-identifier-2.0.xml
349
+ - resources/record_2.0/samples/read_samples/external-identifiers-2.0.xml
350
+ - resources/record_2.0/samples/read_samples/funding-2.0.xml
351
+ - resources/record_2.0/samples/read_samples/funding-full-2.0.xml
352
+ - resources/record_2.0/samples/read_samples/fundings-2.0.xml
353
+ - resources/record_2.0/samples/read_samples/history-2.0.xml
354
+ - resources/record_2.0/samples/read_samples/keyword-2.0.xml
355
+ - resources/record_2.0/samples/read_samples/keywords-2.0.xml
356
+ - resources/record_2.0/samples/read_samples/name-2.0.xml
357
+ - resources/record_2.0/samples/read_samples/other-name-2.0.xml
358
+ - resources/record_2.0/samples/read_samples/other-names-2.0.xml
359
+ - resources/record_2.0/samples/read_samples/peer-review-2.0.xml
360
+ - resources/record_2.0/samples/read_samples/peer-review-full-2.0.xml
361
+ - resources/record_2.0/samples/read_samples/peer-reviews-2.0.xml
362
+ - resources/record_2.0/samples/read_samples/person-2.0.xml
363
+ - resources/record_2.0/samples/read_samples/personal-details-2.0.xml
364
+ - resources/record_2.0/samples/read_samples/preferences-2.0.xml
365
+ - resources/record_2.0/samples/read_samples/record-2.0.xml
366
+ - resources/record_2.0/samples/read_samples/researcher-url-2.0.xml
367
+ - resources/record_2.0/samples/read_samples/researcher-urls-2.0.xml
368
+ - resources/record_2.0/samples/read_samples/search-2.0.xml
369
+ - resources/record_2.0/samples/read_samples/work-2.0.xml
370
+ - resources/record_2.0/samples/read_samples/work-full-2.0.xml
371
+ - resources/record_2.0/samples/read_samples/works-2.0.xml
372
+ - resources/record_2.0/samples/write_sample/address-2.0.xml
373
+ - resources/record_2.0/samples/write_sample/bulk-work-2.0.json
374
+ - resources/record_2.0/samples/write_sample/bulk-work-2.0.xml
375
+ - resources/record_2.0/samples/write_sample/education-2.0.xml
376
+ - resources/record_2.0/samples/write_sample/employment-2.0.xml
377
+ - resources/record_2.0/samples/write_sample/external-identifier-2.0.xml
378
+ - resources/record_2.0/samples/write_sample/funding-2.0.xml
379
+ - resources/record_2.0/samples/write_sample/keyword-2.0.xml
380
+ - resources/record_2.0/samples/write_sample/other-name-2.0.xml
381
+ - resources/record_2.0/samples/write_sample/peer-review-full-2.0.xml
382
+ - resources/record_2.0/samples/write_sample/peer-review-simple-2.0.xml
383
+ - resources/record_2.0/samples/write_sample/researcher-url-2.0.xml
384
+ - resources/record_2.0/samples/write_sample/work-full-2.0.xml
385
+ - resources/record_2.0/samples/write_sample/work-simple-2.0.xml
386
+ - resources/record_2.0/search-2.0.xsd
387
+ - resources/record_2.0/work-2.0.xsd
345
388
  - spec/api_spec.rb
346
389
  - spec/author_spec.rb
347
390
  - spec/external_identifier_spec.rb
@@ -358,7 +401,6 @@ files:
358
401
  - spec/fixtures/vcr_cassettes/OrcidClient_Notification/data.yml
359
402
  - spec/fixtures/vcr_cassettes/OrcidClient_Notification/schema/validates_data.yml
360
403
  - spec/fixtures/vcr_cassettes/OrcidClient_Notification/schema/validates_item_type_work.yml
361
- - spec/fixtures/vcr_cassettes/OrcidClient_Work/citation.yml
362
404
  - spec/fixtures/vcr_cassettes/OrcidClient_Work/contributors/literal.yml
363
405
  - spec/fixtures/vcr_cassettes/OrcidClient_Work/contributors/multiple_titles.yml
364
406
  - spec/fixtures/vcr_cassettes/OrcidClient_Work/contributors/valid.yml
@@ -1,128 +0,0 @@
1
- module OrcidClient
2
- module Metadata
3
- def get_metadata(id, service, options = {})
4
- case service
5
- when "crossref" then get_crossref_metadata(id, options = {})
6
- when "datacite" then get_datacite_metadata(id, options = {})
7
- when "orcid" then get_orcid_metadata(id, options = {})
8
- else
9
- { "errors" => [{ "title" => 'Not found.', "status" => 404 }] }
10
- end
11
- end
12
-
13
- def get_crossref_metadata(doi, options = {})
14
- return {} if doi.blank?
15
-
16
- url = "http://api.crossref.org/works/" + PostRank::URI.escape(doi)
17
- response = Maremma.get(url, options.merge(host: true))
18
- return response if response.body["errors"]
19
-
20
- metadata = response.body.fetch("data", {}).fetch("message", {})
21
- return { "errors" => [{ "title" => "Not found.", "status" => 404 }] } if metadata.blank?
22
-
23
- date_parts = metadata.fetch("issued", {}).fetch("date-parts", []).first
24
- year, month, day = date_parts[0], date_parts[1], date_parts[2]
25
-
26
- # use date indexed if date issued is in the future
27
- if year.nil? || Date.new(*date_parts) > Time.zone.now.to_date
28
- date_parts = metadata.fetch("indexed", {}).fetch("date-parts", []).first
29
- year, month, day = date_parts[0], date_parts[1], date_parts[2]
30
- end
31
- metadata["issued"] = { "date-parts" => [date_parts] }
32
-
33
- metadata["title"] = case metadata["title"].length
34
- when 0 then nil
35
- when 1 then metadata["title"][0]
36
- else metadata["title"][0].presence || metadata["title"][1]
37
- end
38
-
39
- if metadata["title"].blank? && !TYPES_WITH_TITLE.include?(metadata["type"])
40
- metadata["title"] = metadata["container-title"][0].presence || "No title"
41
- end
42
-
43
- metadata["container-title"] = metadata.fetch("container-title", [])[0]
44
- metadata["type"] = CROSSREF_TYPE_TRANSLATIONS[metadata["type"]] if metadata["type"]
45
- metadata["author"] = metadata["author"].map { |author| author.except("affiliation") }
46
-
47
- metadata
48
- end
49
-
50
- def get_datacite_metadata(doi, options = {})
51
- return {} if doi.blank?
52
-
53
- params = { q: "doi:" + doi,
54
- rows: 1,
55
- fl: "doi,creator,title,publisher,publicationYear,resourceTypeGeneral,description,datacentre,datacentre_symbol,prefix,relatedIdentifier,xml,minted,updated",
56
- wt: "json" }
57
- url = "http://search.datacite.org/api?" + URI.encode_www_form(params)
58
- response = Maremma.get(url, options)
59
- return response if response.body["errors"]
60
-
61
- metadata = response.body.fetch("data", {}).fetch("response", {}).fetch("docs", []).first
62
- return { "errors" => [{ "title" => "Not found.", "status" => 404 }] } if metadata.blank?
63
-
64
- doi = metadata.fetch("doi", nil)
65
- doi = doi.upcase if doi.present?
66
- title = metadata.fetch("title", []).first
67
- title = title.chomp(".") if title.present?
68
-
69
- xml = Base64.decode64(metadata.fetch('xml', "PGhzaD48L2hzaD4=\n"))
70
- xml = Hash.from_xml(xml).fetch("resource", {})
71
- authors = xml.fetch("creators", {}).fetch("creator", [])
72
- authors = [authors] if authors.is_a?(Hash)
73
-
74
- { "author" => get_hashed_authors(authors),
75
- "title" => title,
76
- "container-title" => metadata.fetch("publisher", nil),
77
- "description" => metadata.fetch("description", nil),
78
- "published" => metadata.fetch("publicationYear", nil),
79
- "issued" => metadata.fetch("minted", nil),
80
- "DOI" => doi,
81
- "type" => metadata.fetch("resourceTypeGeneral", nil),
82
- "subtype" => metadata.fetch("resourceType", nil),
83
- "publisher_id" => metadata.fetch("datacentre_symbol", nil) }
84
- end
85
-
86
- def get_orcid_metadata(orcid, options = {})
87
- return {} if orcid.blank?
88
-
89
- url = "http://pub.orcid.org/v1.2/#{orcid}/orcid-bio"
90
- response = Maremma.get(url, options)
91
- return response if response.body["errors"]
92
-
93
- metadata = response.body.fetch("data", {}).fetch("orcid_message", {}).fetch("orcid_profile", nil)
94
- metadata.extend Hashie::Extensions::DeepFetch
95
-
96
- personal_details = metadata.deep_fetch("orcid_bio", "personal_details") { {} }
97
- personal_details.extend Hashie::Extensions::DeepFetch
98
-
99
- author = { "family" => personal_details.fetch("family_name", nil),
100
- "given" => personal_details.fetch("given_names", nil) }
101
- url = metadata.deep_fetch("orcid_identifier", "uri") { nil }
102
- timestamp = Time.zone.now.utc.iso8601
103
-
104
- { "author" => [author],
105
- "title" => "ORCID record for #{author.fetch('given', '')} #{author.fetch('family', '')}",
106
- "container-title" => "ORCID Registry",
107
- "issued" => get_date_parts(timestamp),
108
- "timestamp" => timestamp,
109
- "URL" => url,
110
- "type" => 'entry' }
111
- end
112
-
113
- def get_doi_ra(doi, options = {})
114
- return {} if doi.blank?
115
-
116
- url = "http://doi.crossref.org/doiRA/" + CGI.unescape(doi)
117
- response = Maremma.get(url, options.merge(host: true))
118
- return response if response.body["errors"]
119
-
120
- ra = response.body.fetch("data", {}).first.fetch("RA", nil)
121
- if ra.present?
122
- ra.delete(' ').downcase
123
- else
124
- { "errors" => [{ "title" => "An error occured", "status" => 400 }] }
125
- end
126
- end
127
- end
128
- end
@@ -1,32 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
3
- targetNamespace="http://www.orcid.org/ns/notification" xmlns:notification="http://www.orcid.org/ns/notification"
4
- xmlns:common="http://www.orcid.org/ns/common"
5
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
6
- xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1">
7
- <xs:import namespace="http://www.orcid.org/ns/common" schemaLocation="../common_2.0_rc3/common-2.0_rc3.xsd" />
8
- <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="../xml.xsd"/>
9
- <xs:element name="notification">
10
- <xs:complexType>
11
- <xs:sequence>
12
- <xs:element name="notification-type">
13
- <xs:simpleType>
14
- <xs:restriction base="xs:string">
15
- <xs:enumeration value="custom"/>
16
- </xs:restriction>
17
- </xs:simpleType>
18
- </xs:element>
19
- <xs:element type="xs:string" name="subject"/>
20
- <xs:element type="xs:string" name="body-text"/>
21
- <xs:element type="xs:string" name="body-html"/>
22
- <xs:element ref="common:created-date" minOccurs="0"/>
23
- <xs:element ref="common:sent-date"/>
24
- <xs:element ref="common:read-date" minOccurs="0"/>
25
- <xs:element ref="common:archived-date" minOccurs="0"/>
26
- <xs:element ref="common:source" minOccurs="0"/>
27
- </xs:sequence>
28
- <xs:attribute name="put-code" type="common:put-code" use="optional" />
29
- <xs:attribute ref="xml:lang" use="optional" />
30
- </xs:complexType>
31
- </xs:element>
32
- </xs:schema>
@@ -1,128 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <xs:schema attributeFormDefault="unqualified"
3
- elementFormDefault="qualified" targetNamespace="http://www.orcid.org/ns/notification"
4
- xmlns:notification="http://www.orcid.org/ns/notification" xmlns:common="http://www.orcid.org/ns/common"
5
- xmlns:activities="http://www.orcid.org/ns/activities" xmlns:xs="http://www.w3.org/2001/XMLSchema"
6
- xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1">
7
- <xs:import namespace="http://www.orcid.org/ns/common"
8
- schemaLocation="../common_2.0_rc3/common-2.0_rc3.xsd" />
9
- <xs:import namespace="http://www.orcid.org/ns/activities"
10
- schemaLocation="../record_2.0_rc3/activities-2.0_rc3.xsd" />
11
-
12
- <xs:element name="notifications">
13
- <xs:annotation>
14
- <xs:documentation>Notification container</xs:documentation>
15
- </xs:annotation>
16
- <xs:complexType>
17
- <xs:sequence>
18
- <xs:element name="notification" type="notification:notification"
19
- minOccurs="0" maxOccurs="unbounded" />
20
- </xs:sequence>
21
- </xs:complexType>
22
- </xs:element>
23
-
24
- <xs:element name="notification">
25
- <xs:annotation>
26
- <xs:documentation>Notification element
27
- </xs:documentation>
28
- </xs:annotation>
29
- <xs:complexType>
30
- <xs:complexContent>
31
- <xs:extension base="notification:notification"></xs:extension>
32
- </xs:complexContent>
33
- </xs:complexType>
34
- </xs:element>
35
-
36
- <xs:complexType name="notification">
37
- <xs:sequence>
38
- <xs:element name="notification-type" type="notification:notification-type" />
39
- <xs:element name="authorization-url" type="notification:authorization-url" />
40
- <xs:element ref="notification:notification-subject" />
41
- <xs:element ref="notification:notification-intro" />
42
- <xs:element name="items" type="notification:items" />
43
- <xs:element ref="common:created-date" minOccurs="0" />
44
- <xs:element ref="common:sent-date" minOccurs="0" />
45
- <xs:element ref="common:read-date" minOccurs="0" />
46
- <xs:element name="actioned-date" type="notification:actioned-date"
47
- minOccurs="0" />
48
- <xs:element ref="common:archived-date" minOccurs="0" />
49
- <xs:element ref="common:source" minOccurs="0" />
50
- </xs:sequence>
51
- <xs:attribute name="put-code" type="common:put-code"
52
- use="optional" />
53
- </xs:complexType>
54
-
55
- <xs:simpleType name="notification-type">
56
- <xs:restriction base="xs:string">
57
- <xs:enumeration value="permission" />
58
- </xs:restriction>
59
- </xs:simpleType>
60
-
61
- <xs:complexType name="authorization-url">
62
- <xs:sequence>
63
- <xs:choice>
64
- <xs:sequence>
65
- <xs:element name="uri" type="xs:anyURI" />
66
- <xs:element name="path" type="xs:string" minOccurs="0" />
67
- </xs:sequence>
68
- <xs:element name="path" type="xs:string" />
69
- </xs:choice>
70
- <xs:element name="host" type="xs:string" minOccurs="0" />
71
- </xs:sequence>
72
- </xs:complexType>
73
-
74
- <xs:element name="notification-subject">
75
- <xs:annotation>
76
- <xs:documentation>The subject line for the message (displayed to the
77
- end user)
78
- </xs:documentation>
79
- </xs:annotation>
80
- <xs:simpleType>
81
- <xs:restriction base="xs:string" />
82
- </xs:simpleType>
83
- </xs:element>
84
- <xs:element name="notification-intro">
85
- <xs:annotation>
86
- <xs:documentation>A text-only introductory message to be displayed to
87
- the end user, and displayed before the example list of items.
88
- </xs:documentation>
89
- </xs:annotation>
90
- <xs:simpleType>
91
- <xs:restriction base="xs:string">
92
- <xs:maxLength value="1000" />
93
- </xs:restriction>
94
- </xs:simpleType>
95
- </xs:element>
96
- <xs:complexType name="items">
97
- <xs:sequence>
98
- <xs:element name="item" type="notification:item"
99
- maxOccurs="unbounded" />
100
- </xs:sequence>
101
- </xs:complexType>
102
- <xs:complexType name="item">
103
- <xs:sequence>
104
- <xs:element name="item-type" type="notification:activity-type" />
105
- <xs:element name="item-name" type="xs:string" />
106
- <xs:element ref="common:external-id" minOccurs="0" />
107
- </xs:sequence>
108
- </xs:complexType>
109
- <xs:simpleType name="activity-type">
110
- <xs:restriction base="xs:string">
111
- <xs:enumeration value="education"></xs:enumeration>
112
- <xs:enumeration value="employment"></xs:enumeration>
113
- <xs:enumeration value="funding"></xs:enumeration>
114
- <xs:enumeration value="work"></xs:enumeration>
115
- <xs:enumeration value="peer-review"></xs:enumeration>
116
- </xs:restriction>
117
- </xs:simpleType>
118
- <xs:complexType name="actioned-date">
119
- <xs:annotation>
120
- <xs:documentation>The date time when the user took action on the
121
- notification.
122
- </xs:documentation>
123
- </xs:annotation>
124
- <xs:simpleContent>
125
- <xs:extension base="xs:dateTime" />
126
- </xs:simpleContent>
127
- </xs:complexType>
128
- </xs:schema>