Advertisement
Guest User

Untitled

a guest
Nov 25th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. class User < ApplicationRecord
  2.  
  3. has_one: :calendar
  4.  
  5. devise :database_authenticatable, :registerable,
  6. :recoverable, :rememberable, :trackable, :validatable,
  7. :omniauthable, :omniauth_providers => [:google_oauth2]
  8.  
  9. def self.from_omniauth(access_token)
  10. data = access_token.info
  11. user = User.where(:email => data["email"]).first
  12.  
  13. unless user
  14. password = Devise.friendly_token[0,20]
  15. user = User.create(name: data["name"], email: data["email"],
  16. password: password, password_confirmation: password
  17. )
  18. end
  19. user
  20. end
  21.  
  22. def self.find_for_google_oauth2(oauth, signed_in_resource=nil)
  23. credentials = oauth.credentials
  24. data = oauth.info
  25. user = User.where(email: data["email"]).first
  26.  
  27.  
  28. unless user
  29. user = User.create(
  30. first_name: data["first_name"],
  31. last_name: data["first_name"],
  32. picture: data["image"],
  33. email: data["email"],
  34. password: Devise.friendly_token[0,20],
  35. token: credentials.token,
  36. refresh_token: credentials.refresh_token)
  37. end
  38. @calendar = user.get_google_calendars
  39. user
  40. end
  41.  
  42. end
  43.  
  44. class Event < ApplicationRecord
  45. belongs_to: :calendar #calendar belogns to user, a calendar can have many events
  46.  
  47.  
  48. end
  49.  
  50.  
  51. class Calendar < ApplicationRecord
  52. has_many: :events, dependent: :destroy #calendar belogns to user, a calendar can have many events
  53. belongs_to: :user, dependent: :destroy
  54.  
  55. def get_google_calendars
  56. url = "https://www.googleapis.com/calendar/v3/users/me/calendarList?access_token=#{token}"
  57. response = open(url)
  58. json = JSON.parse(response.read)
  59. calendars = json["items"]
  60. calendars.each { |cal| get_events_for_calendar(cal) }
  61. end
  62.  
  63. def get_events_for_calendar(cal)
  64.  
  65. url = "https://www.googleapis.com/calendar/v3/calendars/#{cal["id"]}/events?access_token=#{token}"
  66. response = open(url)
  67. json = JSON.parse(response.read)
  68. my_events = json["items"]
  69.  
  70. my_events.each do |event|
  71. name = event["summary"] || "no name"
  72. creator = event["creator"] ? event["creator"]["email"] : nil
  73. start = event["start"] ? event["start"]["dateTime"] : nil
  74. status = event["status"] || nil
  75. link = event["htmlLink"] || nil
  76. calendar = cal["summary"] || nil
  77.  
  78. events.create(name: name,
  79. creator: creator,
  80. status: status,
  81. start: start,
  82. link: link,
  83. calendar: calendar
  84. )
  85. end
  86. end
  87. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement