Пример #1
0
        /// <summary>
        /// Start polling for tasks...
        /// </summary>
        /// <returns>true on success</returns>
        public async Task <bool> MonitorTasksStart()
        {
            bool blSuccess;

            CloudScanner cloudScanner = null;

            using (var context = new CloudContext())
            {
                cloudScanner = context.Scanners.First();
            }

            var cloudClient = new TwainCloudClient(CloudManager.GetCloudApiRoot(), new TwainCloudTokens(cloudScanner.AuthorizationToken, cloudScanner.RefreshToken));

            cloudClient.TokensRefreshed += (sender, args) =>
            {
                cloudScanner.AuthorizationToken = args.Tokens.AuthorizationToken;
                cloudScanner.RefreshToken       = args.Tokens.RefreshToken;
                SaveScannerRegistration(cloudScanner);
            };

            // Start monitoring for commands...
            blSuccess = await m_twainlocalscannerdevice.DeviceHttpServerStart(new DeviceSession(cloudClient, cloudScanner.Id));

            if (!blSuccess)
            {
                Log.Error("DeviceHttpServerStart failed...");
                return(false);
            }

            // All done...
            return(true);
        }
Пример #2
0
 private static void SaveScannerRegistration(CloudScanner scanner)
 {
     using (var context = new CloudContext())
     {
         context.Scanners.AddOrUpdate(scanner);
         context.SaveChanges();
     }
 }
Пример #3
0
        public CloudScanner GetCurrentCloudScanner()
        {
            CloudScanner cloudScanner = null;

            var cloudConfigFileName = GetCloudConfigFileName();

            if (File.Exists(cloudConfigFileName))
            {
                var cloudScannerId = File.ReadAllText(GetCloudConfigFileName());

                using (var context = new CloudContext())
                    cloudScanner = context.Scanners.Find(cloudScannerId);
            }

            return(cloudScanner);
        }
Пример #4
0
        /// <summary>
        /// Register a device with cloud infrastructure.
        /// </summary>
        public async Task RegisterCloudScanner()
        {
            try
            {
                var client = new TwainCloudClient(CloudManager.GetCloudApiRoot());
                var registrationManager = new RegistrationManager(client);

                var scannerInfo = new RegistrationRequest
                {
                    Name        = GetTwainLocalTy(),
                    Description = GetTwainLocalNote()
                };

                var result = await registrationManager.Register(scannerInfo);

                var registrationDialog = new RegistrationForm(registrationManager, result);
                registrationDialog.ShowDialog();

                var pollResult = registrationDialog.PollResponse;
                if (pollResult != null)
                {
                    var cloudScanner = new CloudScanner
                    {
                        Id   = result.ScannerId,
                        Name = $"{scannerInfo.Name} ({scannerInfo.Description})",
                        AuthorizationToken = pollResult.AuthorizationToken,
                        RefreshToken       = pollResult.RefreshToken
                    };

                    SaveScannerRegistration(cloudScanner);
                    SetCurrentCloudScanner(cloudScanner);
                }
            }
            catch (Exception exception)
            {
                Log.Error("RegisterCloudScanner exception - " + exception.Message);
            }
        }
Пример #5
0
        public void SetCurrentCloudScanner(CloudScanner scanner)
        {
            var cloudConfigFileName = GetCloudConfigFileName();

            File.WriteAllText(cloudConfigFileName, scanner.Id);
        }