DownloadStrategyDetector recognizes s3 URL scheme
DownloadStrategyDetector now detects URLs with the s3:// prefix, e.g.: s3://my-bucket/path/to/key/tarball.tar.gz
This commit is contained in:
parent
2ec684a123
commit
a096284d03
@ -473,7 +473,8 @@ end
|
||||
# distribution. (It will work for public buckets as well.)
|
||||
class S3DownloadStrategy < CurlDownloadStrategy
|
||||
def _fetch
|
||||
if @url !~ %r{^https?://([^.].*)\.s3\.amazonaws\.com/(.+)$}
|
||||
if @url !~ %r{^https?://([^.].*)\.s3\.amazonaws\.com/(.+)$} &&
|
||||
@url !~ %r{^s3://([^.].*?)/(.+)$}
|
||||
raise "Bad S3 URL: " + @url
|
||||
end
|
||||
bucket = Regexp.last_match(1)
|
||||
@ -1141,6 +1142,9 @@ class DownloadStrategyDetector
|
||||
SubversionDownloadStrategy
|
||||
when %r{^https?://(.+?\.)?sourceforge\.net/hgweb/}
|
||||
MercurialDownloadStrategy
|
||||
when %r{^s3://}
|
||||
require_aws_sdk
|
||||
S3DownloadStrategy
|
||||
else
|
||||
CurlDownloadStrategy
|
||||
end
|
||||
|
||||
@ -260,6 +260,14 @@ describe DownloadStrategyDetector do
|
||||
it { is_expected.to eq(GitHubGitDownloadStrategy) }
|
||||
end
|
||||
|
||||
context "when given an S3 URL" do
|
||||
let(:url) { "s3://bucket/homebrew/brew.tar.gz" }
|
||||
it "returns S3DownloadStrategy" do
|
||||
allow(DownloadStrategyDetector).to receive(:require_aws_sdk).and_return(true)
|
||||
is_expected.to eq(S3DownloadStrategy)
|
||||
end
|
||||
end
|
||||
|
||||
context "when given strategy = S3DownloadStrategy" do
|
||||
let(:url) { "https://bkt.s3.amazonaws.com/key.tar.gz" }
|
||||
let(:strategy) { S3DownloadStrategy }
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user