def self.for_resource(uri, new_resource, current_resource)
if network_share?(uri)
unless ChefUtils.windows?
raise Exceptions::UnsupportedPlatform, "Fetching the file on a network share is supported only on the Windows platform. Please change your source: #{uri}"
end
Chef::Provider::RemoteFile::NetworkFile.new(uri, new_resource, current_resource)
else
case uri.scheme
when "http", "https"
Chef::Provider::RemoteFile::HTTP.new(uri, new_resource, current_resource)
when "ftp"
Chef::Provider::RemoteFile::FTP.new(uri, new_resource, current_resource)
when "sftp"
Chef::Provider::RemoteFile::SFTP.new(uri, new_resource, current_resource)
when "file"
Chef::Provider::RemoteFile::LocalFile.new(uri, new_resource, current_resource)
else
raise ArgumentError, "Invalid uri, Only http(s), ftp, and file are currently supported"
end
end
end