Add puppet/archive module, required for newer puppet/rabbitmq
[mirror/dsa-puppet.git] / 3rdparty / modules / archive / lib / puppet / provider / archive / curl.rb
diff --git a/3rdparty/modules/archive/lib/puppet/provider/archive/curl.rb b/3rdparty/modules/archive/lib/puppet/provider/archive/curl.rb
new file mode 100644 (file)
index 0000000..47981df
--- /dev/null
@@ -0,0 +1,43 @@
+Puppet::Type.type(:archive).provide(:curl, parent: :ruby) do
+  commands curl: 'curl'
+  defaultfor feature: :posix
+
+  def curl_params(params)
+    account = [resource[:username], resource[:password]].compact.join(':') if resource[:username]
+    params += optional_switch(account, ['--user', '%s'])
+    params += optional_switch(resource[:cookie], ['--cookie', '%s'])
+    params += optional_switch(resource[:proxy_server], ['--proxy', '%s'])
+    params += ['--insecure'] if resource[:allow_insecure]
+    params += resource[:download_options] if resource[:download_options]
+
+    params
+  end
+
+  def download(filepath)
+    params = curl_params(
+      [
+        resource[:source],
+        '-o',
+        filepath,
+        '-fsSL',
+        '--max-redirs',
+        5
+      ]
+    )
+
+    curl(params)
+  end
+
+  def remote_checksum
+    params = curl_params(
+      [
+        resource[:checksum_url],
+        '-fsSL',
+        '--max-redirs',
+        5
+      ]
+    )
+
+    curl(params)[%r{\b[\da-f]{32,128}\b}i]
+  end
+end