require 'google/apis/calendar_v3' CALENDAR = Google::Apis::CalendarV3 class GoogleCalendar def initialize (calendar_id, timezone_offset = Time.zone.name) @id = calendar_id @timezone_offset = timezone_offset @events = nil @service = CALENDAR::CalendarService.new #@service.authorization = CALENDAR::AUTH_CALENDAR # change this if write access needed @service.key = ENV['GOOGLE_API_KEY'] query_events end def upcoming @events && @events.select do |event| (not nsltv_regex =~ event.summary) end end def upcoming_nsltv @events && @events.select do |event| (nsltv_regex =~ event.summary) end end def query_events list = nil @events.nil? and @service.list_events(@id, time_zone: ActiveSupport::TimeZone::MAPPING[@timezone_offset], time_min: (2.hours.ago).utc.iso8601 ) {|result, err| if err puts err.inspect else list = result end } @events = (list) ? list.items.sort_by { |event| event.start.date_time } : nil end def nsltv_regex /\[NSLTV\]/i end end