Esempio n. 1
0
 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());
 }
Esempio n. 2
0
        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);
        }