dataverse 0.1.7 → 0.1.10

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 37541ec28714a720b0b89aa7cd2edb75ed6b54f3dcbba34ee5abee4616698713
4
- data.tar.gz: a3d02df5cdbae33b1f1727b8789ff43917b0aa4a5ad452992b9966e16d8c5222
3
+ metadata.gz: 2da0e7678288d4f1091c613efaef0214423da1c678f5dea4f905ba0117d6309e
4
+ data.tar.gz: 5529f3d38a3625932b4e181dcbef378bc8dc92edb9bdd8dd4a60a3044cb2c786
5
5
  SHA512:
6
- metadata.gz: 77f434897ca319d5c427b4397c21099f971f1ffe8c81d42775d650a706a97737b3d02b3cf138c37d630721eb85bd5dfa3412cec563a3caad684ea5bbce376dc8
7
- data.tar.gz: 41ef2bd28fe675ef98e7d2fce66aa7c4be932d3f32d7630123d84d9afa0800fe981995430cbc19febe67dde5f03789b2cbfafa97111dca75aae085f159fd51d9
6
+ metadata.gz: b9217fc9aa689af803b1658e3d2549aa7f269f027afc2776d9c0d211a26df2dbe98c708fe64bfa20179835f5089afae147a8bf60d87f4e4c8bec5a0a8c15d0ba
7
+ data.tar.gz: a5adaec85a22668edd06b6b0598233bf78335cec5fd62882b902a5d57b99859fb4fd3c486597c127450fbf42b8f6cbe64cd14c2cf25ebf00a8a7d2f5b0c09226
data/.gitignore CHANGED
@@ -14,3 +14,4 @@
14
14
 
15
15
  /*.json
16
16
  /*.xml
17
+ /*.rb
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dataverse (0.1.7)
4
+ dataverse (0.1.10)
5
5
  rest-client (~> 2.0)
6
6
 
7
7
  GEM
@@ -14,12 +14,12 @@ GEM
14
14
  unf (>= 0.0.5, < 1.0.0)
15
15
  dotenv (2.7.6)
16
16
  http-accept (1.7.0)
17
- http-cookie (1.0.4)
17
+ http-cookie (1.0.5)
18
18
  domain_name (~> 0.5)
19
19
  method_source (1.0.0)
20
20
  mime-types (3.4.1)
21
21
  mime-types-data (~> 3.2015)
22
- mime-types-data (3.2022.0105)
22
+ mime-types-data (3.2023.0218.1)
23
23
  netrc (0.11.0)
24
24
  pry (0.14.1)
25
25
  coderay (~> 1.1)
@@ -45,7 +45,7 @@ GEM
45
45
  rspec-support (3.10.3)
46
46
  unf (0.1.4)
47
47
  unf_ext
48
- unf_ext (0.0.8.1)
48
+ unf_ext (0.0.8.2)
49
49
 
50
50
  PLATFORMS
51
51
  ruby
@@ -60,4 +60,4 @@ DEPENDENCIES
60
60
  rspec (~> 3.0)
61
61
 
62
62
  BUNDLED WITH
63
- 2.2.32
63
+ 2.3.25
@@ -49,7 +49,7 @@ module Dataverse
49
49
  self.class.api_call(url, **args)
50
50
  end
51
51
 
52
- def self.api_call(url, method: :get, headers: {}, params: {}, body: nil, format: :api, block: nil, options: {})
52
+ def self.api_call(url, method: :get, headers: {}, params: {}, body: nil, format: :api, block: nil, timeout: 120, options: {})
53
53
 
54
54
  unless ENV.has_key?('API_URL') && ENV.has_key?('API_TOKEN')
55
55
  raise Error.new("Set environment variables 'API_URL' and 'API_TOKEN'")
@@ -83,6 +83,7 @@ module Dataverse
83
83
  url: url,
84
84
  headers: headers,
85
85
  payload: body,
86
+ timeout: timeout,
86
87
  # log: STDOUT,
87
88
  **options
88
89
  )
@@ -117,8 +118,8 @@ module Dataverse
117
118
  end
118
119
  end
119
120
 
120
- # if log = ENV['RESTCLIENT_LOG']
121
- # RestClient.log = STDOUT if log.upcase == 'STDOUT'
122
- # RestClient.log = STDERR if log.upcase == 'STDERR'
123
- # RestClient.log = log
124
- # end
121
+ if log = ENV['RESTCLIENT_LOG']
122
+ RestClient.log = STDOUT if log.upcase == 'STDOUT'
123
+ RestClient.log = STDERR if log.upcase == 'STDERR'
124
+ RestClient.log = log
125
+ end
@@ -286,12 +286,14 @@ module Dataverse
286
286
 
287
287
  def process_data(data)
288
288
  return {} if data.nil? || data.empty?
289
+ return {} unless data.has_key?('latestVersion')
289
290
  version_data = data.delete('latestVersion')
290
291
  process_version_data(version_data)
291
292
  data
292
293
  end
293
294
 
294
295
  def process_version_data(data)
296
+ return nil unless data
295
297
  metadata = pack_metadata(data.delete('metadataBlocks'))
296
298
  files = pack_files(data.delete('files'))
297
299
  version = get_version_number(data)
@@ -318,7 +320,7 @@ module Dataverse
318
320
 
319
321
  def pack_metadata(metadata)
320
322
  data = {}
321
- metadata.each_value do |block|
323
+ (metadata || {}).each_value do |block|
322
324
  block['fields'].each do |field|
323
325
  data[field['typeName']] = field_to_value(field)
324
326
  end
@@ -74,27 +74,65 @@ module Dataverse
74
74
  api_call("dataverses/#{id}/#{url}", **args)
75
75
  end
76
76
 
77
- def children
78
- @children ||= begin
79
- result = []
80
- data = call("contents")
81
- data.each do |x|
77
+ def each_child(&block)
78
+ data = call("contents")
79
+ data.each do |x|
80
+ begin
82
81
  case x['type']
83
82
  when 'dataverse'
84
- result << Dataverse.id(x['id'])
83
+ dv = Dataverse.id(x['id'])
84
+ data << (block_given? ? yield(child) : child)
85
+
85
86
  when 'dataset'
86
- result << Dataset.id(x['id'])
87
+ ds = Dataset.id(x['id'])
88
+ result << ds if ds.version
87
89
  else
88
90
  raise Error.new("Unsupported type: #{x['type']} (#{x['name']})")
89
91
  end
92
+ rescue => e
93
+ puts "ERROR: Skipped creating #{x['type']} object '#{x['id']}' : '#{e.message}'."
94
+ end
95
+ end
96
+ result
97
+ end
98
+
99
+
100
+ def children(&block)
101
+ if @children && @children.is_a?(Array)
102
+ @children.each { |child| yield(child) } if block_given?
103
+ else
104
+ @children = begin
105
+ result = []
106
+ data = call("contents")
107
+ data.each do |x|
108
+ begin
109
+ case x['type']
110
+ when 'dataverse'
111
+ dv = Dataverse.id(x['id'])
112
+ yield dv if block_given?
113
+ result << dv
114
+ when 'dataset'
115
+ ds = Dataset.id(x['id'])
116
+ if ds.version
117
+ yield ds if block_given?
118
+ result << ds
119
+ end
120
+ else
121
+ raise Error.new("Unsupported type: #{x['type']} (#{x['name']})")
122
+ end
123
+ rescue => e
124
+ puts "ERROR: Skipped #{x['type']} object '#{x['id']}' : '#{e.message}'."
125
+ end
126
+ end
127
+ result
90
128
  end
91
- result
92
129
  end
130
+ @children
93
131
  end
94
132
 
95
133
  def each_dataverse(&block)
96
134
  data = []
97
- children.each do |child|
135
+ children do |child|
98
136
  if child.is_a?(Dataverse)
99
137
  data << (block_given? ? yield(child) : child)
100
138
  data += child.each_dataverse(&block)
@@ -105,7 +143,7 @@ module Dataverse
105
143
 
106
144
  def each_dataset(&block)
107
145
  data = []
108
- children.each do |child|
146
+ children do |child|
109
147
  if child.is_a?(Dataverse)
110
148
  data += child.each_dataset(&block)
111
149
  elsif child.is_a?(Dataset)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dataverse
4
- VERSION = "0.1.7"
4
+ VERSION = "0.1.10"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dataverse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kris Dekeyser
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-21 00:00:00.000000000 Z
11
+ date: 2023-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  requirements: []
76
- rubygems_version: 3.2.32
76
+ rubygems_version: 3.4.13
77
77
  signing_key:
78
78
  specification_version: 4
79
79
  summary: Dataverse API.