public async Task <SendMessageResult> ApplyLeaveAsync(CreateLeaveContract leave) { // todo: why it's not clear from CreateLeaveContract // that we need to use DateTimeZoneHandling.Utc? var idToken = await authHelper.GetIdTokenAsync(); var leaveJson = JsonConvert.SerializeObject(leave, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Utc }); return(await backchannel.PostAsync("leaves/", x => x .WithBearerToken(idToken) .WithJsonContent(leaveJson) )); }
public async Task <string> AddEventAsync(AddCalendarEventContract eventContract) { var calendarEvent = mapper.Map <AddCalendarEventContract, CalendarEvent>(eventContract); var json = JsonConvert.SerializeObject(calendarEvent, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Utc }); var result = await backchannel.PostAsync("calendars/primary/events", x => x .WithBearerToken(eventContract.AccessToken) .WithJsonContent(json) ); if (!result.Succeeded) { return(null); } var response = result.Response; if (!response.IsSuccessStatusCode) { return(null); } return(GetEventUriFromJson( await response.Content.ReadAsStringAsync() )); }
public async Task <OAuthExchangeResponse> ExchangeAuthCode(string code, string redirectUrl) { var tokenRequestContent = new FormUrlEncodedContent(new Dictionary <string, string> { ["code"] = code, ["client_id"] = options.ClientId, ["client_secret"] = options.ClientSecret, ["redirect_uri"] = redirectUrl, ["grant_type"] = "authorization_code" }); var url = options.RefreshTokenUri; var exchangeResult = await backchannel.PostAsync(url, x => x .WithContent(tokenRequestContent) .AcceptJson() ); if (!exchangeResult.Succeeded) { return(null); } var response = exchangeResult.Response; if (!response.IsSuccessStatusCode) { return(null); } try { var payload = JObject.Parse(await response.Content.ReadAsStringAsync()); return(new OAuthExchangeResponse(payload)); } catch (JsonException) { return(null); } }