Пример #1
0
        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)
                                               ));
        }
Пример #2
0
        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()
                       ));
        }
Пример #3
0
        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);
            }
        }