Advertisement
Guest User

Untitled

a guest
Feb 1st, 2018
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.69 KB | None | 0 0
  1. public static string ApplicationName = "Google Console ApplicationName";
  2. public static string ClientId = "Google Console ClientId";
  3. public static string ClientSecret = "Google Console ClientSecret";
  4. public static string RedirectURL = "Google Console RedirectURL";
  5.  
  6. public static ClientSecrets GoogleClientSecrets = new ClientSecrets()
  7. {
  8. ClientId = ClientId,
  9. ClientSecret = ClientSecret
  10. };
  11.  
  12. public static string[] Scopes =
  13. {
  14. CalendarService.Scope.Calendar,
  15. CalendarService.Scope.CalendarReadonly
  16. };
  17.  
  18. public static UserCredential GetUserCredential(out string error)
  19. {
  20. UserCredential credential = null;
  21. error = string.Empty;
  22.  
  23. try
  24. {
  25. credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
  26. new ClientSecrets
  27. {
  28. ClientId = ClientId,
  29. ClientSecret = ClientSecret
  30. },
  31. Scopes,
  32. Environment.UserName,
  33. CancellationToken.None,
  34. null).Result;
  35. }
  36. catch (Exception ex)
  37. {
  38. credential = null;
  39. error = "Failed to UserCredential Initialization: " + ex.ToString();
  40. }
  41.  
  42. return credential;
  43. }
  44.  
  45. public static IAuthorizationCodeFlow GoogleAuthorizationCodeFlow(out string error)
  46. {
  47. IAuthorizationCodeFlow flow = null;
  48. error = string.Empty;
  49.  
  50. try
  51. {
  52. flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
  53. {
  54. ClientSecrets = GoogleClientSecrets,
  55. Scopes = Scopes
  56. });
  57. }
  58. catch (Exception ex)
  59. {
  60. flow = null;
  61. error = "Failed to AuthorizationCodeFlow Initialization: " + ex.ToString();
  62. }
  63.  
  64. return flow;
  65. }
  66.  
  67. public static UserCredential GetGoogleUserCredentialByRefreshToken(string refreshToken, out string error)
  68. {
  69. TokenResponse respnseToken = null;
  70. UserCredential credential = null;
  71. string flowError;
  72. error = string.Empty;
  73. try
  74. {
  75. // Get a new IAuthorizationCodeFlow instance
  76. IAuthorizationCodeFlow flow = GoogleAuthorizationCodeFlow(out flowError);
  77.  
  78. respnseToken = new TokenResponse() { RefreshToken = refreshToken };
  79.  
  80. // Get a new Credential instance
  81. if ((flow != null && string.IsNullOrWhiteSpace(flowError)) && respnseToken != null)
  82. {
  83. credential = new UserCredential(flow, "user", respnseToken);
  84. }
  85.  
  86. // Get a new Token instance
  87. if (credential != null)
  88. {
  89. bool success = credential.RefreshTokenAsync(CancellationToken.None).Result;
  90. }
  91.  
  92. // Set the new Token instance
  93. if (credential.Token != null)
  94. {
  95. string newRefreshToken = credential.Token.RefreshToken;
  96. }
  97. }
  98. catch (Exception ex)
  99. {
  100. credential = null;
  101. error = "UserCredential failed: " + ex.ToString();
  102. }
  103. return credential;
  104. }
  105.  
  106. public static CalendarService GetCalendarService(string refreshToken, out string error)
  107. {
  108. CalendarService calendarService = null;
  109. string credentialError;
  110. error = string.Empty;
  111. try
  112. {
  113. var credential = GetGoogleUserCredentialByRefreshToken(refreshToken, out credentialError);
  114. if (credential != null && string.IsNullOrWhiteSpace(credentialError))
  115. {
  116. calendarService = new CalendarService(new BaseClientService.Initializer()
  117. {
  118. HttpClientInitializer = credential,
  119. ApplicationName = ApplicationName
  120. });
  121. }
  122. }
  123. catch (Exception ex)
  124. {
  125. calendarService = null;
  126. error = "Calendar service failed: " + ex.ToString();
  127. }
  128. return calendarService;
  129. }
  130.  
  131. public static string AddCalenderEvents(string refreshToken, string emailAddress, string summary, DateTime? start, DateTime? end, out string error)
  132. {
  133. string eventId = string.Empty;
  134. error = string.Empty;
  135. string serviceError;
  136.  
  137. try
  138. {
  139. var calendarService = GetCalendarService(refreshToken, out serviceError);
  140.  
  141. if (calendarService != null && string.IsNullOrWhiteSpace(serviceError))
  142. {
  143. var list = calendarService.CalendarList.List().Execute();
  144. var calendar = list.Items.SingleOrDefault(c => c.Summary == emailAddress);
  145. if (calendar != null)
  146. {
  147. Google.Apis.Calendar.v3.Data.Event calenderEvent = new Google.Apis.Calendar.v3.Data.Event();
  148.  
  149. calenderEvent.Summary = summary;
  150. //calenderEvent.Description = summary;
  151. //calenderEvent.Location = summary;
  152. calenderEvent.Start = new Google.Apis.Calendar.v3.Data.EventDateTime
  153. {
  154. //DateTime = new DateTime(2018, 1, 20, 19, 00, 0)
  155. DateTime = start//,
  156. //TimeZone = "Europe/Istanbul"
  157. };
  158. calenderEvent.End = new Google.Apis.Calendar.v3.Data.EventDateTime
  159. {
  160. //DateTime = new DateTime(2018, 4, 30, 23, 59, 0)
  161. DateTime = start.Value.AddHours(12)//,
  162. //TimeZone = "Europe/Istanbul"
  163. };
  164. calenderEvent.Recurrence = new List<string>();
  165.  
  166. //Set Remainder
  167. calenderEvent.Reminders = new Google.Apis.Calendar.v3.Data.Event.RemindersData()
  168. {
  169. UseDefault = false,
  170. Overrides = new Google.Apis.Calendar.v3.Data.EventReminder[]
  171. {
  172. new Google.Apis.Calendar.v3.Data.EventReminder() { Method = "email", Minutes = 24 * 60 },
  173. new Google.Apis.Calendar.v3.Data.EventReminder() { Method = "popup", Minutes = 24 * 60 }
  174. }
  175. };
  176.  
  177. #region Attendees
  178. //Set Attendees
  179. calenderEvent.Attendees = new Google.Apis.Calendar.v3.Data.EventAttendee[] {
  180. new Google.Apis.Calendar.v3.Data.EventAttendee() { Email = "kaptan.cse@gmail.com" },
  181. new Google.Apis.Calendar.v3.Data.EventAttendee() { Email = emailAddress }
  182. };
  183. #endregion
  184.  
  185. var newEventRequest = calendarService.Events.Insert(calenderEvent, calendar.Id);
  186. newEventRequest.SendNotifications = true;
  187. var eventResult = newEventRequest.Execute();
  188. eventId = eventResult.Id;
  189. }
  190. }
  191. }
  192. catch (Exception ex)
  193. {
  194. eventId = string.Empty;
  195. error = ex.Message;
  196. }
  197. return eventId;
  198. }
  199. public static Google.Apis.Calendar.v3.Data.Event UpdateCalenderEvents(string refreshToken, string emailAddress, string summary, DateTime? start, DateTime? end, string eventId, out string error)
  200. {
  201. Google.Apis.Calendar.v3.Data.Event eventResult = null;
  202. error = string.Empty;
  203. string serviceError;
  204. try
  205. {
  206. var calendarService = GetCalendarService(refreshToken, out serviceError);
  207. if (calendarService != null)
  208. {
  209. var list = calendarService.CalendarList.List().Execute();
  210. var calendar = list.Items.SingleOrDefault(c => c.Summary == emailAddress);
  211. if (calendar != null)
  212. {
  213. // Define parameters of request
  214. EventsResource.ListRequest request = calendarService.Events.List("primary");
  215. request.TimeMin = DateTime.Now;
  216. request.ShowDeleted = false;
  217. request.SingleEvents = true;
  218. request.MaxResults = 10;
  219. request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
  220.  
  221. // Get selected event
  222. Google.Apis.Calendar.v3.Data.Events events = request.Execute();
  223. var selectedEvent = events.Items.FirstOrDefault(c => c.Id == eventId);
  224. if (selectedEvent != null)
  225. {
  226. selectedEvent.Summary = summary;
  227. selectedEvent.Start = new Google.Apis.Calendar.v3.Data.EventDateTime
  228. {
  229. DateTime = start
  230. };
  231. selectedEvent.End = new Google.Apis.Calendar.v3.Data.EventDateTime
  232. {
  233. DateTime = start.Value.AddHours(12)
  234. };
  235. selectedEvent.Recurrence = new List<string>();
  236.  
  237. // Set Remainder
  238. selectedEvent.Reminders = new Google.Apis.Calendar.v3.Data.Event.RemindersData()
  239. {
  240. UseDefault = false,
  241. Overrides = new Google.Apis.Calendar.v3.Data.EventReminder[]
  242. {
  243. new Google.Apis.Calendar.v3.Data.EventReminder() { Method = "email", Minutes = 24 * 60 },
  244. new Google.Apis.Calendar.v3.Data.EventReminder() { Method = "popup", Minutes = 24 * 60 }
  245. }
  246. };
  247.  
  248. // Set Attendees
  249. selectedEvent.Attendees = new Google.Apis.Calendar.v3.Data.EventAttendee[]
  250. {
  251. new Google.Apis.Calendar.v3.Data.EventAttendee() { Email = "kaptan.cse@gmail.com" },
  252. new Google.Apis.Calendar.v3.Data.EventAttendee() { Email = emailAddress }
  253. };
  254. }
  255.  
  256. var updateEventRequest = calendarService.Events.Update(selectedEvent, calendar.Id, eventId);
  257. updateEventRequest.SendNotifications = true;
  258. eventResult = updateEventRequest.Execute();
  259. }
  260. }
  261. }
  262. catch (Exception ex)
  263. {
  264. eventResult = null;
  265. error = ex.ToString();
  266. }
  267. return eventResult;
  268. }
  269. public static void DeletCalendarEvents(string refreshToken, string emailAddress, string eventId, out string error)
  270. {
  271. string result = string.Empty;
  272. error = string.Empty;
  273. string serviceError;
  274. try
  275. {
  276. var calendarService = GetCalendarService(refreshToken, out serviceError);
  277. if (calendarService != null)
  278. {
  279. var list = calendarService.CalendarList.List().Execute();
  280. var calendar = list.Items.FirstOrDefault(c => c.Summary == emailAddress);
  281. if (calendar != null)
  282. {
  283. // Define parameters of request
  284. EventsResource.ListRequest request = calendarService.Events.List("primary");
  285. request.TimeMin = DateTime.Now;
  286. request.ShowDeleted = false;
  287. request.SingleEvents = true;
  288. request.MaxResults = 10;
  289. request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
  290.  
  291. // Get selected event
  292. Google.Apis.Calendar.v3.Data.Events events = request.Execute();
  293. var selectedEvent = events.Items.FirstOrDefault(c => c.Id == eventId);
  294. if (selectedEvent != null)
  295. {
  296. var deleteEventRequest = calendarService.Events.Delete(calendar.Id, eventId);
  297. deleteEventRequest.SendNotifications = true;
  298. deleteEventRequest.Execute();
  299. }
  300. }
  301. }
  302. }
  303. catch (Exception ex)
  304. {
  305. result = string.Empty;
  306. error = ex.ToString();
  307. }
  308. }
  309.  
  310. public static void Run()
  311. {
  312. string refreshToken = string.Empty;
  313. string credentialError;
  314. var credential = GetUserCredential(out credentialError);
  315. if (credential != null && string.IsNullOrWhiteSpace(credentialError))
  316. {
  317. //Save RefreshToken into Database
  318. refreshToken = credential.Token.RefreshToken;
  319. }
  320.  
  321. string addEventError;
  322. string calendarEventId = string.Empty;
  323.  
  324. calendarEventId = AddCalenderEvents(refreshToken, "kaptan.cse@gmail.com", "My Calendar Event", DateTime.Now, DateTime.Now.AddHours(12), out addEventError);
  325.  
  326. string updateEventError;
  327. if (!string.IsNullOrEmpty(calendarEventId))
  328. {
  329. UpdateCalenderEvents(refreshToken, "kaptan.cse@gmail.com", "Modified Calendar Event ", DateTime.Now, DateTime.Now.AddDays(1), calendarEventId, out updateEventError);
  330. }
  331.  
  332. string deleteEventError;
  333. if (!string.IsNullOrEmpty(calendarEventId))
  334. {
  335. DeletCalendarEvents(refreshToken, "kaptan.cse@gmail.com", calendarEventId, out deleteEventError);
  336. }
  337. }
  338. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement