kar 0.1.0 → 0.1.1
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 +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/kar/uritask.rb +44 -15
- data/lib/kar/version.rb +1 -1
- metadata +3 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bd14a44367840ddf1ed8e199a4682bd4cfad4f734d06d3220d7aee30e92ea64c
|
|
4
|
+
data.tar.gz: fdd7c35b0aded9a6c25de853e6274cf4cd4a524c4f6113ceee710182d6188ee7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 21cbecd6b7218e5d17d081db576e90015688d5957d796b65899138ee6e12a42a1d7a44447e70d16b65992fe2b7b0129eebe6a6a34c8d455a5c596aa1c15bea78
|
|
7
|
+
data.tar.gz: 40c5df4efcce865bb3f03fb9483a0b33313acbf6f6462bb33b89b2481dfae8497d7c664251f51b8b0d43ce84e4cc4e0ee3df28d00ecd85c79e9a20f25a43a9de
|
data/CHANGELOG.md
CHANGED
data/lib/kar/uritask.rb
CHANGED
|
@@ -9,6 +9,8 @@ module Kar
|
|
|
9
9
|
# Instanctiated in {DSL#download}
|
|
10
10
|
class URITask < Rake::TaskLib
|
|
11
11
|
module Util
|
|
12
|
+
REDIRECT_LIMIT = 3
|
|
13
|
+
|
|
12
14
|
module_function
|
|
13
15
|
|
|
14
16
|
# @todo Consider return value type
|
|
@@ -18,27 +20,54 @@ module Kar
|
|
|
18
20
|
# @param headers [Hash<String, Object?>] HTTP headers
|
|
19
21
|
# @return [String] File path content saved, same to +to+
|
|
20
22
|
# @return [nil] if remote file responded with 304 Not Modified
|
|
21
|
-
def fetch_http(uri, to, headers = {})
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
23
|
+
def fetch_http(uri, to, headers = {}, redirected = 0)
|
|
24
|
+
if redirected > REDIRECT_LIMIT
|
|
25
|
+
raise "Too many HTTP redirects"
|
|
26
|
+
end
|
|
27
|
+
Net::HTTP.start uri.host, uri.port, use_ssl: uri.scheme == "https" do |http|
|
|
28
|
+
request = Net::HTTP::Get.new(uri, headers)
|
|
29
|
+
http.request request do |response|
|
|
30
|
+
case response
|
|
31
|
+
when Net::HTTPNotModified
|
|
32
|
+
# noop
|
|
33
|
+
when Net::HTTPOK
|
|
34
|
+
File.open to, "wb" do |file|
|
|
35
|
+
response.read_body do |chunk|
|
|
36
|
+
file.write chunk
|
|
37
|
+
end
|
|
38
|
+
now = Time.now
|
|
39
|
+
last_modified = response["last-modified"]
|
|
40
|
+
mtime = last_modified ? Time.httpdate(last_modified) : now
|
|
41
|
+
File.utime now, Time.httpdate(response["Last-Modified"]), to
|
|
36
42
|
end
|
|
43
|
+
when Net::HTTPRedirection
|
|
44
|
+
fetch_http URI(response["location"]), to, headers, redirected + 1
|
|
45
|
+
else
|
|
46
|
+
raise "#{response.code} #{response.message}\n#{response.body}"
|
|
37
47
|
end
|
|
38
48
|
end
|
|
39
49
|
end
|
|
50
|
+
|
|
40
51
|
to
|
|
41
52
|
end
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
def fetch_http_with_redirection_handling(uri, headers = {})
|
|
57
|
+
Net::HTTP.start uri.host, uri.port, use_ssl: uri.scheme == "https" do |http|
|
|
58
|
+
request = Net::HTTP::Get.new(uri, headers)
|
|
59
|
+
http.request request do |response|
|
|
60
|
+
case response
|
|
61
|
+
when Net::HTTPRedirection
|
|
62
|
+
return fetch_http_with_redirection_handling(URI(response["location"]), headers)
|
|
63
|
+
when Net::HTTPOK
|
|
64
|
+
return response
|
|
65
|
+
else
|
|
66
|
+
raise "#{response.code} #{response.message}\n#{response.body}"
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
42
71
|
end
|
|
43
72
|
|
|
44
73
|
include Util
|
data/lib/kar/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kar
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kitaiti Makoto
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: rake
|
|
@@ -92,7 +91,6 @@ metadata:
|
|
|
92
91
|
homepage_uri: https://gitlab.com/KitaitiMakoto/kar
|
|
93
92
|
source_code_uri: https://gitlab.com/KitaitiMakoto/kar
|
|
94
93
|
changelog_uri: https://gitlab.com/KitaitiMakoto/kar/CHANGELOG.md
|
|
95
|
-
post_install_message:
|
|
96
94
|
rdoc_options: []
|
|
97
95
|
require_paths:
|
|
98
96
|
- lib
|
|
@@ -107,8 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
107
105
|
- !ruby/object:Gem::Version
|
|
108
106
|
version: '0'
|
|
109
107
|
requirements: []
|
|
110
|
-
rubygems_version: 3.
|
|
111
|
-
signing_key:
|
|
108
|
+
rubygems_version: 3.7.2
|
|
112
109
|
specification_version: 4
|
|
113
110
|
summary: Rake utilities
|
|
114
111
|
test_files: []
|