class Colleagues::Calendar::Command::CommandLine

Public Class Methods

new() click to toggle source
# File lib/colleagues/calendar/command.rb, line 18
def initialize
  @config = ConfigParser.new
end

Public Instance Methods

input_schedule_date(schedule_type) click to toggle source
# File lib/colleagues/calendar/command.rb, line 50
        def input_schedule_date(schedule_type)
          message =<<SCHEDULE
#{schedule_type}ですね。登録予定の日時は?
  入力例:
  11/29 (全休などの場合)
  10:00 - 11:00 (当日の予定の場合)
  11/29 10:00 - 11/29 11:00 (他の日の予定の場合)

SCHEDULE
          input = @cli.ask(message)
          begin_time = Time.now
          end_time = Time.now
          begin
            if input.index("-")
              begin_time = Time.parse(input.split("-")[0])
              end_time = Time.parse(input.split("-")[1])
            else
              begin_time = Time.parse(input)
              end_time = begin_time + (60 * 60 * 24)
            end
          rescue
            p "FAIL"
            return
          end
          [begin_time, end_time]
        end
register_all_day_event(title, begin_time, end_time) click to toggle source
# File lib/colleagues/calendar/command.rb, line 99
def register_all_day_event(title, begin_time, end_time)
  begin
    @calendar = Calendar.new(@config.client_id,
                             @config.client_secret,
                             @calendar_id,
                             @config.refresh_token)
    @calendar.create_all_day(title,
                             begin_time,
                             end_time)
    unless @config.refresh_token
      @config.refresh_token = @calendar.refresh_token
      @config.save
    end
    @cli.say("登録を完了しました。")
  rescue => e
    puts e.message
    exit 1
  end
end
register_event(schedule_type, begin_time, end_time) click to toggle source
# File lib/colleagues/calendar/command.rb, line 87
def register_event(schedule_type, begin_time, end_time)
  @config.schedule_type.each do |key, item|
    if item["label"] == schedule_type
      if item["all_day"]
        register_all_day_event("#{item["text"]}", begin_time, end_time)
      else
        register_oneshot_event("#{item["text"]}", begin_time, end_time)
      end
    end
  end
end
register_oneshot_event(title, begin_time, end_time) click to toggle source
# File lib/colleagues/calendar/command.rb, line 119
def register_oneshot_event(title, begin_time, end_time)
  begin
    @calendar = Calendar.new(@config.client_id,
                             @config.client_secret,
                             @calendar_id,
                             @config.refresh_token)
    @calendar.create_event(title,
                           begin_time,
                           end_time)
    unless @config.refresh_token
      @config.refresh_token = @calendar.refresh_token
      @config.save
    end
    @cli.say("登録を完了しました。")
  rescue => e
    puts e.message
    exit 1
  end
end
run(arguments) click to toggle source
# File lib/colleagues/calendar/command.rb, line 77
def run(arguments)
  @cli = HighLine.new
  calendar_selection = select_calendar
  @calendar_id = calendar_selection[:calendar_id]
  schedule_type = select_schedule_type
  schedule_date = input_schedule_date(schedule_type)
  register_event(schedule_type, schedule_date[0], schedule_date[1]) 
  true
end
select_calendar() click to toggle source
# File lib/colleagues/calendar/command.rb, line 22
def select_calendar
  selection = {}
  @cli.choose do |menu|
    menu.prompt = "誰のカレンダーに登録しますか?"
    @config.calendar_ids.keys.each do |key|
      menu.choice(key) do |person|
        calendar_id = @config.calendar_ids[person]
        selection[:person] = person
        selection[:calendar_id] = calendar_id
      end
    end
  end
  selection
end
select_schedule_type() click to toggle source
# File lib/colleagues/calendar/command.rb, line 37
def select_schedule_type
  schedule_type = ""
  @cli.choose do |menu|
    menu.prompt = "登録する予定の種類は?"
    @config.schedule_type.each do |type, item|
      menu.choice(item["label"]) do |selected|
        schedule_type = selected
      end
    end
  end
  schedule_type
end