public ProgressAsyncHelper(AsyncHelper.DoWork doWork, AsyncHelper.WorkDone workDone, System.Windows.Forms.Form owner, string progressCaption)
        {
            m_progressForm = new Feng.Windows.Forms.ProgressForm();

            m_asyncHelper = AsyncHelper.Start(doWork, new Feng.Async.AsyncHelper.WorkDone(delegate(object result)
                {
                    this.m_progressForm.Stop();
                    this.m_progressForm.Close();
                    workDone(result);
                }));

            m_progressForm.ProgressStopped += new EventHandler((sender, e) =>
                {
                    m_asyncHelper.AbortWorker();
                });

            m_progressForm.Start(owner, progressCaption);
        }
示例#2
0
    public static unsafe void PackNegTest()
    {
        var helper = new AsyncHelper();
        IOCompletionCallback callback = MyCallback(helper);

        NativeOverlapped* nativeOverlapped;
        Overlapped ov = new Overlapped();
        nativeOverlapped = ov.Pack(new IOCompletionCallback(callback), null);

        try
        {
            Assert.True(nativeOverlapped != null);
            Assert.Throws<InvalidOperationException>(() => ov.Pack(new IOCompletionCallback(callback), null));
        }
        finally
        {
            Overlapped.Free(nativeOverlapped);
        }
    }
示例#3
0
    public static unsafe void PackPosTest()
    {
        #pragma warning disable 618
        Overlapped ov = new Overlapped();
        var helper = new AsyncHelper();
        IOCompletionCallback callback = MyCallback(helper);

        NativeOverlapped* nativeOverlapped = ov.Pack(callback);
        try
        {
            Assert.True(nativeOverlapped != null);

            Assert.True(ThreadPool.UnsafeQueueNativeOverlapped(nativeOverlapped));

            Assert.True(helper.Wait());
        }
        finally
        {
            Overlapped.Free(nativeOverlapped);
        }
        #pragma warning restore 618
    }
示例#4
0
 public void TestInitializeBase()
 {
     Async = new AsyncHelper();
 }
 public static void Create <TTenant, TUser>(this AbpTenantManager <TTenant, TUser> tenantManager, TTenant tenant)
     where TTenant : AbpTenant <TUser>
     where TUser : AbpUserBase
 {
     AsyncHelper.RunSync(() => tenantManager.CreateAsync(tenant));
 }
 public static void SetFeatureValues <TTenant, TUser>(this AbpTenantManager <TTenant, TUser> tenantManager, int tenantId, params NameValue[] values)
     where TTenant : AbpTenant <TUser>
     where TUser : AbpUserBase
 {
     AsyncHelper.RunSync(() => tenantManager.SetFeatureValuesAsync(tenantId, values));
 }
 public static string GetFeatureValueOrNull <TTenant, TUser>(this AbpTenantManager <TTenant, TUser> tenantManager, int tenantId, string featureName)
     where TTenant : AbpTenant <TUser>
     where TUser : AbpUserBase
 {
     return(AsyncHelper.RunSync(() => tenantManager.GetFeatureValueOrNullAsync(tenantId, featureName)));
 }
 public static TTenant GetById <TTenant, TUser>(this AbpTenantManager <TTenant, TUser> tenantManager, int id)
     where TTenant : AbpTenant <TUser>
     where TUser : AbpUserBase
 {
     return(AsyncHelper.RunSync(() => tenantManager.GetByIdAsync(id)));
 }
示例#9
0
 public User GetUserOrNull(UserIdentifier userIdentifier)
 {
     return(AsyncHelper.RunSync(() => GetUserOrNullAsync(userIdentifier)));
 }
示例#10
0
        public ImportCertificateDialog(IServiceProvider serviceProvider, CertificatesFeature feature)
            : base(serviceProvider)
        {
            InitializeComponent();
            cbStore.SelectedIndex = 0;
            if (Environment.OSVersion.Version < Version.Parse("6.2"))
            {
                // IMPORTANT: WebHosting store is available since Windows 8.
                cbStore.Enabled = false;
            }

            if (!Helper.IsRunningOnMono())
            {
                JexusManager.NativeMethods.TryAddShieldToButton(btnOK);
            }

            var container = new CompositeDisposable();

            FormClosed += (sender, args) => container.Dispose();

            container.Add(
                Observable.FromEventPattern <EventArgs>(btnBrowse, "Click")
                .ObserveOn(System.Threading.SynchronizationContext.Current)
                .Subscribe(evt =>
            {
                DialogHelper.ShowOpenFileDialog(txtFile, ".pfx|*.pfx|*.*|*.*");
            }));

            container.Add(
                Observable.FromEventPattern <EventArgs>(txtFile, "TextChanged")
                .Sample(TimeSpan.FromSeconds(1))
                .ObserveOn(System.Threading.SynchronizationContext.Current)
                .Subscribe(evt =>
            {
                btnOK.Enabled = !string.IsNullOrWhiteSpace(txtFile.Text);
            }));

            container.Add(
                Observable.FromEventPattern <EventArgs>(btnOK, "Click")
                .ObserveOn(System.Threading.SynchronizationContext.Current)
                .Subscribe(evt =>
            {
                try
                {
                    // Load your certificate from file
                    Item        = new X509Certificate2(txtFile.Text, txtPassword.Text, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
                    Store       = cbStore.SelectedIndex == 0 ? "Personal" : "WebHosting";
                    var service = (IConfigurationService)GetService(typeof(IConfigurationService));
                    if (service.ServerManager.Mode == WorkingMode.Jexus)
                    {
                        var server = (JexusServerManager)service.Server;
                        // Public Key;
                        StringBuilder publicBuilder = new StringBuilder();
                        publicBuilder.AppendLine("-----BEGIN CERTIFICATE-----");
                        publicBuilder.AppendLine(Convert.ToBase64String(Item.Export(X509ContentType.Cert), Base64FormattingOptions.InsertLineBreaks));
                        publicBuilder.AppendLine("-----END CERTIFICATE-----");
                        var file = AsyncHelper.RunSync(() => server.SaveCertificateAsync(publicBuilder.ToString()));
                        server.SetCertificate(file);
                        // Private Key
                        RSACryptoServiceProvider rsa    = (RSACryptoServiceProvider)Item.PrivateKey;
                        MemoryStream memoryStream       = new MemoryStream();
                        TextWriter streamWriter         = new StreamWriter(memoryStream);
                        PemWriter pemWriter             = new PemWriter(streamWriter);
                        AsymmetricCipherKeyPair keyPair = DotNetUtilities.GetRsaKeyPair(rsa);
                        pemWriter.WriteObject(keyPair.Private);
                        streamWriter.Flush();
                        string output     = Encoding.ASCII.GetString(memoryStream.GetBuffer()).Trim();
                        int indexOfFooter = output.IndexOf("-----END RSA PRIVATE KEY-----", StringComparison.Ordinal);
                        memoryStream.Close();
                        streamWriter.Close();
                        string key  = output.Substring(0, indexOfFooter + 29);
                        var keyFile = AsyncHelper.RunSync(() => server.SaveKeyAsync(key));
                        server.SetKeyFile(keyFile);
                        service.ServerManager.CommitChanges();
                    }
                    else
                    {
                        try
                        {
                            using (var process = new Process())
                            {
                                // add certificate
                                var start       = process.StartInfo;
                                start.Verb      = "runas";
                                start.FileName  = "cmd";
                                start.Arguments = string.Format(
                                    "/c \"\"{4}\" /f:\"{0}\" /p:{1} /n:\"{2}\" /s:{3}\"",
                                    txtFile.Text,
                                    txtPassword.Text,
                                    Item.FriendlyName,
                                    cbStore.SelectedIndex == 0 ? "MY" : "WebHosting",
                                    Path.Combine(Environment.CurrentDirectory, "certificateinstaller.exe"));
                                start.CreateNoWindow = true;
                                start.WindowStyle    = ProcessWindowStyle.Hidden;
                                process.Start();
                                process.WaitForExit();
                                if (process.ExitCode == 0)
                                {
                                    DialogResult = DialogResult.OK;
                                }
                                else
                                {
                                    MessageBox.Show(process.ExitCode.ToString());
                                }
                            }
                        }
                        catch (Win32Exception ex)
                        {
                            // elevation is cancelled.
                            if (ex.NativeErrorCode != NativeMethods.ErrorCancelled)
                            {
                                Rollbar.Report(ex, ErrorLevel.Error, new Dictionary <string, object> {
                                    { "native", ex.NativeErrorCode }
                                });
                                // throw;
                            }
                        }
                        catch (Exception ex)
                        {
                            Rollbar.Report(ex, ErrorLevel.Error);
                        }
                    }
                }
                catch (Exception ex)
                {
                    ShowError(ex, string.Empty, false);
                }
            }));

            container.Add(
                Observable.FromEventPattern <CancelEventArgs>(this, "HelpButtonClicked")
                .ObserveOn(System.Threading.SynchronizationContext.Current)
                .Subscribe(EnvironmentVariableTarget =>
            {
                feature.ShowHelp();
            }));
        }
示例#11
0
 public static void SetFeatureValue <TTenant, TUser>(this TenantManager <TTenant, TUser> tenantManager, TTenant tenant, string featureName, string value)
     where TTenant : CommonFrameTenant <TUser>
     where TUser : CommonFrameUser <TUser>
 {
     AsyncHelper.RunSync(() => tenantManager.SetFeatureValueAsync(tenant, featureName, value));
 }
示例#12
0
 public static TTenant FindByTenancyName <TTenant, TUser>(this TenantManager <TTenant, TUser> tenantManager, string tenancyName)
     where TTenant : CommonFrameTenant <TUser>
     where TUser : CommonFrameUser <TUser>
 {
     return(AsyncHelper.RunSync(() => tenantManager.FindByTenancyNameAsync(tenancyName)));
 }
示例#13
0
 public static TTenant GetById <TTenant, TUser>(this TenantManager <TTenant, TUser> tenantManager, int id)
     where TTenant : CommonFrameTenant <TUser>
     where TUser : CommonFrameUser <TUser>
 {
     return(AsyncHelper.RunSync(() => tenantManager.GetByIdAsync(id)));
 }
示例#14
0
        public override IMessageBus GetBusInstance()
        {
            IBusControl busControl = null;

            var host = Options.Host.Split(':');

            var options = new MqttClientOptionsBuilder()
                          .WithClientId(Guid.NewGuid().ToString())
                          .WithTcpServer(host[0], int.Parse(host[1]))
                          .Build();

            var factory    = new MqttFactory();
            var mqttClient = factory.CreateMqttClient();

            mqttClient.UseApplicationMessageReceivedHandler(async e =>
            {
                await busControl.Publish(new MqttMessageReceivedEvent
                {
                    Topic   = e.ApplicationMessage.Topic,
                    Payload = e.ApplicationMessage.Payload,
                });
            });

            mqttClient.UseConnectedHandler(async e =>
            {
                //Topic格式
                //RootTopic/{SourceClientId}/{TargetClientId}/{SourceEndpoint}/{TargetEndpoint}/{MessageBodyType}/{MessageType}/{MessageId}

                string topic;
                foreach (var aMessageType in Cache.MessageTypes)
                {
                    //事件广播
                    topic = $"{Topic.RootTopic}/+/+/+/+/{aMessageType.FullName}/{MessageTypes.Event}/+";
                    await mqttClient.SubscribeAsync(topic);
                    Logger.LogInformation("MessageBus:Subscribe To Topic {Topic}", topic);

                    //命令单播
                    topic = $"{Topic.RootTopic}/+/+/+/{Options.Endpoint}/{aMessageType.FullName}/{MessageTypes.Command}/+";
                    await mqttClient.SubscribeAsync(topic);
                    Logger.LogInformation("MessageBus:Subscribe To Topic {Topic}", topic);

                    Logger.LogInformation("MessageBus:Subscribe {MessageType}", aMessageType);
                }

                //请求返回
                topic = $"{Topic.RootTopic}/+/{options.ClientId}/+/+/+/{MessageTypes.Response}/+";
                await mqttClient.SubscribeAsync(topic);
                Logger.LogInformation("MessageBus:Subscribe To Topic {Topic}", topic);
            });

            mqttClient.UseDisconnectedHandler(async e =>
            {
                Logger.LogWarning("MessageBus:Disconnected from {Host}", Options.Host);
                await Task.Delay(TimeSpan.FromSeconds(3));

                try
                {
                    await mqttClient.ConnectAsync(options, CancellationToken.None);
                }
                catch (Exception ex)
                {
                    Logger.LogError(ex, "MessageBus:Reconnect To {Host} Fail", Options.Host);
                }
            });

            busControl = Bus.Factory.CreateUsingInMemory(sbc =>
            {
                sbc.ReceiveEndpoint(ep =>
                {
                    ep.Handler <MqttMessageReceivedEvent>(async context =>
                    {
                        await new MqttMessageReceivedEventHandler(ServiceProvider, Options, mqttClient)
                        .Handle(context.Message);
                    });
                });
            });
            busControl.Start();

            AsyncHelper.RunSync(() => mqttClient.ConnectAsync(options));
            Logger.LogInformation("MessageBus:Started (Host:{Host})", Options.Host);

            return(new MqttMessageBus(Options, mqttClient));
        }
示例#15
0
        /// <inheritdoc/>
        public SettingManager(ISettingDefinitionManager settingDefinitionManager)
        {
            _settingDefinitionManager = settingDefinitionManager;

            AbpSession   = NullAbpSession.Instance;
            SettingStore = DefaultConfigSettingStore.Instance;

            _applicationSettings = new Lazy <Dictionary <string, SettingInfo> >(() => AsyncHelper.RunSync(GetApplicationSettingsFromDatabase), true);                                     //TODO: Run async
            _tenantSettingCache  = new AsyncThreadSafeObjectCache <Dictionary <string, SettingInfo> >(new MemoryCache(GetType().FullName + ".TenantSettings"), TimeSpan.FromMinutes(60)); //TODO: Get constant from somewhere else.
            _userSettingCache    = new AsyncThreadSafeObjectCache <Dictionary <string, SettingInfo> >(new MemoryCache(GetType().FullName + ".UserSettings"), TimeSpan.FromMinutes(20));   //TODO: Get constant from somewhere else.
        }
        public void MatchingSkillsTest(bool skillsAreSelected, int?expectedMatchingCount, bool shouldShowMatchingCount)
        {
            //Set up
            var searchServiceFake     = A.Fake <ISearchQueryService <JobProfileIndex> >(ops => ops.Strict());
            var loggerFake            = A.Fake <IApplicationLogger>();
            var asyncHelper           = new AsyncHelper();
            var webAppContextFake     = A.Fake <IWebAppContext>(ops => ops.Strict());
            var defaultJobProfilePage = "/jobprofile-details/";
            var stateManagerFake      = A.Fake <IPreSearchFilterStateManager>(ops => ops.Strict());
            var mapperCfg             = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile <JobProfilesAutoMapperProfile>();
            });
            var buildSearchFilterServiceFake = A.Fake <IBuildSearchFilterService>(ops => ops.Strict());

            var expectedSearchResultsViewModel = Enumerable.Empty <JobProfileSearchResultItemViewModel>();

            var dummySearchResult = A.Dummy <SearchResult <JobProfileIndex> >();

            dummySearchResult.Count = 1;
            var dummyReturnedResults = new List <SearchResultItem <JobProfileIndex> >()
            {
                new SearchResultItem <JobProfileIndex>
                {
                    ResultItem = new JobProfileIndex()
                    {
                        Skills = new List <string>()
                        {
                            "Skill1", "Skill2", "Skill3"
                        },
                        UrlName = "dummy-url",
                    }
                }
            };

            dummySearchResult.Results = dummyReturnedResults;

            var testPreSearchFilterState = new PreSearchFilterState();

            if (skillsAreSelected)
            {
                testPreSearchFilterState.Sections = new List <PreSearchFilterSection>()
                {
                    new PreSearchFilterSection()
                    {
                        SectionDataType = PreSearchFilterType.Skill,
                        Options         = new List <PreSearchFilterOption>()
                        {
                            new PreSearchFilterOption()
                            {
                                OptionKey = "Skill2", IsSelected = true
                            }
                        }
                    }
                };
            }

            A.CallTo(() => searchServiceFake.SearchAsync(A <string> ._, A <SearchProperties> ._)).Returns(dummySearchResult);
            A.CallTo(() => buildSearchFilterServiceFake.GetSearchTerm(A <SearchProperties> ._, A <PreSearchFiltersResultsModel> ._, A <string[]> ._)).Returns("*");
            A.CallTo(() => buildSearchFilterServiceFake.BuildPreSearchFilters(A <PreSearchFiltersResultsModel> ._, A <Dictionary <string, PreSearchFilterLogicalOperator> > ._)).Returns(nameof(SearchProperties.FilterBy));
            A.CallTo(() => stateManagerFake.GetPreSearchFilterState()).Returns(testPreSearchFilterState);
            A.CallTo(() => stateManagerFake.GetStateJson()).Returns(string.Empty);
            A.CallTo(() => stateManagerFake.RestoreState(A <string> ._)).DoesNothing();
            A.CallTo(() => stateManagerFake.UpdateSectionState(A <PreSearchFilterSection> ._)).DoesNothing();

            //Instantiate & Act
            var psfSearchController = new PsfSearchController(searchServiceFake, webAppContextFake, mapperCfg.CreateMapper(), asyncHelper, buildSearchFilterServiceFake, stateManagerFake, loggerFake)
            {
                JobProfileDetailsPage  = defaultJobProfilePage,
                ShowMacthingSkillCount = shouldShowMatchingCount
            };

            var searchMethodCall = psfSearchController.WithCallTo(c => c.Index(new PsfModel {
                Section = new PsfSection {
                    Options = new List <PsfOption>()
                }
            }, new PsfSearchResultsViewModel(), 1));

            //Assert
            searchMethodCall
            .ShouldRenderView("SearchResult")
            .WithModel <PsfSearchResultsViewModel>(vm =>
            {
                vm.SearchResults.FirstOrDefault().MatchingSkillsCount.Should().Be(expectedMatchingCount);
            })
            .AndNoModelErrors();
        }
        public void IndexSearchPagingTest(int resultCount)
        {
            var searchServiceFake     = A.Fake <ISearchQueryService <JobProfileIndex> >(ops => ops.Strict());
            var loggerFake            = A.Fake <IApplicationLogger>();
            var asyncHelper           = new AsyncHelper();
            var webAppContextFake     = A.Fake <IWebAppContext>(ops => ops.Strict());
            var defaultJobProfilePage = "/jobprofile-details/";
            var stateManagerFake      = A.Fake <IPreSearchFilterStateManager>(ops => ops.Strict());
            var mapperCfg             = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile <JobProfilesAutoMapperProfile>();
            });
            var buildSearchFilterServiceFake = A.Fake <IBuildSearchFilterService>(ops => ops.Strict());

            // Set up calls
            var expectedSearchResultsViewModel = Enumerable.Empty <JobProfileSearchResultItemViewModel>();
            var dummySearchResult    = A.Dummy <SearchResult <JobProfileIndex> >();
            var expectedTotalMessage = resultCount == 1 ? "1 result found" : $"{resultCount} results found";

            var dummyIndex = new JobProfileIndex
            {
                Title                       = nameof(JobProfileIndex.Title),
                AlternativeTitle            = new[] { "alt" },
                SalaryStarter               = 10,
                SalaryExperienced           = 10,
                Overview                    = "overview",
                UrlName                     = "dummy-url",
                JobProfileCategoriesWithUrl = new[] { "CatOneURL|Cat One", "CatTwoURL|Cat Two" }
            };

            dummySearchResult.Count = resultCount;
            var endList = new List <SearchResultItem <JobProfileIndex> >(resultCount);

            for (var i = 0; i < resultCount; i++)
            {
                endList.Add(new SearchResultItem <JobProfileIndex>
                {
                    ResultItem = dummyIndex
                });
            }

            dummySearchResult.Results = endList;

            var expectedVmList = new List <JobProfileSearchResultItemViewModel>();

            foreach (var dummyResult in dummySearchResult.Results)
            {
                expectedVmList.Add(
                    new JobProfileSearchResultItemViewModel
                {
                    ResultItemTitle            = dummyResult.ResultItem.Title,
                    ResultItemAlternativeTitle = string.Join(", ", dummyResult.ResultItem.AlternativeTitle).Trim().TrimEnd(','),
                    ResultItemSalaryRange      = string.Format(new CultureInfo("en-GB", false), "{0:C0} to {1:C0}", dummyResult.ResultItem.SalaryStarter, dummyResult.ResultItem.SalaryExperienced),
                    ResultItemOverview         = dummyResult.ResultItem.Overview,
                    ResultItemUrlName          = $"{defaultJobProfilePage}{dummyResult.ResultItem.UrlName}",
                    Rank  = (int)dummyResult.Rank,
                    Score = dummyResult.Score,
                    JobProfileCategoriesWithUrl = dummyResult.ResultItem.JobProfileCategoriesWithUrl
                });
            }

            expectedSearchResultsViewModel = expectedVmList.AsEnumerable();

            A.CallTo(() => searchServiceFake.SearchAsync(A <string> ._, A <SearchProperties> ._)).Returns(dummySearchResult);
            A.CallTo(() => buildSearchFilterServiceFake.GetSearchTerm(A <SearchProperties> ._, A <PreSearchFiltersResultsModel> ._, A <string[]> ._))
            .Returns("*");
            A.CallTo(() => buildSearchFilterServiceFake.BuildPreSearchFilters(A <PreSearchFiltersResultsModel> ._, A <Dictionary <string, PreSearchFilterLogicalOperator> > ._))
            .Returns(nameof(SearchProperties.FilterBy));
            A.CallTo(() => stateManagerFake.GetPreSearchFilterState()).Returns(new PreSearchFilterState());
            A.CallTo(() => stateManagerFake.GetStateJson()).Returns(string.Empty);
            A.CallTo(() => stateManagerFake.RestoreState(A <string> ._)).DoesNothing();
            A.CallTo(() => stateManagerFake.UpdateSectionState(A <PreSearchFilterSection> ._)).DoesNothing();

            //Instantiate & Act
            var psfSearchController = new PsfSearchController(searchServiceFake, webAppContextFake, mapperCfg.CreateMapper(), asyncHelper, buildSearchFilterServiceFake, stateManagerFake, loggerFake)
            {
                JobProfileDetailsPage = defaultJobProfilePage
            };

            var searchMethodCall = psfSearchController.WithCallTo(c => c.Index(new PsfModel {
                Section = new PsfSection {
                    Options = new List <PsfOption>()
                }
            }, new PsfSearchResultsViewModel(), 1));

            //Assert
            searchMethodCall
            .ShouldRenderView("SearchResult")
            .WithModel <PsfSearchResultsViewModel>(vm =>
            {
                vm.MainPageTitle.Should().Be(psfSearchController.MainPageTitle);
                vm.SecondaryText.Should().BeEquivalentTo(psfSearchController.SecondaryText);
                vm.TotalResultsMessage.Should().Be(expectedTotalMessage);
                vm.TotalResultCount.Should().Be(resultCount);
                vm.SearchResults.Should().NotBeNull();
                vm.SearchResults.Should().BeEquivalentTo(expectedSearchResultsViewModel);
                vm.BackPageUrl.OriginalString.Should().BeEquivalentTo(psfSearchController.BackPageUrl);
                vm.BackPageUrlText.Should().BeEquivalentTo(psfSearchController.BackPageUrlText);
            })
            .AndNoModelErrors();

            A.CallTo(() => searchServiceFake.SearchAsync(A <string> ._, A <SearchProperties> ._)).MustHaveHappened();
            A.CallTo(() => buildSearchFilterServiceFake.BuildPreSearchFilters(A <PreSearchFiltersResultsModel> ._, A <Dictionary <string, PreSearchFilterLogicalOperator> > ._))
            .MustHaveHappened();
            A.CallTo(() => stateManagerFake.RestoreState(A <string> ._)).MustHaveHappened();
            A.CallTo(() => stateManagerFake.GetPreSearchFilterState()).MustHaveHappened();
            A.CallTo(() => stateManagerFake.GetStateJson()).MustHaveHappened();
        }
示例#18
0
    internal static unsafe IOCompletionCallback MyCallback(AsyncHelper helper)
    {
        IOCompletionCallback del = delegate (uint param1, uint param2, NativeOverlapped* overlapped)
        {

            Overlapped ov = new Overlapped();
            NativeOverlapped* nativeOverlapped2 = ov.Pack(helper.Callback, null);
            ThreadPool.UnsafeQueueNativeOverlapped(nativeOverlapped2);
        };

        return del;
    }
示例#19
0
 public void Send(NoticeMessageInput input)
 {
     AsyncHelper.RunSync(() => SendAsync(input));
 }
示例#20
0
 public static void ResetAllFeatures <TTenant, TUser>(this TenantManager <TTenant, TUser> tenantManager, int tenantId)
     where TTenant : CommonFrameTenant <TUser>
     where TUser : CommonFrameUser <TUser>
 {
     AsyncHelper.RunSync(() => tenantManager.ResetAllFeaturesAsync(tenantId));
 }
示例#21
0
        private void actConnectServer_Execute(object sender, EventArgs e)
        {
            var names = new List <string>();

            names.Add("Start Page");
            foreach (var item in treeView1.Nodes)
            {
                var serverNode = item as ServerTreeNode;
                if (serverNode != null)
                {
                    names.Add(serverNode.DisplayName);
                }
            }

            var dialog = new ConnectionWizard(_serviceContainer, names.ToArray());

            if (dialog.ShowDialog(this) != DialogResult.OK)
            {
                return;
            }

            var            data = (ConnectionWizardData)dialog.WizardData;
            ServerTreeNode node;

            if (data.Mode == WorkingMode.Jexus)
            {
                node = ServerTreeNode.CreateJexusNode(
                    _serviceContainer,
                    data.Name,
                    data.HostName,
                    data.UserName + "|" + data.Password,
                    data.CertificateHash,
                    data.Server,
                    isLocalhost: true);
                node.SetHandler();
                var path   = Path.GetTempFileName();
                var random = Guid.NewGuid().ToString();
                File.WriteAllText(path, random);
                node.IsLocalhost        = AsyncHelper.RunSync(() => ((JexusServerManager)node.ServerManager).LocalhostTestAsync(path, random));
                data.Server.IsLocalhost = node.IsLocalhost;
            }
            else
            {
                node = ServerTreeNode.CreateIisExpressNode(
                    _serviceContainer,
                    data.Name,
                    data.FileName,
                    data.Server,
                    ignoreInCache: false);
            }

            try
            {
                RegisterServer(node);
                // TODO: trigger the load in connection wizard to throw exception earlier.
                node.LoadServer(cmsApplicationPools, cmsSites, cmsSite);
                actSave.Enabled = true;
            }
            catch (Exception ex)
            {
                File.WriteAllText(DialogHelper.DebugLog, ex.ToString());
                var last = ex;
                while (last is AggregateException)
                {
                    last = last.InnerException;
                }

                var message = new StringBuilder();
                message.AppendLine("Could not connect to the specified computer.")
                .AppendLine()
                .AppendFormat("Details: {0}", last?.Message);
                MessageBox.Show(message.ToString(), Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
示例#22
0
 public static IdentityResult Create <TTenant, TUser>(this TenantManager <TTenant, TUser> tenantManager, TTenant tenant)
     where TTenant : CommonFrameTenant <TUser>
     where TUser : CommonFrameUser <TUser>
 {
     return(AsyncHelper.RunSync(() => tenantManager.CreateAsync(tenant)));
 }
示例#23
0
 public async Task StartAsync(CancellationToken cancellationToken)
 {
     await AsyncHelper.DoAsync(Start, cancellationToken);
 }
示例#24
0
 /// <summary>
 /// Authorizes current user for given permission or permissions,
 /// throws <see cref="AbpAuthorizationException"/> if not authorized.
 /// User it authorized if any of the <see cref="permissionNames"/> are granted.
 /// </summary>
 /// <param name="permissionChecker">Permission checker</param>
 /// <param name="requireAll">
 /// If this is set to true, all of the <see cref="permissionNames"/> must be granted.
 /// If it's false, at least one of the <see cref="permissionNames"/> must be granted.
 /// </param>
 /// <param name="permissionNames">Name of the permissions to authorize</param>
 /// <exception cref="AbpAuthorizationException">Throws authorization exception if</exception>
 public static void Authorize(this IPermissionChecker permissionChecker, bool requireAll, params string[] permissionNames)
 {
     AsyncHelper.RunSync(() => AuthorizeAsync(permissionChecker, requireAll, permissionNames));
 }
 public static TTenant FindByTenancyName <TTenant, TUser>(this AbpTenantManager <TTenant, TUser> tenantManager, string tenancyName)
     where TTenant : AbpTenant <TUser>
     where TUser : AbpUserBase
 {
     return(AsyncHelper.RunSync(() => tenantManager.FindByTenancyNameAsync(tenancyName)));
 }
示例#26
0
 /// <summary>
 /// Checks if a user is granted for a permission.
 /// </summary>
 /// <param name="permissionChecker">Permission checker</param>
 /// <param name="user">User to check</param>
 /// <param name="permissionName">Name of the permission</param>
 public static bool IsGranted(this IPermissionChecker permissionChecker, UserIdentifier user, string permissionName)
 {
     return(AsyncHelper.RunSync(() => permissionChecker.IsGrantedAsync(user, permissionName)));
 }
 public static IReadOnlyList <NameValue> GetFeatureValues <TTenant, TUser>(this AbpTenantManager <TTenant, TUser> tenantManager, int tenantId)
     where TTenant : AbpTenant <TUser>
     where TUser : AbpUserBase
 {
     return(AsyncHelper.RunSync(() => tenantManager.GetFeatureValuesAsync(tenantId)));
 }
示例#28
0
 /// <summary>
 /// Checks if current user is granted for given permission.
 /// </summary>
 /// <param name="permissionChecker">Permission checker</param>
 /// <param name="requiresAll">True, to require all given permissions are granted. False, to require one or more.</param>
 /// <param name="permissionNames">Name of the permissions</param>
 public static bool IsGranted(this IPermissionChecker permissionChecker, bool requiresAll, params string[] permissionNames)
 {
     return(AsyncHelper.RunSync(() => IsGrantedAsync(permissionChecker, requiresAll, permissionNames)));
 }
 public static void SetFeatureValue <TTenant, TUser>(this AbpTenantManager <TTenant, TUser> tenantManager, TTenant tenant, string featureName, string value)
     where TTenant : AbpTenant <TUser>
     where TUser : AbpUserBase
 {
     AsyncHelper.RunSync(() => tenantManager.SetFeatureValueAsync(tenant, featureName, value));
 }
示例#30
0
 public override byte[] SendMsg(byte[] message)
 {
     return(AsyncHelper.RunSync(() => SendMsgAsync(message)));
 }
 public static void ResetAllFeatures <TTenant, TUser>(this AbpTenantManager <TTenant, TUser> tenantManager, int tenantId)
     where TTenant : AbpTenant <TUser>
     where TUser : AbpUserBase
 {
     AsyncHelper.RunSync(() => tenantManager.ResetAllFeaturesAsync(tenantId));
 }
示例#32
0
 protected virtual void OverrideOptions(IdentityOptions options)
 {
     AsyncHelper.RunSync(() => OverrideOptionsAsync(options));
 }
示例#33
0
    public static unsafe void UnPackTest()
    {
        Assert.Throws<ArgumentNullException>(() => Overlapped.Unpack(null));

        Overlapped ov = new Overlapped();
        var helper = new AsyncHelper();
        IOCompletionCallback callback = MyCallback(helper);
        NativeOverlapped* nativeOverlapped = ov.Pack(new IOCompletionCallback(callback), null);
        try
        {
            Assert.True(null != nativeOverlapped);

            Overlapped ov1 = Overlapped.Unpack(nativeOverlapped);
            Assert.Same(ov1, ov);
        }
        finally
        {
            Overlapped.Free(nativeOverlapped);
        }
    }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="doWork"></param>
 /// <param name="workDone"></param>
 public static AsyncHelper Start(AsyncHelper.DoWork doWork, AsyncHelper.WorkDone workDone, System.Windows.Forms.Form owner, string progressCaption)
 {
     var i = new ProgressAsyncHelper(doWork, workDone, owner, progressCaption);
     return i.m_asyncHelper;
 }
 protected virtual User GetCurrentUser()
 {
     return(AsyncHelper.RunSync(GetCurrentUserAsync));
 }
示例#36
0
        private async void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
        {
            // Get a deferral because we use an awaitable API below to respond to the message
            // and we don't want this call to get cancelled while we are waiting.
            var messageDeferral = args.GetDeferral();

            var message    = args.Request.Message;
            var returnData = new ValueSet();

            string command = message["q"] as string;

            switch (command)
            {
            case "lyric":
                var title = message["title"] as string;
                message.TryGetValue("artist", out object art);
                var artists = art as string;
                message.TryGetValue("album", out object alb);
                var lyalbum = alb as string;

                var localLrc = await LyricSearcher.SearchLrcLocalAsync(title, artists, lyalbum);

                if (!localLrc.IsNullorEmpty())
                {
                    returnData.Add("result", localLrc);

                    returnData.Add("status", 1);
                    break;
                }
                if (message.ContainsKey("ID") && message.ContainsKey("service") && message["service"] as string == "Aurora.Music.Services")
                {
                    var result = await LyricSearcher.GetSongLrcByID(message["ID"] as string);

                    if (!result.IsNullorEmpty())
                    {
                        await LyricSearcher.SaveLrcLocalAsync(title, artists, lyalbum, result);

                        returnData.Add("result", result);
                        returnData.Add("status", 1);
                        break;
                    }
                }
                var substitutes = await LyricSearcher.GetSongLrcListAsync(title, artists);

                if (!substitutes.IsNullorEmpty())
                {
                    var result = await ApiRequestHelper.HttpGet(substitutes.First().Value);

                    if (!result.IsNullorEmpty())
                    {
                        result = HttpUtility.HtmlDecode(result);
                        await LyricSearcher.SaveLrcLocalAsync(title, artists, lyalbum, result);

                        returnData.Add("result", result);
                        returnData.Add("status", 1);
                    }
                    else
                    {
                        returnData.Add("result", null);
                        returnData.Add("status", 0);
                    }
                }
                else
                {
                    returnData.Add("result", null);
                    returnData.Add("status", 0);
                }
                break;

            case "online_music":
                var action = message["action"] as string;
                switch (action)
                {
                case "search":
                    var result = await OnlineMusicSearcher.SearchAsync(message["keyword"] as string);

                    var resultList = new List <PropertySet>();
                    if (result == null && result.Data != null)
                    {
                        returnData.Add("status", 0);
                        break;
                    }

                    foreach (var item in result.Data.Song.ListItems)
                    {
                        var set = new PropertySet
                        {
                            ["title"]        = item.Title,
                            ["description"]  = item.SingerItems[0]?.Title,
                            ["addtional"]    = item.Album.Title,
                            ["picture_path"] = OnlineMusicSearcher.GeneratePicturePathByID(item.Album.Mid),
                            ["type"]         = "song",
                            ["id"]           = new string[] { item.Mid },
                            ["album_id"]     = item.Album.Mid
                        };
                        resultList.Add(set);
                    }


                    if (!resultList.IsNullorEmpty())
                    {
                        returnData.Add("search_result", JsonConvert.SerializeObject(resultList.ToArray()));
                        returnData.Add("status", 1);
                    }
                    break;

                case "song":
                    var song = await OnlineMusicSearcher.GetSongAsync(message["id"] as string);

                    if (song != null && !song.DataItems.IsNullorEmpty())
                    {
                        DateTime.TryParseExact(song.DataItems[0].Album.Time_Public, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var t);

                        // TODO: property
                        var songRes = new PropertySet
                        {
                            ["title"]       = song.DataItems[0].Title,
                            ["id"]          = song.DataItems[0].Mid,
                            ["album"]       = song.DataItems[0].Album.Name,
                            ["album_id"]    = song.DataItems[0].Album.Mid,
                            ["performers"]  = song.DataItems[0].SingerItems.Select(x => x.Name).ToArray(),
                            ["year"]        = t.Year,
                            ["bit_rate"]    = Settings.Current.GetPreferredBitRate() * 1000,
                            ["track"]       = song.DataItems[0].Index_Album,
                            ["track_count"] = 0,
                            ["duration"]    = TimeSpan.Zero.ToString()
                        };
                        songRes["album_artists"] = songRes["performers"];
                        var picture = OnlineMusicSearcher.GeneratePicturePathByID(song.DataItems[0].Album.Mid);
                        songRes["picture_path"] = picture;
                        songRes["file_url"]     = await OnlineMusicSearcher.GenerateFileUriByID(message["id"] as string, Settings.Current.GetPreferredBitRate());

                        songRes["file_type"] = OnlineMusicSearcher.GenerateFileTypeByID(message["id"] as string, Settings.Current.GetPreferredBitRate());
                        returnData.Add("song_result", JsonConvert.SerializeObject(songRes));
                        returnData.Add("status", 1);
                    }

                    break;

                case "album":
                    var album = await OnlineMusicSearcher.GetAlbumAsync(message["id"] as string);

                    if (album != null && album.Data != null)
                    {
                        DateTime.TryParseExact(album.Data.GetAlbumInfo.Fpublic_Time, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var t);
                        var albumRes = new PropertySet
                        {
                            ["name"]         = album.Data.GetAlbumInfo.Falbum_Name,
                            ["desription"]   = album.Data.GetAlbumDesc.Falbum_Desc.Replace("\n", "\r\n\r\n"),
                            ["year"]         = t.Year,
                            ["track_count"]  = album.Data.GetSongInfoItems.Count,
                            ["disc_count"]   = album.Data.GetSongInfoItems.Max(x => x.Index_Cd) + 1,
                            ["picture_path"] = OnlineMusicSearcher.GeneratePicturePathByID(message["id"] as string),
                            ["genres"]       = new string[] { album.Data.Genre }
                        };
                        returnData.Add("album_result", JsonConvert.SerializeObject(albumRes));
                        returnData.Add("songs", JsonConvert.SerializeObject(album.Data.GetSongInfoItems.Select(x =>
                        {
                            var p = new PropertySet()
                            {
                                ["id"]           = x.Mid,
                                ["title"]        = x.Name,
                                ["album"]        = x.Album.Name,
                                ["album_id"]     = x.Album.Mid,
                                ["performers"]   = x.SingerItems.Select(y => y.Name).ToArray(),
                                ["year"]         = t.Year,
                                ["bit_rate"]     = Settings.Current.GetPreferredBitRate() * 1000,
                                ["picture_path"] = OnlineMusicSearcher.GeneratePicturePathByID(x.Album.Mid),
                                ["track"]        = x.Index_Album,
                                ["duration"]     = TimeSpan.Zero.ToString(),
                                ["file_url"]     = AsyncHelper.RunSync(async() => await OnlineMusicSearcher.GenerateFileUriByID(x.Mid, Settings.Current.GetPreferredBitRate())),
                                ["file_type"]    = OnlineMusicSearcher.GenerateFileTypeByID(x.Mid, Settings.Current.GetPreferredBitRate())
                            };
                            p["album_artists"] = p["performers"];
                            return(p);
                        })));
                        returnData.Add("album_artists", JsonConvert.SerializeObject(album.Data.SingerInfoItems.Select(x =>
                        {
                            return(new PropertySet()
                            {
                                ["name"] = x.Fsinger_Name,
                                ["id"] = x.Fsinger_Mid,
                            });
                        })));
                        returnData.Add("status", 1);
                    }
                    break;

                case "artist":
                    var artist = await OnlineMusicSearcher.GetArtistAsync(message["id"] as string);

                    break;

                default:
                    break;
                }
                break;

            case "online_meta":
                var meta_action = message["action"] as string;
                switch (meta_action)
                {
                case "album":
                    var meta_album = await LastfmSearcher.GetAlbumInfo(message["album"] as string, message["artist"] as string);

                    if (meta_album != null)
                    {
                        returnData.Add("status", 1);
                        returnData.Add("album_result", JsonConvert.SerializeObject(new PropertySet()
                        {
                            ["name"]    = meta_album.Name,
                            ["artwork"] = meta_album.AltArtwork?.OriginalString,
                            ["desc"]    = meta_album.Description,
                            ["artist"]  = meta_album.Artist,
                            ["year"]    = meta_album.Year
                        }));
                    }
                    break;

                case "artist":
                    var meta_artist = await LastfmSearcher.GetArtistInfo(message["artist"] as string);

                    if (meta_artist != null)
                    {
                        returnData.Add("status", 1);
                        returnData.Add("artist_result", JsonConvert.SerializeObject(new PropertySet()
                        {
                            ["name"]   = meta_artist.Name,
                            ["avatar"] = meta_artist.AvatarUri?.OriginalString,
                            ["desc"]   = meta_artist.Description,
                        }));
                    }
                    break;
                }
                break;

            default:
                returnData.Add("status", 0);
                break;
            }


            await args.Request.SendResponseAsync(returnData);

            // Return the data to the caller.
            // Complete the deferral so that the platform knows that we're done responding to the app service call.
            // Note for error handling: this must be called even if SendResponseAsync() throws an exception.
            messageDeferral.Complete();
        }
        private string GetResponse(string uri, string query)
        {
            allDone.Reset();

            HttpWebRequest request = HttpWebRequest.Create(uri) as HttpWebRequest;
            request.Method = "POST";

            AsyncHelper asyncHlp = new AsyncHelper() { Query = query, Request = request };
            request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), asyncHlp);

            allDone.WaitOne();

            return asyncHlp.Result;
        }
 /// <summary>
 /// Checks if permission dependency is satisfied.
 /// </summary>
 /// <param name="permissionDependency">The permission dependency</param>
 /// <param name="context">Context.</param>
 public static bool IsSatisfied(this IPermissionDependency permissionDependency, IPermissionDependencyContext context)
 {
     return(AsyncHelper.RunSync(() => permissionDependency.IsSatisfiedAsync(context)));
 }