nsrr 0.1.1 → 0.2.0.rc
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/LICENSE +1 -1
- data/README.md +25 -25
- data/lib/nsrr/commands/download.rb +18 -9
- data/lib/nsrr/helpers/authorization.rb +22 -0
- data/lib/nsrr/models/dataset.rb +14 -17
- data/lib/nsrr/models/file.rb +2 -1
- data/lib/nsrr/version.rb +3 -3
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8c27aa5e00981e30edb2fd1e54be534f2080491
|
4
|
+
data.tar.gz: eedc928285c028bc7355ed1fa6a044978ce37fe7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b90b6320bedafd5eccf91672344ba0b5b5e27726abf0f3c3719bccdad996528af2a3ea66ca498aaa2b1818aa89068ff9c92d5301772f5b8ace20b7eaa32278f5
|
7
|
+
data.tar.gz: 72b6f6537adb848bc90e303562d7cc24bba363ca31d9b6818e3ba320af966cf7fa4abb96139c33a2a9f79990b3b40ad701047fecdd1e5fc16f38b3765c6c38bc
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## 0.2.0
|
2
|
+
|
3
|
+
### Enhancements
|
4
|
+
- The `nsrr download` command now allows users to download files from private datasets
|
5
|
+
- The `nsrr download` command provides better feedback on the validity of the authorization token provided by the user
|
6
|
+
- Use of Ruby 2.2.1 is now recommended
|
7
|
+
|
8
|
+
### Bug Fixes
|
9
|
+
- Fixed an issue preventing public files from being downloaded when an invalid token was entered
|
10
|
+
|
1
11
|
## 0.1.1 (October 23, 2014)
|
2
12
|
|
3
13
|
### Enhancements
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -80,18 +80,18 @@ $ nsrr console
|
|
80
80
|
```
|
81
81
|
> d = Dataset.find 'shhs'
|
82
82
|
> d.download
|
83
|
+
Get your token here: https://sleepdata.org/token
|
84
|
+
Enter your token: AUTHORIZED
|
85
|
+
File Check: md5
|
86
|
+
Depth: recursive
|
83
87
|
|
84
|
-
File Integrity Check Method: md5
|
85
|
-
Depth: recursive
|
86
|
-
Get your token here: https://sleepdata.org/token
|
87
|
-
Please enter your download token:
|
88
88
|
create shhs/
|
89
89
|
create shhs/datasets
|
90
|
-
identical shhs-cvd-dataset-0.
|
91
|
-
identical shhs-data-dictionary-0.
|
92
|
-
identical shhs-data-dictionary-0.
|
93
|
-
identical shhs-data-dictionary-0.
|
94
|
-
identical shhs1-dataset-0.
|
90
|
+
identical shhs-cvd-dataset-0.6.0.csv
|
91
|
+
identical shhs-data-dictionary-0.6.0-domains.csv
|
92
|
+
identical shhs-data-dictionary-0.6.0-forms.csv
|
93
|
+
identical shhs-data-dictionary-0.6.0-variables.csv
|
94
|
+
identical shhs1-dataset-0.6.0.csv
|
95
95
|
...
|
96
96
|
```
|
97
97
|
|
@@ -115,10 +115,10 @@ For example to download only the shhs1 edfs folder and skip MD5 file validation:
|
|
115
115
|
> d = Dataset.find 'shhs'
|
116
116
|
> d.download('edfs/shhs1', method: 'fast', depth: 'shallow')
|
117
117
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
118
|
+
Get your token here: https://sleepdata.org/token
|
119
|
+
Enter your token: AUTHORIZED
|
120
|
+
File Check: md5
|
121
|
+
Depth: recursive
|
122
122
|
|
123
123
|
create shhs/edfs/shhs1
|
124
124
|
download 100001.EDF
|
@@ -134,15 +134,15 @@ You can type `Ctrl-C` to pause the download, and retype the command to restart:
|
|
134
134
|
> d = Dataset.find 'shhs'
|
135
135
|
> d.download
|
136
136
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
137
|
+
Get your token here: https://sleepdata.org/token
|
138
|
+
Enter your token: AUTHORIZED
|
139
|
+
File Check: md5
|
140
|
+
Depth: recursive
|
141
141
|
|
142
142
|
create shhs/
|
143
143
|
create shhs/datasets
|
144
|
-
download shhs-cvd-dataset-0.
|
145
|
-
download shhs-data-dictionary-0.
|
144
|
+
download shhs-cvd-dataset-0.6.0.csv
|
145
|
+
download shhs-data-dictionary-0.6.0-domains.csv
|
146
146
|
^C
|
147
147
|
Interrupted
|
148
148
|
|
@@ -152,15 +152,15 @@ Finished in 4.384734 seconds.
|
|
152
152
|
|
153
153
|
> d.download
|
154
154
|
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
155
|
+
Get your token here: https://sleepdata.org/token
|
156
|
+
Enter your token: AUTHORIZED
|
157
|
+
File Check: md5
|
158
|
+
Depth: recursive
|
159
159
|
|
160
160
|
create shhs/
|
161
161
|
create shhs/datasets
|
162
|
-
identical shhs-cvd-dataset-0.
|
163
|
-
identical shhs-data-dictionary-0.
|
162
|
+
identical shhs-cvd-dataset-0.6.0.csv
|
163
|
+
identical shhs-data-dictionary-0.6.0-domains.csv
|
164
164
|
^C
|
165
165
|
Interrupted
|
166
166
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'colorize'
|
2
2
|
|
3
3
|
require 'nsrr/models/all'
|
4
|
+
require 'nsrr/helpers/authorization'
|
4
5
|
|
5
6
|
module Nsrr
|
6
7
|
module Commands
|
@@ -11,7 +12,7 @@ module Nsrr
|
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
14
|
-
attr_reader :dataset_slug, :folder, :file_comparison, :depth
|
15
|
+
attr_reader :token, :dataset_slug, :folder, :file_comparison, :depth
|
15
16
|
|
16
17
|
def initialize(argv)
|
17
18
|
(@token, argv) = parse_parameter_with_value(argv, ['token'], '')
|
@@ -21,19 +22,27 @@ module Nsrr
|
|
21
22
|
@folder = (argv[1].to_s.split('/')[1..-1] || []).join('/')
|
22
23
|
end
|
23
24
|
|
25
|
+
# Run with Authorization
|
24
26
|
def run
|
25
|
-
|
26
|
-
if @dataset
|
27
|
-
@dataset.download_token = @token
|
28
|
-
@dataset.download(@folder, depth: @depth, method: @file_comparison)
|
29
|
-
else
|
27
|
+
begin
|
30
28
|
if @dataset_slug == nil
|
31
29
|
puts "Please specify a dataset: " + "nsrr download DATASET".colorize(:white)
|
30
|
+
puts "Read more on the download command here:"
|
31
|
+
puts " " + "https://github.com/nsrr/nsrr-gem".colorize( :blue ).on_white.underline
|
32
32
|
else
|
33
|
-
|
33
|
+
@token = Nsrr::Helpers::Authorization.get_token(@token) if @token.to_s == ''
|
34
|
+
@dataset = Dataset.find(@dataset_slug, @token)
|
35
|
+
if @dataset
|
36
|
+
@dataset.download(@folder, depth: @depth, method: @file_comparison)
|
37
|
+
else
|
38
|
+
puts "\nThe dataset " + "#{@dataset_slug}".colorize(:white) + " was not found."
|
39
|
+
auth_section = (@token.to_s == '' ? '' : "/a/#{@token}" )
|
40
|
+
datasets = Nsrr::Helpers::JsonRequest.get("#{Nsrr::WEBSITE}#{auth_section}/datasets.json")
|
41
|
+
puts "Did you mean one of: #{datasets.collect{|d| d['slug'].colorize(:white)}.sort.join(', ')}" if datasets and datasets.size > 0
|
42
|
+
end
|
34
43
|
end
|
35
|
-
|
36
|
-
puts "
|
44
|
+
rescue Interrupt
|
45
|
+
puts "\nINTERRUPTED".colorize(:red)
|
37
46
|
end
|
38
47
|
end
|
39
48
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'nsrr/helpers/json_request'
|
2
|
+
|
3
|
+
module Nsrr
|
4
|
+
module Helpers
|
5
|
+
class Authorization
|
6
|
+
def self.get_token(token)
|
7
|
+
puts " Get your token here: " + "#{Nsrr::WEBSITE}/token".colorize( :blue ).on_white.underline
|
8
|
+
print " Enter your token: "
|
9
|
+
token = STDIN.noecho(&:gets).chomp if token.to_s.strip == ''
|
10
|
+
|
11
|
+
response = Nsrr::Helpers::JsonRequest.get("#{Nsrr::WEBSITE}/account/#{token}/profile.json")
|
12
|
+
|
13
|
+
if response.kind_of?(Hash) and response['authenticated']
|
14
|
+
puts "AUTHORIZED".colorize(:green) + " as " + "#{response['first_name']} #{response['last_name']}".colorize( :white )
|
15
|
+
else
|
16
|
+
puts "UNAUTHORIZED".colorize(:red) + " Public Access Only"
|
17
|
+
end
|
18
|
+
token
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/nsrr/models/dataset.rb
CHANGED
@@ -6,16 +6,18 @@ require 'io/console'
|
|
6
6
|
require 'nsrr/helpers/constants'
|
7
7
|
require 'nsrr/helpers/hash_helper'
|
8
8
|
require 'nsrr/helpers/json_request'
|
9
|
+
require 'nsrr/helpers/authorization'
|
9
10
|
|
10
11
|
require 'nsrr/models/file'
|
11
12
|
|
12
13
|
module Nsrr
|
13
14
|
module Models
|
14
15
|
class Dataset
|
15
|
-
def self.find(slug)
|
16
|
-
|
16
|
+
def self.find(slug, token = nil)
|
17
|
+
auth_section = (token.to_s == '' ? '' : "/a/#{token}")
|
18
|
+
json = Nsrr::Helpers::JsonRequest.get("#{Nsrr::WEBSITE}#{auth_section}/datasets/#{slug}.json")
|
17
19
|
if json
|
18
|
-
new(json)
|
20
|
+
new(json, token)
|
19
21
|
else
|
20
22
|
nil
|
21
23
|
end
|
@@ -24,16 +26,17 @@ module Nsrr
|
|
24
26
|
attr_accessor :download_token
|
25
27
|
attr_reader :slug, :name
|
26
28
|
|
27
|
-
def initialize(json = {})
|
29
|
+
def initialize(json = {}, token = nil)
|
28
30
|
@slug = json['slug']
|
29
31
|
@name = json['name']
|
30
32
|
@files = {}
|
31
|
-
@download_token =
|
33
|
+
@download_token = token
|
32
34
|
end
|
33
35
|
|
34
36
|
def files(path = nil)
|
35
37
|
@files[path] ||= begin
|
36
|
-
|
38
|
+
auth_section = (@download_token.to_s == '' ? '' : "/a/#{@download_token}" )
|
39
|
+
json = Nsrr::Helpers::JsonRequest.get("#{Nsrr::WEBSITE}/datasets/#{@slug}#{auth_section}/json_manifest/#{path}")
|
37
40
|
(json || []).collect{|file_json| Nsrr::Models::File.new(file_json)}
|
38
41
|
end
|
39
42
|
end
|
@@ -61,10 +64,11 @@ module Nsrr
|
|
61
64
|
@files_failed = 0
|
62
65
|
|
63
66
|
begin
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
67
|
+
puts " File Check: " + options[:method].to_s.colorize(:white)
|
68
|
+
puts " Depth: " + options[:depth].to_s.colorize(:white)
|
69
|
+
puts ""
|
70
|
+
if @download_token == nil
|
71
|
+
@download_token = Nsrr::Helpers::Authorization.get_token(@download_token)
|
68
72
|
end
|
69
73
|
|
70
74
|
@start_time = Time.now
|
@@ -115,13 +119,6 @@ module Nsrr
|
|
115
119
|
@folders_created += 1
|
116
120
|
end
|
117
121
|
|
118
|
-
def set_download_token
|
119
|
-
puts " Get your token here: " + "#{Nsrr::WEBSITE}/token".colorize( :blue ).on_white.underline
|
120
|
-
print "Please enter your download token: "
|
121
|
-
@download_token = STDIN.noecho(&:gets).chomp
|
122
|
-
puts ""
|
123
|
-
end
|
124
|
-
|
125
122
|
end
|
126
123
|
end
|
127
124
|
end
|
data/lib/nsrr/models/file.rb
CHANGED
@@ -52,7 +52,8 @@ module Nsrr
|
|
52
52
|
# If the second download and check fail, the file is marked as failed, and the downloader continues to the subsequent file.
|
53
53
|
def force_download(path, token, method)
|
54
54
|
download_folder = ::File.join(Dir.pwd, path.to_s, @name.to_s)
|
55
|
-
|
55
|
+
auth_section = (token.to_s == '' ? '' : "/a/#{token}")
|
56
|
+
download_url = "#{Nsrr::WEBSITE}/datasets/#{@dataset_slug}/files#{auth_section}/m/nsrr-gem-v#{Nsrr::VERSION::STRING.gsub('.', '-')}/#{@file_path.to_s}"
|
56
57
|
download_request = Nsrr::Helpers::DownloadRequest.new(download_url, download_folder)
|
57
58
|
download_request.get
|
58
59
|
|
data/lib/nsrr/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nsrr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0.rc
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Remo Mueller
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -98,6 +98,7 @@ files:
|
|
98
98
|
- lib/nsrr/commands/console.rb
|
99
99
|
- lib/nsrr/commands/download.rb
|
100
100
|
- lib/nsrr/commands/update.rb
|
101
|
+
- lib/nsrr/helpers/authorization.rb
|
101
102
|
- lib/nsrr/helpers/constants.rb
|
102
103
|
- lib/nsrr/helpers/download_request.rb
|
103
104
|
- lib/nsrr/helpers/hash_helper.rb
|
@@ -122,12 +123,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
123
|
version: '0'
|
123
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
125
|
requirements:
|
125
|
-
- - "
|
126
|
+
- - ">"
|
126
127
|
- !ruby/object:Gem::Version
|
127
|
-
version:
|
128
|
+
version: 1.3.1
|
128
129
|
requirements: []
|
129
130
|
rubyforge_project:
|
130
|
-
rubygems_version: 2.
|
131
|
+
rubygems_version: 2.4.6
|
131
132
|
signing_key:
|
132
133
|
specification_version: 4
|
133
134
|
summary: The official ruby gem to simplify file downloads and dataset integration
|