module Icalendar::Google::Parsers

Public Instance Methods

from_google_id(id) click to toggle source
# File lib/icalendar/google/parsers.rb, line 7
def from_google_id(id)
  cid = CGI.escape(id)
  url = "https://calendar.google.com/calendar/ical/#{cid}/public/basic.ics"
  from_url(url)
end
from_url(url) click to toggle source
# File lib/icalendar/google/parsers.rb, line 13
def from_url(url)
  cid = url[%r{https://calendar.google.com/calendar/ical/(.*?)/public/basic.ics}, 1]
  uri = URI.parse(url)
  ssl = uri.scheme == "https"
  body = Net::HTTP.start(uri.host, uri.port, use_ssl: ssl) do |http|
    req = Net::HTTP::Get.new(uri.request_uri)
    res = http.request(req)
    enc = res['content-type'][%r{charset=(.*)}i, 1]
    enc.nil? ? res.body : res.body.force_encoding(enc)
  end
  Calendar.parse(body).each do |calendar|
    calendar.ical_url  = url
    calendar.google_id = CGI.unescape(cid)
  end
end