Class: Availability::CalendarFetcher
- Inherits:
-
Object
- Object
- Availability::CalendarFetcher
- Defined in:
- lib/availability/calendar_fetcher.rb
Overview
Downloads private calendar feeds with bounded redirects, timeouts, and size.
Constant Summary collapse
- MAX_REDIRECTS =
5- MAX_BYTES =
20 * 1024 * 1024
Instance Method Summary collapse
- #fetch(url, label: 'Calendar', redirects_left: MAX_REDIRECTS) ⇒ Object
-
#initialize(open_timeout: 10, read_timeout: 30) ⇒ CalendarFetcher
constructor
A new instance of CalendarFetcher.
Constructor Details
#initialize(open_timeout: 10, read_timeout: 30) ⇒ CalendarFetcher
Returns a new instance of CalendarFetcher.
15 16 17 18 |
# File 'lib/availability/calendar_fetcher.rb', line 15 def initialize(open_timeout: 10, read_timeout: 30) @open_timeout = open_timeout @read_timeout = read_timeout end |
Instance Method Details
#fetch(url, label: 'Calendar', redirects_left: MAX_REDIRECTS) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/availability/calendar_fetcher.rb', line 20 def fetch(url, label: 'Calendar', redirects_left: MAX_REDIRECTS) uri = URI.parse(CalendarUrl.normalize(url)) validate_uri!(uri, label) response, body = request(uri, label) handle_response(response, body, uri, label, redirects_left) rescue FetchError raise rescue URI::InvalidURIError raise FetchError, "#{label} has an invalid URL" rescue Timeout::Error, SocketError, SystemCallError, OpenSSL::SSL::SSLError => e raise FetchError, "#{label} download failed (#{e.class})" end |