public UserController(IUser userContext, IPhotoAccessor photoAccessor, IPhoto photoContext, ILogger <UserController> logger, IMailService mailService, IMapper mapper) { _userContext = userContext; _photoAccessor = photoAccessor; _photoContext = photoContext; _logger = logger; _mailService = mailService; _mapper = mapper; _auth = new DeviceAuthentication(new HttpContextAccessor()); }
public bool AuthenticateDeviceWaitForActivation(DeviceAuthentication dAuth) { var pollRequest = new RestRequest("oauth/device/token", Method.POST); pollRequest.AddJsonBody(new { code = dAuth.device_code, client_id = clientId, client_secret = clientSecret }); int elapsed = 0; var interval = dAuth.interval; while (elapsed < dAuth.expires_in) { var pollResponse = client.Execute <dynamic>(pollRequest); switch ((int)pollResponse.StatusCode) { case 200: // tokens in. var accessToken = pollResponse.Data["access_token"]; var refreshToken = pollResponse.Data["refresh_token"]; AccessToken = accessToken; RefreshToken = refreshToken; return(true); case 400: // Pending, keep polling. break; case 429: // Slow down. interval++; break; default: // Anything else, throw exception? throw new TraktAPIException(pollResponse, "DeviceAuthentication: Polling aborted"); } Thread.Sleep(interval * 1000); elapsed += interval; } return(false); }