2017年1月11日水曜日

Office365 のカレンダー API を使って予定の削除を行ってみた

概要

前回、カレンダー API を使って予定の登録を行いました
今回は削除もしてみます
Gem の追加や新しいクラスの追加はないので必要な箇所のみコードを紹介します

環境

  • Windows7 64bit
  • Ruby 2.2.4p230
  • gem 2.4.8
  • Rails 5.0.0
  • Office365 API v2.0 (2016/08/22 時点)

削除するロジックの追記

ファイル名は前回の記事のものをそのまま使っています

  • vim app/controllers/calendar_controller.rb
def delete
  token = get_access_token($token)
  email = session[:user_email]
  if token
    conn = Faraday.new(:url => 'https://outlook.office.com') do |faraday|
      faraday.response :logger
      faraday.adapter  Faraday.default_adapter
    end
    response = conn.delete do |req|
      req.headers['Authorization'] = "Bearer #{token}"
      req.headers['Content-Type'] = 'application/json'
      req.url "/api/v2.0/Me/Events/#{params['event_id']}"
    end
    puts response.body
    redirect_to calendar_url
  else
    redirect_to root_url
  end
end
  • vim views/calendar/index.html.erb
<td>
<%= form_tag("/dcal", method: "post") do %>
  <%= hidden_field_tag("event_id", event['Id']) %>
  <%= submit_tag("削除") %>
<% end %>
</td>
  • vim config/routes.rb
post 'dcal' => 'calendar#delete'

という感じです
View で削除ボタン用のフォームを作成しています
作成するときに hidden フィールドに予定ごとに一意に振られる ID を設定します
コントローラ側でその ID を受け取り、その ID を元に削除 API をコールします

最後に

カレンダーの削除 API の使い方を紹介しました
URI に削除したい予定の ID を指定するだけなので簡単でした
当たり前ですが、メソッドは DELETE メソッドでコールしてください

0 件のコメント:

コメントを投稿