figshare_api_v2 0.9.8 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ba08b7f752c1c00d25110a9a35fd774b3f69bd6b6fa902c3bc34f5adb8cb389f
4
- data.tar.gz: f8598846eb851fef23c50a8b5e4538cb568bef5f21be3d2ae927509a7230f8da
3
+ metadata.gz: 5a59303e131674b6b915f07bf0e0aa317a3d5d594c8e87586fe273d8ed83697d
4
+ data.tar.gz: b8bdb004509e69e295b110f60f98ac6da83ea2ea3c5d2bf72e9d46ec041d274a
5
5
  SHA512:
6
- metadata.gz: b005326e07fe1bcbceb20e87b238ae252afaa27dcdf38c6ba0865277510c077446449bc18d0e86652dbe2125bb22795ec39a2bbf659879d2a0b0c3d6cc494c89
7
- data.tar.gz: 5814325e0b0ac251024a5487276a0f972fae33e84ab74bf2fe7f91ed74e4b25ef1f19c2e2baa85e158f758be7a4f8a9fb3df4a3db8c90075c7cbb81bf0a2b1dd
6
+ metadata.gz: ebdcee71baa8b80d0c434c9c041255a8843c897574c00725c60c288670854c0d3bce3e404805f03201951b981148ea8bfc49acf465b686af75cabd2bd47655f9
7
+ data.tar.gz: 5cdd11942289e5cb75e4e09afd730ebd12209b161fc68221aa5dadc347a90fc04370d9af464c419b69ed7cb794097254d796cd318ffc9957402cd3736728328b
data/History.txt CHANGED
@@ -1,3 +1,47 @@
1
+ robertburrowes Tue May 10 10:42:27 2022 +1200
2
+ Comment
3
+ robertburrowes Tue May 10 10:40:02 2022 +1200
4
+ Left out the pagination args
5
+ robertburrowes Tue May 10 10:27:57 2022 +1200
6
+ API changes
7
+ robertburrowes Tue May 10 10:21:39 2022 +1200
8
+ API changes
9
+ robertburrowes Tue May 10 10:11:50 2022 +1200
10
+ API changes Added missed &block
11
+ robertburrowes Tue May 10 09:27:50 2022 +1200
12
+ Api changes
13
+ robertburrowes Tue May 10 09:27:27 2022 +1200
14
+ Missed adding _paginate
15
+ robertburrowes Tue May 10 09:26:58 2022 +1200
16
+ Use offset for paginatioon, if only the offset is passed in.
17
+ robertburrowes Mon May 9 17:06:07 2022 +1200
18
+ Add an HTML PATCH wrapper
19
+ robertburrowes Mon May 9 16:57:06 2022 +1200
20
+ Readme update
21
+ robertburrowes Mon May 9 16:54:56 2022 +1200
22
+ Bump version for new Figshare APIs.
23
+ robertburrowes Mon May 9 16:53:27 2022 +1200
24
+ API changes Fixed URL collection article
25
+ robertburrowes Mon May 9 16:52:47 2022 +1200
26
+ fixed param type
27
+ robertburrowes Mon May 9 16:17:56 2022 +1200
28
+ API changes
29
+ robertburrowes Mon May 9 14:55:40 2022 +1200
30
+ Ignore test script
31
+ robertburrowes Mon May 9 14:54:41 2022 +1200
32
+ +x
33
+ robertburrowes Mon May 9 14:54:11 2022 +1200
34
+ Include tags pushing to github
35
+ robertburrowes Mon May 9 14:52:11 2022 +1200
36
+ API updates
37
+ robertburrowes Mon May 9 14:39:15 2022 +1200
38
+ API additions/response changes. Added page/page_size Fixed some string quotes Fixed URL mistypings
39
+ robertburrowes Mon May 9 12:36:08 2022 +1200
40
+ Added setting pagination params from the args
41
+ robertburrowes Mon May 9 11:46:21 2022 +1200
42
+ Search has pagination
43
+ robertburrowes Thu Dec 23 12:20:05 2021 +1300
44
+ Fixed Institutions::hr_upload
1
45
  robertburrowes Tue Nov 2 14:49:47 2021 +1300
2
46
  hr upload is post, not put
3
47
  robertburrowes Tue Nov 2 13:12:30 2021 +1300
data/README.md CHANGED
@@ -7,7 +7,9 @@
7
7
 
8
8
  ## DESCRIPTION:
9
9
 
10
- Figshare version 2 API.
10
+ Figshare version 2 API.
11
+
12
+ Actually the second version of the version 2 APIs. Lots of changes have been made by Figshare, mostly expanding what is returned from the API calls, but they also added some fields. Looks mostly backwards compatible.
11
13
 
12
14
  ## FEATURES/PROBLEMS:
13
15
 
@@ -71,4 +73,3 @@ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
71
73
  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
72
74
  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
73
75
  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
74
-
data/lib/authors.rb CHANGED
@@ -4,13 +4,17 @@ module Figshare
4
4
  class Authors < Base
5
5
  # Search authors
6
6
  #
7
- # @param institution [Boolean] Just our institution
8
- # @param group_id [Integer] Only return this group's collections
7
+ # @param institution [Boolean] Just our institution. We have already stored the institute_id.
9
8
  # @param orcid [String] Matches this orcid
9
+ # @param group_id [Integer] Only return this group's collections
10
10
  # @param is_active [Boolean]
11
11
  # @param is_public [Boolean]
12
12
  # @param order [String] "published_date" Default, "modified_date", "views", "cites", "shares"
13
13
  # @param order_direction [String] "desc" Default, "asc"
14
+ # @param page [Numeric] Pages start at 1. Page and Page size go together
15
+ # @param page_size [Numeric]
16
+ # @param offset [Numeric] offset is 0 based. Offset and Limit go together
17
+ # @param limit [Numeric]
14
18
  # @yield [Hash] {id, first_name, last_name, full_name, url_name, is_active, is_public, orcid_id, institution_id, group_id, job_title}
15
19
  def search( search_for:,
16
20
  institute: false,
@@ -20,6 +24,10 @@ module Figshare
20
24
  is_public: true,
21
25
  order: 'published_date',
22
26
  order_direction: 'desc',
27
+ page: nil,
28
+ page_size: nil,
29
+ offset: nil,
30
+ limit: nil,
23
31
  &block
24
32
  )
25
33
  args = { 'search_for' => search_for }
@@ -30,7 +38,11 @@ module Figshare
30
38
  args['orcid'] = orcid unless orcid.nil?
31
39
  args['order'] = order unless order.nil?
32
40
  args['order_direction'] = order_direction unless order_direction.nil?
33
- post(api_query: 'account/authors/search', args: args, &block)
41
+ args['page'] = page unless page.nil?
42
+ args['page_size'] = page_size unless page_size.nil?
43
+ args['offset'] = offset unless offset.nil?
44
+ args['limit'] = limit unless limit.nil?
45
+ post_paginate(api_query: 'account/authors/search', args: args, &block)
34
46
  end
35
47
 
36
48
  # Get an authors details
@@ -38,7 +50,7 @@ module Figshare
38
50
  # @param author_id [Integer] Figshare Author ID
39
51
  # @yield [Hash] {id, first_name, last_name, full_name, url_name, is_active, is_public, orcid_id, institution_id, group_id, job_title}
40
52
  def detail(author_id:, &block)
41
- get(api_query: "account/authors/#{author_id}", &block)
53
+ get(api_query: "account/authors/#{author_id}", &block)
42
54
  end
43
55
  end
44
56
  end
data/lib/base.rb CHANGED
@@ -77,10 +77,19 @@ module Figshare
77
77
  raise 'get_paginate(): Expecting args to be a Hash'
78
78
  end
79
79
 
80
- offset = 0
81
- page = 1
82
- limit = page_size = 100
80
+ # Loop variables, if we are using pages
81
+ page = args['page'].nil? ? 1 : args['page']
82
+ page_size = args['page_size'].nil? ? 100 : args['page_size']
83
+
84
+ # Loop variables, if we are using offsets
85
+ offset = args['offset'].nil? ? 0 : args['offset']
86
+ limit = args['limit'].nil? ? 100 : args['limit']
87
+
88
+ by_offset = true if args['page'].nil? && ! args['offset'].nil?
89
+
90
+ # How many results so far.
83
91
  result_count = 0
92
+
84
93
  loop do
85
94
  content_type = response = nil
86
95
  form_args = by_offset ? { 'limit' => limit, 'offset' => offset } : { 'page_size' => page_size, 'page' => page }
@@ -148,11 +157,19 @@ module Figshare
148
157
  # @yield [String] if given a block, iterates through the result from figshare
149
158
  # @return [Integer] number of results.
150
159
  private def post_paginate(api_query:, args: {}, debug: false, by_offset: false, &block)
151
- page = 1
152
- offset = 0
153
- limit = page_size = 100
160
+ # Loop variables, if we are using pages
161
+ page = args['page'].nil? ? 1 : args['page']
162
+ page_size = args['page_size'].nil? ? 100 : args['page_size']
163
+
164
+ # Loop variables, if we are using offsets
165
+ offset = args['offset'].nil? ? 0 : args['offset']
166
+ limit = args['limit'].nil? ? 100 : args['limit']
167
+
168
+ # How many results so far.
154
169
  result_count = 0
155
170
 
171
+ by_offset = true if args['page'].nil? && ! args['offset'].nil?
172
+
156
173
  args = {} if args.nil?
157
174
  if ! args.is_a?(Hash)
158
175
  raise 'post_paginate(): Expecting args to be a Hash'
@@ -214,6 +231,41 @@ module Figshare
214
231
  return iterate_json_response(response: response, content_type: content_type, debug: debug, &block)
215
232
  end
216
233
 
234
+ # Patch iterates through the API response, yielding each value to the passed block
235
+ # When Figshare API usually has no paging option.
236
+ # If there is no block, then the results are printed (useful for debugging)
237
+ #
238
+ # @param api_query [String] base figshare api call, to which we add parameters defined in args
239
+ # @param args [Hash] Key, value pairs which get converted to ?key=arg&key=arg...
240
+ # @param debug [Boolean] print result to stdout
241
+ # @param content_type [String] Assuming Json, but might need binary ('application/octet-stream')
242
+ # @yield [String] if given a block, iterates through the result from figshare
243
+ # @return [Integer] number of results
244
+ private def patch(api_query:, args: {}, data: nil, debug: false, content_type: 'application/json; charset=UTF-8', &block)
245
+ body = nil
246
+ body = if data.is_a?(Hash)
247
+ # Convert hash to json, and merge in additional args
248
+ data.merge(args).to_j
249
+ elsif data.nil? && ! args.empty?
250
+ # No data, but args, so just use the args
251
+ args.to_j
252
+ else
253
+ # Data isn't a Hash, so just pass it through (might be nil)
254
+ data
255
+ end
256
+
257
+ response = nil
258
+ WIKK::WebBrowser.https_session( host: @hostname, verify_cert: false ) do |ws|
259
+ response = ws.patch_req( query: "#{@api_url}#{api_query}",
260
+ content_type: content_type,
261
+ authorization: "token #{@auth_token}",
262
+ data: body
263
+ )
264
+ content_type = ws.header_value(key: 'Content-Type')
265
+ end
266
+ return iterate_json_response(response: response, content_type: content_type, debug: debug, &block)
267
+ end
268
+
217
269
  # delete sends an HTML DELETE request.
218
270
  # We don't expect to get a response to this call.
219
271
  #
@@ -1,7 +1,7 @@
1
1
  module Figshare # :nodoc:
2
2
  # Figshare module initialization
3
3
  #
4
- VERSION = '0.9.8'
4
+ VERSION = '0.9.9'
5
5
 
6
6
  require 'wikk_webbrowser'
7
7
  require 'wikk_json'
data/lib/institutions.rb CHANGED
@@ -4,10 +4,14 @@ module Figshare
4
4
  class Institutions < Base
5
5
  # Upload hr file
6
6
  #
7
- # @param hr_xml [String] See https://docs.figshare.com/#hr_feed_hr_feed_private_endpoint
7
+ # @param hr_xml_filename [String] Filename. See https://docs.figshare.com/#hr_feed_hr_feed_private_endpoint
8
8
  # @yield [Hash] { message:, data: null, errcode:}
9
- def hr_upload(hr_xml:, &block)
10
- post(api_query: 'institution/hrfeed/upload', data: hr_xml, content_type: 'multipart/form-data', &block)
9
+ def hr_upload(hr_xml_filename:, &block)
10
+ File.open(@file_name, 'rb') do |fin|
11
+ hr_xml = fin.read
12
+ args = { 'name' => 'hrfeed', 'filename' => hr_xml_filename }
13
+ post(api_query: 'institution/hrfeed/upload', args: args, data: hr_xml, content_type: 'multipart/form-data', &block)
14
+ end
11
15
  end
12
16
 
13
17
  # Get the institional account details
@@ -17,6 +21,13 @@ module Figshare
17
21
  get(api_query: 'account/institution', &block)
18
22
  end
19
23
 
24
+ # Get the institional account embargo options (IP Ranges)
25
+ #
26
+ # @yield [Array] list of embargo ip ranges [ {id:, type: ip_range, ip_name: Figshare_IP_Range} ]
27
+ def account_embargo_options(&block)
28
+ get(api_query: 'account/institution/embargo_options', &block)
29
+ end
30
+
20
31
  # Requests a list of private institute articles
21
32
  #
22
33
  # @param status [Integer] Only return items with this status
@@ -26,6 +37,10 @@ module Figshare
26
37
  # @param item_type [String] Matches this item_type. See Figshare API docs for list (https://docs.figshare.com/#articles_list)
27
38
  # @param order [String] "published_date" Default, "modified_date", "views", "cites", "shares"
28
39
  # @param order_direction [String] "desc" Default, "asc"
40
+ # @param page [Numeric] Pages start at 1. Page and Page size go together
41
+ # @param page_size [Numeric]
42
+ # @param offset [Numeric] offset is 0 based. Offset and Limit go together
43
+ # @param limit [Numeric]
29
44
  # @yield [Hash] {id, title, doi, handle, group_id, url, url_public_html, url_public_api, url_private_htm,
30
45
  # url_private_api, published_date, timeline {...}, thumb, defined_type, defined_name }
31
46
  def private_articles( status: nil,
@@ -35,6 +50,10 @@ module Figshare
35
50
  resource_doi: nil,
36
51
  order: 'published_date',
37
52
  order_direction: 'desc',
53
+ page: nil,
54
+ page_size: nil,
55
+ offset: nil,
56
+ limit: nil,
38
57
  &block
39
58
  )
40
59
  args = {}
@@ -45,6 +64,10 @@ module Figshare
45
64
  args['modified_since'] = modified_since unless modified_since.nil?
46
65
  args['order'] = order unless order.nil?
47
66
  args['order_direction'] = order_direction unless order_direction.nil?
67
+ args['page'] = page unless page.nil?
68
+ args['page_size'] = page_size unless page_size.nil?
69
+ args['offset'] = offset unless offset.nil?
70
+ args['limit'] = limit unless limit.nil?
48
71
  get_paginate(api_query: 'account/institution/articles', args: args, &block)
49
72
  end
50
73
 
@@ -58,26 +81,57 @@ module Figshare
58
81
  args = {}
59
82
  args['resource_id'] = resource_id unless resource_id.nil?
60
83
  args['filename'] = filename unless filename.nil?
61
- get(api_query: 'institutions/{@institute_id}/articles/filter-by', args: args, &block)
84
+ get(api_query: "institutions/#{@institute_id}/articles/filter-by", args: args, &block)
85
+ end
86
+
87
+ # Get an institute group's custom fields
88
+ #
89
+ # @param group_id [Integer] Figshare group_id
90
+ # @yield [Array] [ {id:, name: field_name, field_type: text } ]
91
+ def group_custom_fields(group_id: nil, &block )
92
+ args = {}
93
+ args['group_id'] = group_id unless group_id.nil?
94
+ get(api_query: 'account/institution/custom_fields', args: args, &block)
95
+ end
96
+
97
+ # Set institute group's custom fields, from a CSV file
98
+ #
99
+ # @param custom_field_id [Integer] Figshare group_id
100
+ # @param filename [Integer] Figshare group_id
101
+ # @yield [Hash] {code: 200, message: ok } ]
102
+ def group_set_custom_fields(custom_field_id:, filename: )
103
+ File.open(filename, 'rb') do |fin|
104
+ custom_fields_csv = fin.read
105
+ args = { 'name' => 'external_file', 'filename' => filename }
106
+ post(api_query: "account/institution/custom_fields/#{custom_field_id}/items/upload", args: args, data: custom_fields_csv, content_type: 'multipart/form-data', &block)
107
+ end
62
108
  end
63
109
 
64
110
  # Get institution categories (including parent Categories)
65
111
  #
66
- # @yield [Hash] { parent_id, id, title }
112
+ # @yield [Array] [ { parent_id: 1, id: 11, title: "Anatomy", path:"/450/1024/6532", source_id: "300204", taxonomy_id: 4 } ]
67
113
  def categories(&block)
68
114
  get(api_query: 'account/categories', &block)
69
115
  end
70
116
 
71
117
  # Get the groups for which the account has administrative privileges (assigned and inherited).
72
118
  #
73
- # @yield [Hash] { id, name, resource_id, parent_id, association_criteria }
119
+ # @yield [Array] [ { id: 1, name: "Materials", resource_id: "string", parent_id: 0, association_criteria: "IT" } ]
74
120
  def groups(&block)
75
121
  get(api_query: 'account/groups', &block)
76
122
  end
77
123
 
124
+ # Get the institional account group's embargo options (IP Ranges)
125
+ #
126
+ # @param group_id [Integer]
127
+ # @yield [Array] list of embargo ip ranges [ {id:, type: ip_range, ip_name: Figshare_IP_Range} ]
128
+ def group_embargo_options(group_id:, &block)
129
+ get(api_query: "account/institution/groups/#{group_id}/embargo_options", &block)
130
+ end
131
+
78
132
  # Get the roles available for groups and the institution group.
79
133
  #
80
- # @yield [Hash] { id, name, category, description }
134
+ # @yield [Array] [ { id:, name:, category:, description: } ]
81
135
  def roles(&block)
82
136
  get(api_query: 'account/roles', &block)
83
137
  end
@@ -87,12 +141,34 @@ module Figshare
87
141
  # @param is_active [Boolean] user account is active
88
142
  # @param institution_user_id [String] As set in the HR upload
89
143
  # @param email [String] as set in the HR upload
90
- # @yield [Hash] { id, first_name, last_name, institution_id, email, active, institution_user_id }
91
- def accounts(is_active: nil, institution_user_id: nil, email: nil, &block)
144
+ # @param id_lte [Integer] ID is <=
145
+ # @param id_gte [Integer] ID is >=
146
+ # @param page [Numeric] Pages start at 1. Page and Page size go together
147
+ # @param page_size [Numeric]
148
+ # @param offset [Numeric] offset is 0 based. Offset and Limit go together
149
+ # @param limit [Numeric]
150
+ # @yield [Array] [{ id:, first_name:, last_name:, institution_id:, email:, active:, institution_user_id:, quota:, used_quota:, user_id:, orcid_id: }]
151
+ def accounts( is_active: nil,
152
+ institution_user_id: nil,
153
+ email: nil,
154
+ id_lte: nil,
155
+ id_gte: nil,
156
+ page: nil,
157
+ page_size: nil,
158
+ offset: nil,
159
+ limit: nil,
160
+ &block
161
+ )
92
162
  args = {}
93
163
  args['is_active'] = is_active unless is_active.nil?
94
164
  args['institution_user_id'] = institution_user_id unless institution_user_id.nil?
95
165
  args['email'] = email unless email.nil?
166
+ args['id_lte'] = id_lte unless id_lte.nil?
167
+ args['id_gte'] = id_gte unless id_gte.nil?
168
+ args['page'] = page unless page.nil?
169
+ args['page_size'] = page_size unless page_size.nil?
170
+ args['offset'] = offset unless offset.nil?
171
+ args['limit'] = limit unless limit.nil?
96
172
  get_paginate(api_query: 'account/institution/accounts', args: args, &block)
97
173
  end
98
174
 
@@ -106,7 +182,16 @@ module Figshare
106
182
  # @param symplectic_user_id [string]
107
183
  # @param quota [Integer] Figshare user quota
108
184
  # @param is_active [Boolean]
109
- def account_create(email:, first_name:, last_name:, group_id:, institution_user_id: nil, symplectic_user_id: nil, quota: nil, is_active: true, &block)
185
+ def account_create( email:,
186
+ first_name:,
187
+ last_name:,
188
+ group_id:,
189
+ institution_user_id: nil,
190
+ symplectic_user_id: nil,
191
+ quota: nil,
192
+ is_active: true,
193
+ &block
194
+ )
110
195
  args = {}
111
196
  args['email'] = email unless email.nil?
112
197
  args['first_name'] = first_name unless first_name.nil?
@@ -116,11 +201,12 @@ module Figshare
116
201
  args['symplectic_user_id'] = symplectic_user_id unless symplectic_user_id.nil?
117
202
  args['quota'] = quota unless quota.nil?
118
203
  args['is_active'] = is_active unless is_active.nil?
119
- post(api_query: "account/institution/accounts/#{account_id}", args: args, &block)
204
+ post(api_query: 'account/institution/accounts', args: args, &block)
120
205
  end
121
206
 
122
207
  # Update Institution Account
123
208
  #
209
+ # @param account_id [Integer] Whose account
124
210
  # @param email [String]
125
211
  # @param first_name [String]
126
212
  # @param last_name [String]
@@ -129,7 +215,17 @@ module Figshare
129
215
  # @param symplectic_user_id [string]
130
216
  # @param quota [Integer] Figshare user quota
131
217
  # @param is_active [Boolean]
132
- def account_update(email:, first_name:, last_name:, group_id:, institution_user_id: nil, symplectic_user_id: nil, quota: nil, is_active: true, &block)
218
+ def account_update( account_id:,
219
+ email: nil,
220
+ first_name: nil,
221
+ last_name: nil,
222
+ group_id: nil,
223
+ institution_user_id: nil,
224
+ symplectic_user_id: nil,
225
+ quota: nil,
226
+ is_active: true,
227
+ &block
228
+ )
133
229
  args = {}
134
230
  args['email'] = email unless email.nil?
135
231
  args['first_name'] = first_name unless first_name.nil?
@@ -142,7 +238,7 @@ module Figshare
142
238
  put(api_query: "account/institution/accounts/#{account_id}", args: args, &block)
143
239
  end
144
240
 
145
- # Get institution Account Group Roles
241
+ # Get institution Account Group Roles for an account
146
242
  #
147
243
  # @param account_id [Integer] Figshare user account id
148
244
  # @yield [Hash] { role_id [ { category, id, name }, ... ], ... }
@@ -153,7 +249,7 @@ module Figshare
153
249
  # Add Institution Account Group Roles
154
250
  #
155
251
  # @param account_id [Integer] Figshare user account id
156
- # @param body [Hash] see figshare api docs
252
+ # @param body [Hash] see figshare api cryptic docs { "2": [ 2, 7], "3": [7,9] }. Array of roles, per group
157
253
  def group_roles_add(account_id:, body:, &block)
158
254
  post(api_query: "account/institution/roles/#{account_id}", args: body, &block)
159
255
  end
@@ -163,12 +259,9 @@ module Figshare
163
259
  # @param account_id [Integer] Figshare user account id
164
260
  # @param role_id [Integer] Figshare role id
165
261
  # @param group_id [Integer] Figshare group id
166
- def group_role_delete( role_id, group_id, account_id:, &block)
262
+ def group_role_delete( account_id:, role_id:, group_id:, &block)
167
263
  args = {}
168
- args['account_id'] = account_id unless account_id.nil?
169
- args['role_id'] = role_id unless role_id.nil?
170
- args['group_id'] = group_id unless group_id.nil?
171
- delete(api_query: 'account/institution/roles/{account_id}', args: args, &block)
264
+ delete(api_query: "account/institution/roles/#{account_id}/#{group_id}/#{role_id}", args: args, &block)
172
265
  end
173
266
 
174
267
  # Get the accounts for which the account has administrative privileges (assigned and inherited).
@@ -176,14 +269,31 @@ module Figshare
176
269
  # @param is_active [Boolean] user account is active
177
270
  # @param institution_user_id [String] As set in the HR upload
178
271
  # @param email [String] as set in the HR upload
179
- # @yield [Hash] {id, first_name, last_name, institution_id, email, active, institution_user_id}
180
- def account_search(search_for: nil, is_active: nil, institution_user_id: nil, email: nil, &block)
272
+ # @param page [Numeric] Pages start at 1. Page and Page size go together
273
+ # @param page_size [Numeric]
274
+ # @param offset [Numeric] offset is 0 based. Offset and Limit go together
275
+ # @param limit [Numeric]
276
+ # @yield [Hash] {id, first_name, last_name, institution_id, email, active, institution_user_id, quota, used_quota, user_id, orcid_id}
277
+ def account_search( search_for: nil,
278
+ is_active: nil,
279
+ institution_user_id: nil,
280
+ email: nil,
281
+ page: nil,
282
+ page_size: nil,
283
+ offset: nil,
284
+ limit: nil,
285
+ &block
286
+ )
181
287
  args = {}
182
288
  args['search_for'] = search_for unless search_for.nil?
183
289
  args['is_active'] = is_active unless is_active.nil?
184
290
  args['institution_user_id'] = institution_user_id unless institution_user_id.nil?
185
291
  args['email'] = email unless email.nil?
186
- post(api_query: 'account/institution/accounts/search', args: args, &block)
292
+ args['page'] = page unless page.nil?
293
+ args['page_size'] = page_size unless page_size.nil?
294
+ args['offset'] = offset unless offset.nil?
295
+ args['limit'] = limit unless limit.nil?
296
+ post_paginate(api_query: 'account/institution/accounts/search', args: args, &block)
187
297
  end
188
298
 
189
299
  # Get institution user information using the account_id
@@ -198,13 +308,23 @@ module Figshare
198
308
  #
199
309
  # @param group_id [Integer] Figshare group ID
200
310
  # @param article_id [Integer] Figshare article ID
201
- # @param status [String] pending, approved, rejected, closed
311
+ # @param status [String] One of: pending, approved, rejected, closed
312
+ # @param offset [Numeric] offset is 0 based. Offset and Limit go together
313
+ # @param limit [Numeric]
202
314
  # @yield [Hash] {id, group_id, account_id, assigned_to, article_id, version, comment_count, status, created_date. modified_date }
203
- def curation_review(group_id: nil, article_id: nil, status: nil, &block)
315
+ def curation_review( group_id: nil,
316
+ article_id: nil,
317
+ status: nil,
318
+ offset: nil,
319
+ limit: nil,
320
+ &block
321
+ )
204
322
  args = {}
205
323
  args['group_id'] = group_id unless group_id.nil?
206
324
  args['article_id'] = article_id unless article_id.nil?
207
325
  args['status'] = status unless status.nil?
326
+ args['offset'] = offset unless offset.nil?
327
+ args['limit'] = limit unless limit.nil?
208
328
  # Odd one, as has offset,limit not page,page_size
209
329
  get_paginate(api_query: 'account/institution/reviews', args: args, by_offset: true, &block)
210
330
  end
@@ -220,10 +340,15 @@ module Figshare
220
340
  # Get a certain curation review's comments.
221
341
  #
222
342
  # @param curation_id [Integer] Figshare curation ID
343
+ # @param offset [Numeric] offset is 0 based. Offset and Limit go together
344
+ # @param limit [Numeric]
223
345
  # @yield [Hash] { id, account_id, type, text}
224
- def curation_review_comments(curation_id:, &block)
346
+ def curation_review_comments(curation_id:, offset: nil, limit: nil, &block)
225
347
  # Odd one, as has offset,limit not page,page_size.
226
- get_paginate(api_query: "account/institution/reviews/#{curation_id}/comments", by_offset: true, &block)
348
+ args = {}
349
+ args['offset'] = offset unless offset.nil?
350
+ args['limit'] = limit unless limit.nil?
351
+ get_paginate(api_query: "account/institution/review/#{curation_id}/comments", args: args, by_offset: true, &block)
227
352
  end
228
353
 
229
354
  # Add a new comment to the review.
@@ -231,8 +356,7 @@ module Figshare
231
356
  # @param curation_id [Integer] Figshare curation ID
232
357
  # @param comment [String] Comment text
233
358
  def curation_review_comments_update(curation_id:, comment:, &block)
234
- # Odd one, as has offset,limit not page,page_size.
235
- post(api_query: "account/institution/reviews/#{curation_id}/comments", args: { 'text' => comment }, &block)
359
+ post(api_query: "account/institution/review/#{curation_id}/comments", args: { 'text' => comment }, &block)
236
360
  end
237
361
  end
238
362
  end
data/lib/other.rb CHANGED
@@ -2,10 +2,18 @@ module Figshare
2
2
  # Misc Figshare API calls that they have classified as Other.
3
3
  #
4
4
  class Other < Base
5
+ # Fetch item types
6
+ #
7
+ # @param group_id [Integer]
8
+ # @yield [Array] [{id: 0, name:, string_id:, icon:, public_description:, is_selectable: , url_name: } ]
9
+ def item_types(group_id:, &block)
10
+ get(api_query: 'item_types', args: { 'group_id' => group_id }, &block)
11
+ end
12
+
5
13
  # Search from funding records
6
14
  #
7
15
  # @param search_for [String] string to search for
8
- # @yield [Hash] {id, title, grant_code, funder_name, is_user_defined, url}
16
+ # @yield [Array] [{id, title, grant_code, funder_name, is_user_defined, url}]
9
17
  def search_funding(search_for:, &block)
10
18
  post(api_query: 'account/funding/search', args: { 'search_for' => search_for }, &block)
11
19
  end
@@ -21,21 +29,21 @@ module Figshare
21
29
 
22
30
  # Get public categories
23
31
  #
24
- # @yield [Hash] {parent_id, id, title}
32
+ # @yield [Array] [{parent_id:, id:, title:, path:, source_id:, taxonomy_id:}]
25
33
  def public_categories
26
34
  get(api_query: 'categories', &block)
27
35
  end
28
36
 
29
37
  # Get public licenses
30
38
  #
31
- # @yield [Hash] {value, name, url}
39
+ # @yield [Array] [{value:, name:, url:}]
32
40
  def public_licenses
33
41
  get(api_query: 'licenses', &block)
34
42
  end
35
43
 
36
44
  # Get private licenses
37
45
  #
38
- # @yield [Hash] {value, name, url}
46
+ # @yield [Array] [{value:, name:, url:}]
39
47
  def private_account_licenses
40
48
  get(api_query: 'account/licenses', &block)
41
49
  end