public async Task <IActionResult> GetToken([FromBody] TodoistTokenRequest request, [FromServices] ITodoistTokenQuery query) { TodoistTokenResponse result = await query.RunAsync(request.Code); return(string.IsNullOrWhiteSpace(result.Error) ? (IActionResult)Ok(result) : BadRequest(result)); }
public async Task <TodoistTokenResponse> RunAsync(string code) { var request = new { client_id = _configuration["TodoistClientId"], client_secret = _configuration["TodoistClientSecret"], code }; var client = new HttpClient(); var content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json"); var response = await client.PostAsync("https://todoist.com/oauth/access_token", content); var result = await response.Content.ReadAsStringAsync(); TodoistTokenResponse typedResponse = JsonConvert.DeserializeObject <TodoistTokenResponse>(result, new JsonSerializerSettings { ContractResolver = new SnakeCasePropertyNamesContractResolver() }); return(typedResponse); ; }