gcalapi AuthSubでカレンダーリストを取得する

あけましておめでとうございます。あんまり正月とか関係なしに淡々と開発しております。
年末年始に外出すると混むんだもん。

で、メイドめーるでデフォルト以外のGoogleカレンダーの情報がとれない件。

googlecalendar.PNG
Googleカレンダーでは、こうやって複数のカレンダーをまとめて表示させることが出来るのですけど、メイドめーるがメールしてくれるのは一番上のものだけになっております。
なんでかというと、Googleカレンダーにアクセスするのに使っているgcalapiで、カレンダーリストを取得するAPIがみつからなかったからです。

正確に言うと、ユーザー名とパスワードを使ったらとれるのですけど、なぜかAuthSub認証の場合だけ実装されていないのです。
Googleのドキュメントを見たら、取得する方法があるみたいなので、コードを追加してみました。

module GoogleCalendar
class ServiceAuthSub
CALENDAR_LIST_PATH = "http://www.google.com/calendar/feeds/default/allcalendars/full"
# get the list of user's calendars and returns http response object
def calendar_list
logger.info("-- get_calendar_list_responce st --") if logger
auth unless @auth
uri = URI.parse(CALENDAR_LIST_PATH)
res = do_get(uri, {})
logger.info("-- get_calendar_list_responce en(#{res.message}) --") if logger
res
end
alias :calendars :calendar_list
end
end

これだけ実装してあげれば、あとは通常認証と同じコードが働くので、こんなふうにして複数のカレンダーを取ってくることが出来ます。

require 'gcalapi'
require 'googlecalendar/service_auth_sub'
require 'googlecalendar/calendar'
srv1 = GoogleCalendar::ServiceAuthSub.new(user.calendarToken)
cal_list1 = GoogleCalendar::Calendar.calendars(srv1)

出来ればこのコード、本家に取り込んでいただけるとみんな幸せになるように思うのですけど。連絡つくかな?

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です