我使用 Github 上的 Google API Ruby 客户端示例存储库作为我的日历应用程序的起点。
它运行良好,通常没有问题。然而,最近,我注意到我的生产应用程序并没有获取所有事件。在通过 ruby 客户端请求了几个日历之后,我在表格中呈现事件。在我的初次通话中,只有我使用我的应用程序生成的日期,根本没有从日历中获取任何数据。在第二次请求时,一些日历将返回数据并重新加载应用程序几次,所有日历都将返回事件。
所以对我来说,似乎有一些缓存正在进行。如果数据返回的速度不够快,则会向我发送一个空响应。再次请求发送一些数据,我请求的越多,返回的数据就越多。
也许我的设置有问题,我认为这并不完美:
get '/' do
#fetch all calendars
result = api_client.execute(:api_method => calendar_api.calendar_list.list,
:authorization => user_credentials)
cals = result.data.items.map do |i|
#skip id calendar does not belong to owner or is the "private" primary one
next if i.primary || i.accessRole != "owner"
i.summary
end
cals.compact!
#save all users mentioned in calendars in a set
events_list = result.data.items.map do |i|
#skip calendar if primary or not owned by user (cannot be changed anyway)
next if i.primary || i.accessRole != "owner"
r = api_client.execute(:api_method => calendar_api.events.list,
:parameters => {'calendarId' => i.id},
:timeMax => DateTime.now.next_month,
:timeMin => DateTime.now.beginning_of_month)
#capture all calendars and their events and map it to an Array
r.data.items.delete_if { |item| item.status == "cancelled" }
end
#remove skipped entries (=nil)
events_list.compact!
slim :home, :locals => { :title => Konfig::TITLE, :events_list => events_list, :cals => cals}
end
BTW: :timeMax 和 :timeMin 也没有按预期工作,但我想这是一个不同的问题。