Class: Cloudkeeper::Aws::ImageDownloader
- Inherits:
-
Object
- Object
- Cloudkeeper::Aws::ImageDownloader
- Defined in:
- lib/cloudkeeper/aws/image_downloader.rb
Overview
Class used for downloading images for cloudkeeper
Class Method Summary collapse
-
.download(image_uri, username = nil, password = nil, limit = 10) {|segment| ... } ⇒ Object
Downloads file from uri by segments.
-
.handle_response(resp, username, password, limit) {|segment| ... } ⇒ Object
Method used for handeling responses from download requests.
Class Method Details
.download(image_uri, username = nil, password = nil, limit = 10) {|segment| ... } ⇒ Object
Downloads file from uri by segments
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/cloudkeeper/aws/image_downloader.rb', line 15 def self.download(image_uri, username = nil, password = nil, limit = 10, &block) raise Cloudkeeper::Aws::Errors::ImageDownloadError, 'Too many redirects' \ if limit.zero? uri = URI.parse(image_uri) Net::HTTP.start(uri.host, uri.port) do |http| request = Net::HTTP::Get.new(uri) request.basic_auth username, password http.request(request) do |resp| handle_response(resp, username, password, limit, &block) end end rescue URI::InvalidURIError => e raise Cloudkeeper::Aws::Errors::ImageDownloadError, e. end |
.handle_response(resp, username, password, limit) {|segment| ... } ⇒ Object
Method used for handeling responses from download requests. It handles redirects as well as failures.
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/cloudkeeper/aws/image_downloader.rb', line 39 def self.handle_response(resp, username, password, limit, &block) case resp when Net::HTTPRedirection then download(resp['location'], username, password, limit - 1, &block) when Net::HTTPSuccess then resp.read_body(&block) else raise Cloudkeeper::Aws::Errors::ImageDownloadError, 'Failed to download image' end end |