e6969fa66085beaeebf601017e3c7fd49cc66e12
[mirror/dsa-puppet.git] / 3rdparty / modules / archive / lib / puppet / provider / archive / curl.rb
1 Puppet::Type.type(:archive).provide(:curl, parent: :ruby) do
2   commands curl: 'curl'
3   defaultfor feature: :posix
4
5   def curl_params(params)
6     account = [resource[:username], resource[:password]].compact.join(':') if resource[:username]
7     params += optional_switch(account, ['--user', '%s'])
8     params += optional_switch(resource[:cookie], ['--cookie', '%s'])
9     params += optional_switch(resource[:proxy_server], ['--proxy', '%s'])
10     params += ['--insecure'] if resource[:allow_insecure]
11     params += resource[:download_options] if resource[:download_options]
12
13     params
14   end
15
16   def download(filepath)
17     params = curl_params(
18       [
19         resource[:source],
20         '-o',
21         filepath,
22         '-fsSLg',
23         '--max-redirs',
24         5
25       ]
26     )
27
28     curl(params)
29   end
30
31   def remote_checksum
32     params = curl_params(
33       [
34         resource[:checksum_url],
35         '-fsSLg',
36         '--max-redirs',
37         5
38       ]
39     )
40
41     curl(params)[%r{\b[\da-f]{32,128}\b}i]
42   end
43 end