orcid_client 0.2.3 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
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>