nsrr 0.4.0.rc → 7.0.0
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 +5 -5
- data/CHANGELOG.md +26 -1
- data/LICENSE +20 -111
- data/README.md +32 -50
- data/Rakefile +4 -4
- data/bin/nsrr +1 -1
- data/lib/nsrr.rb +11 -11
- data/lib/nsrr/commands/console.rb +3 -3
- data/lib/nsrr/commands/download.rb +41 -21
- data/lib/nsrr/commands/update.rb +8 -8
- data/lib/nsrr/helpers/authorization.rb +9 -8
- data/lib/nsrr/helpers/color.rb +100 -0
- data/lib/nsrr/helpers/constants.rb +1 -1
- data/lib/nsrr/helpers/download_request.rb +9 -12
- data/lib/nsrr/helpers/hash_helper.rb +4 -1
- data/lib/nsrr/helpers/json_request.rb +32 -19
- data/lib/nsrr/models/all.rb +1 -1
- data/lib/nsrr/models/dataset.rb +43 -37
- data/lib/nsrr/models/file.rb +34 -33
- data/lib/nsrr/version.rb +4 -4
- data/nsrr.gemspec +18 -15
- metadata +15 -29
data/lib/nsrr/models/file.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "digest/md5"
|
4
|
+
require "nsrr/helpers/color"
|
5
|
+
require "nsrr/helpers/constants"
|
6
|
+
require "nsrr/helpers/download_request"
|
6
7
|
|
7
8
|
module Nsrr
|
8
9
|
module Models
|
@@ -11,25 +12,25 @@ module Nsrr
|
|
11
12
|
attr_reader :dataset_slug, :full_path, :folder, :file_name, :is_file, :file_size, :file_checksum_md5, :archived
|
12
13
|
|
13
14
|
def initialize(json = {})
|
14
|
-
@dataset_slug = json[
|
15
|
-
@full_path = json[
|
16
|
-
@folder = json[
|
17
|
-
@file_name = json[
|
18
|
-
@is_file = json[
|
19
|
-
@file_size = json[
|
20
|
-
@file_checksum_md5 = json[
|
21
|
-
@archived = json[
|
22
|
-
@latest_checksum =
|
15
|
+
@dataset_slug = json["dataset"]
|
16
|
+
@full_path = json["full_path"]
|
17
|
+
@folder = json["folder"]
|
18
|
+
@file_name = json["file_name"]
|
19
|
+
@is_file = json["is_file"]
|
20
|
+
@file_size = json["file_size"]
|
21
|
+
@file_checksum_md5 = json["file_checksum_md5"]
|
22
|
+
@archived = json["archived"]
|
23
|
+
@latest_checksum = ""
|
23
24
|
@latest_file_size = -1
|
24
25
|
end
|
25
26
|
|
26
27
|
# method:
|
27
|
-
#
|
28
|
-
#
|
29
|
-
#
|
28
|
+
# "md5" => [default] Checks if a downloaded file exists with the exact md5 as the online version, if so, skips that file
|
29
|
+
# "fresh" => Downloads every file without checking if it was already downloaded
|
30
|
+
# "fast" => Only checks if a download file exists with the same file size as the online version, if so, skips that file
|
30
31
|
def download(method, path, token)
|
31
|
-
do_md5_check = (method ==
|
32
|
-
redownload_all = (method ==
|
32
|
+
do_md5_check = (method == "md5")
|
33
|
+
redownload_all = (method == "fresh")
|
33
34
|
|
34
35
|
if do_md5_check
|
35
36
|
if md5_matches?(path)
|
@@ -55,14 +56,14 @@ module Nsrr
|
|
55
56
|
# If the second download and check fail, the file is marked as failed, and the downloader continues to the subsequent file.
|
56
57
|
def force_download(path, token, method)
|
57
58
|
download_folder = ::File.join(Dir.pwd, path.to_s, @file_name.to_s)
|
58
|
-
auth_section = (token.to_s ==
|
59
|
-
download_url = "#{Nsrr::WEBSITE}/datasets/#{@dataset_slug}/files#{auth_section}/m/nsrr-gem-v#{Nsrr::VERSION::STRING.gsub(
|
59
|
+
auth_section = (token.to_s == "" ? "" : "/a/#{token}")
|
60
|
+
download_url = "#{Nsrr::WEBSITE}/datasets/#{@dataset_slug}/files#{auth_section}/m/nsrr-gem-v#{Nsrr::VERSION::STRING.gsub(".", "-")}/#{@full_path.to_s}"
|
60
61
|
download_request = Nsrr::Helpers::DownloadRequest.new(download_url, download_folder)
|
61
62
|
download_request.get
|
62
63
|
download_success = false
|
63
|
-
if download_request.error.to_s ==
|
64
|
+
if download_request.error.to_s == ""
|
64
65
|
# Check to see if the file downloaded correctly
|
65
|
-
# If the file size
|
66
|
+
# If the file size does not match, attempt one additional download
|
66
67
|
download_success = did_download_succeed?(method, path)
|
67
68
|
unless download_success
|
68
69
|
download_request = Nsrr::Helpers::DownloadRequest.new(download_url, download_folder)
|
@@ -70,12 +71,12 @@ module Nsrr
|
|
70
71
|
download_success = did_download_succeed?(method, path)
|
71
72
|
end
|
72
73
|
end
|
73
|
-
if download_request.error.to_s ==
|
74
|
-
puts " downloaded".
|
74
|
+
if download_request.error.to_s == "" and download_success
|
75
|
+
puts " downloaded".green + " #{@file_name}"
|
75
76
|
download_request.file_size
|
76
|
-
elsif download_request.error.to_s ==
|
77
|
-
puts " failed".
|
78
|
-
if method ==
|
77
|
+
elsif download_request.error.to_s == ""
|
78
|
+
puts " failed".red + " #{@file_name}"
|
79
|
+
if method == "fast"
|
79
80
|
puts " File size mismatch, expected: #{@file_size}"
|
80
81
|
puts " actual: #{@latest_file_size}"
|
81
82
|
else
|
@@ -83,17 +84,17 @@ module Nsrr
|
|
83
84
|
puts " actual: #{@latest_checksum}"
|
84
85
|
end
|
85
86
|
::File.delete(download_folder) if ::File.exist?(download_folder)
|
86
|
-
|
87
|
+
"fail"
|
87
88
|
else
|
88
|
-
puts
|
89
|
+
puts " failed".red + " #{@file_name}"
|
89
90
|
puts " #{download_request.error}"
|
90
|
-
|
91
|
+
"fail"
|
91
92
|
end
|
92
93
|
end
|
93
94
|
|
94
95
|
def skip
|
95
|
-
puts
|
96
|
-
|
96
|
+
puts " identical".blue + " #{file_name}"
|
97
|
+
"skip"
|
97
98
|
end
|
98
99
|
|
99
100
|
def md5_matches?(path)
|
@@ -105,7 +106,7 @@ module Nsrr
|
|
105
106
|
@latest_checksum = if ::File.exist?(download_folder)
|
106
107
|
Digest::MD5.file(download_folder).hexdigest
|
107
108
|
else
|
108
|
-
|
109
|
+
""
|
109
110
|
end
|
110
111
|
@latest_checksum
|
111
112
|
end
|
@@ -125,7 +126,7 @@ module Nsrr
|
|
125
126
|
end
|
126
127
|
|
127
128
|
def did_download_succeed?(method, path)
|
128
|
-
if method ==
|
129
|
+
if method == "fast"
|
129
130
|
file_size_matches?(path)
|
130
131
|
else
|
131
132
|
md5_matches?(path)
|
data/lib/nsrr/version.rb
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
module Nsrr
|
4
4
|
module VERSION #:nodoc:
|
5
|
-
MAJOR =
|
6
|
-
MINOR =
|
5
|
+
MAJOR = 7
|
6
|
+
MINOR = 0
|
7
7
|
TINY = 0
|
8
|
-
BUILD =
|
8
|
+
BUILD = nil # "pre", "beta1", "beta2", "rc", "rc2", nil
|
9
9
|
|
10
|
-
STRING = [MAJOR, MINOR, TINY, BUILD].compact.join(
|
10
|
+
STRING = [MAJOR, MINOR, TINY, BUILD].compact.join(".")
|
11
11
|
end
|
12
12
|
end
|
data/nsrr.gemspec
CHANGED
@@ -8,27 +8,30 @@
|
|
8
8
|
# gem list -r nsrr
|
9
9
|
# gem install nsrr
|
10
10
|
|
11
|
-
lib = File.expand_path(
|
11
|
+
lib = File.expand_path("lib", __dir__)
|
12
12
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
13
|
-
require
|
13
|
+
require "nsrr/version"
|
14
14
|
|
15
15
|
Gem::Specification.new do |spec|
|
16
|
-
spec.name =
|
16
|
+
spec.name = "nsrr"
|
17
17
|
spec.version = Nsrr::VERSION::STRING
|
18
|
-
spec.authors = [
|
19
|
-
spec.email = [
|
20
|
-
spec.summary =
|
21
|
-
spec.description =
|
22
|
-
spec.homepage =
|
23
|
-
spec.license = 'CC-BY-NC-SA-3.0'
|
18
|
+
spec.authors = ["Remo Mueller"]
|
19
|
+
spec.email = ["remosm@gmail.com"]
|
20
|
+
spec.summary = "Download files easily from the NSRR website, https://sleepdata.org"
|
21
|
+
spec.description = "The official ruby gem to download files and datasets from the [NSRR](https://sleepdata.org)"
|
22
|
+
spec.homepage = "https://github.com/nsrr/nsrr-gem"
|
24
23
|
|
25
|
-
spec.
|
24
|
+
spec.required_ruby_version = ">= 2.7.2"
|
25
|
+
spec.required_rubygems_version = ">= 2.6.3"
|
26
|
+
|
27
|
+
spec.license = "MIT"
|
28
|
+
|
29
|
+
spec.files = Dir["{bin,lib}/**/*"] + ["CHANGELOG.md", "LICENSE", "Rakefile", "README.md", "nsrr.gemspec"]
|
26
30
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
27
31
|
spec.test_files = spec.files.grep(%r{^(test)/})
|
28
|
-
spec.require_paths = [
|
32
|
+
spec.require_paths = ["lib"]
|
29
33
|
|
30
|
-
spec.add_dependency
|
31
|
-
spec.add_dependency
|
32
|
-
spec.add_dependency
|
33
|
-
spec.add_dependency 'rake'
|
34
|
+
spec.add_dependency "bundler", ">= 1.3.0"
|
35
|
+
spec.add_dependency "minitest"
|
36
|
+
spec.add_dependency "rake"
|
34
37
|
end
|
metadata
CHANGED
@@ -1,43 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nsrr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 7.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Remo Mueller
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.13'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.13'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: colorize
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
17
|
+
- - ">="
|
32
18
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
19
|
+
version: 1.3.0
|
34
20
|
type: :runtime
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
|
-
- - "
|
24
|
+
- - ">="
|
39
25
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
26
|
+
version: 1.3.0
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: minitest
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,6 +70,7 @@ files:
|
|
84
70
|
- lib/nsrr/commands/download.rb
|
85
71
|
- lib/nsrr/commands/update.rb
|
86
72
|
- lib/nsrr/helpers/authorization.rb
|
73
|
+
- lib/nsrr/helpers/color.rb
|
87
74
|
- lib/nsrr/helpers/constants.rb
|
88
75
|
- lib/nsrr/helpers/download_request.rb
|
89
76
|
- lib/nsrr/helpers/hash_helper.rb
|
@@ -95,9 +82,9 @@ files:
|
|
95
82
|
- nsrr.gemspec
|
96
83
|
homepage: https://github.com/nsrr/nsrr-gem
|
97
84
|
licenses:
|
98
|
-
-
|
85
|
+
- MIT
|
99
86
|
metadata: {}
|
100
|
-
post_install_message:
|
87
|
+
post_install_message:
|
101
88
|
rdoc_options: []
|
102
89
|
require_paths:
|
103
90
|
- lib
|
@@ -105,16 +92,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
105
92
|
requirements:
|
106
93
|
- - ">="
|
107
94
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
95
|
+
version: 2.7.2
|
109
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
97
|
requirements:
|
111
|
-
- - "
|
98
|
+
- - ">="
|
112
99
|
- !ruby/object:Gem::Version
|
113
|
-
version:
|
100
|
+
version: 2.6.3
|
114
101
|
requirements: []
|
115
|
-
|
116
|
-
|
117
|
-
signing_key:
|
102
|
+
rubygems_version: 3.2.16
|
103
|
+
signing_key:
|
118
104
|
specification_version: 4
|
119
105
|
summary: Download files easily from the NSRR website, https://sleepdata.org
|
120
106
|
test_files: []
|