Beispiel #1
0
        public void RedisManagerPool_alternates_hosts()
        {
            using (var redisManager = new RedisManagerPool(MasterHosts))
            {
                using (var master = redisManager.GetClient())
                {
                    Assert.That(master.GetHostString(), Is.EqualTo(MasterHosts[0]));
                    master.SetValue("KEY", "1");
                }
                using (var master = redisManager.GetClient())
                {
                    Assert.That(master.GetHostString(), Is.EqualTo(MasterHosts[0]));
                    master.Increment("KEY", 1);
                }

                5.Times(i =>
                {
                    using (var readOnly = redisManager.GetReadOnlyClient())
                    {
                        Assert.That(readOnly.GetHostString(), Is.EqualTo(MasterHosts[0]));
                        Assert.That(readOnly.GetValue("KEY"), Is.EqualTo("2"));
                    }
                });

                using (var cahce = redisManager.GetCacheClient())
                {
                    Assert.That(cahce.Get <string>("KEY"), Is.EqualTo("2"));
                }
            }
        }
        static void Main(string[] args)
        {
            var redisManager = new RedisManagerPool("localhost:6379");


            using (var redis = redisManager.GetCacheClient())
            {
                try
                {
                    var json = "{\"acct_id\":1016,\"user_id\":\"17\",\"email_address\":\"[email protected]\",\"api_key\":\"asfasfasfasd\",\"subscription\":{\"subscription_id\":1,\"urls_per_month\":1000,\"max_retention_days\":15,\"cost_per_month_usd\":5.00},\"created_date\":\"2019-04-06T19:19:59.4200190Z\",\"start_current_month\":\"2019-04-06T19:19:59.4200900Z\",\"stripe_subscription\":{\"id\":\"safasdsda\",\"object\":\"subscription\",\"billing\":\"charge_automatically\",\"billingCycleAnchor\":\"2019-04-06T19:19:55.0000000Z\",\"cancelAtPeriodEnd\":false,\"created\":\"2019-04-06T19:19:55.0000000Z\",\"currentPeriodEnd\":\"2019-04-13T19:19:55.0000000Z\",\"currentPeriodStart\":\"2019-04-06T19:19:55.0000000Z\",\"items\":[{\"id\":\"sadf\",\"object\":\"subscription_item\",\"created\":\"2019-04-06T19:19:56.0000000Z\",\"metadata\":{},\"plan\":{\"id\":\"plan_EpYQHnD2Ksn25r\",\"object\":\"plan\",\"active\":true,\"aggregateUsage\":\"sum\",\"amount\":1,\"billingScheme\":\"per_unit\",\"created\":\"2019-04-05T14:46:52.0000000Z\",\"currency\":\"usd\",\"interval\":\"week\",\"intervalCount\":1,\"livemode\":false,\"metadata\":{},\"nickname\":\"per url\",\"usageType\":\"metered\"},\"quantity\":0,\"subscription\":\"sub_Eq03qDgdXjV8zu\"}],\"livemode\":false,\"metadata\":{},\"plan\":{\"id\":\"asdfsad\",\"object\":\"plan\",\"active\":true,\"aggregateUsage\":\"sum\",\"amount\":1,\"billingScheme\":\"per_unit\",\"created\":\"2019-04-05T14:46:52.0000000Z\",\"currency\":\"usd\",\"interval\":\"week\",\"intervalCount\":1,\"livemode\":false,\"metadata\":{},\"nickname\":\"per url\",\"usageType\":\"metered\"},\"quantity\":1,\"start\":\"2019-04-06T19:19:55.0000000Z\",\"status\":\"active\"},\"stripe_customer\":{\"id\":\"cus_Eq03mgKkLr5YHj\",\"object\":\"customer\",\"accountBalance\":0,\"created\":\"2019-04-06T19:19:54.0000000Z\",\"defaultSourceId\":\"card_1EMK3SKf8n8rpwYnBMEp5u4V\",\"delinquent\":false,\"email\":\"[email protected]\",\"invoicePrefix\":\"7927E6A6\",\"invoiceSettings\":{},\"livemode\":false,\"metadata\":{},\"sources\":[{\"__type\":\"Stripe.Card, Stripe.net\",\"id\":\"card_1EMK3SKf8n8rpwYnBMEp5u4V\",\"object\":\"card\",\"brand\":\"Visa\",\"country\":\"US\",\"defaultForCurrency\":false,\"expMonth\":4,\"expYear\":2020,\"fingerprint\":\"eSS4xyRaH5gdg55C\",\"funding\":\"credit\",\"last4\":\"4242\",\"metadata\":{}}],\"subscriptions\":[]}}";
                    var acct = ServiceStack.Text.JsonSerializer.DeserializeFromString <SubscriptionAccount>(json);

                    //items are null, try to put it back in and reserialize
                    acct.stripe_subscription.Items      = new Stripe.StripeList <Stripe.SubscriptionItem>();
                    acct.stripe_subscription.Items.Data = new List <Stripe.SubscriptionItem>();

                    var json2 = acct.ToJson();
                    var acct2 = ServiceStack.Text.JsonSerializer.DeserializeFromString <SubscriptionAccount>(json2);


                    if (acct2.stripe_subscription.Items == null)
                    {
                        throw new Exception("Items null");
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }
Beispiel #3
0
        public void RedisManagerPool_alternates_hosts()
        {
            using (var redisManager = new RedisManagerPool(Config.MasterHosts)) {
                using (var master = redisManager.GetClient()) {
                    Assert.That(master.GetHostString(), Is.EqualTo(Config.Sentinel6380));
                    master.SetValue("KEY", "1");
                }

                using (var master = redisManager.GetClient()) {
                    Assert.That(master.GetHostString(), Is.EqualTo(Config.Sentinel6380));
                    master.Increment("KEY", 1);
                }

                for (var i = 0; i < 5; i++)
                {
                    using (var readOnly = redisManager.GetReadOnlyClient()) {
                        Assert.That(readOnly.GetHostString(), Is.EqualTo(Config.Sentinel6380));
                        Assert.That(readOnly.GetValue("KEY"), Is.EqualTo("2"));
                    }
                }

                using (var cache = redisManager.GetCacheClient()) {
                    Assert.That(cache.Get <string>("KEY"), Is.EqualTo("2"));
                }
            }
        }
        public void RedisManagerPool_alternates_hosts()
        {
            using (var redisManager = new RedisManagerPool(MasterHosts))
            {
                using (var master = redisManager.GetClient())
                {
                    Assert.That(master.GetHostString(), Is.EqualTo(MasterHosts[0]));
                    master.SetValue("KEY", "1");
                }
                using (var master = redisManager.GetClient())
                {
                    Assert.That(master.GetHostString(), Is.EqualTo(MasterHosts[0]));
                    master.Increment("KEY", 1);
                }

                5.Times(i =>
                {
                    using (var readOnly = redisManager.GetReadOnlyClient())
                    {
                        Assert.That(readOnly.GetHostString(), Is.EqualTo(MasterHosts[0]));
                        Assert.That(readOnly.GetValue("KEY"), Is.EqualTo("2"));
                    }
                });

                using (var cahce = redisManager.GetCacheClient())
                {
                    Assert.That(cahce.Get<string>("KEY"), Is.EqualTo("2"));
                }
            }
        }
Beispiel #5
0
        public override void Configure(Container container)
        {
            JsConfig.TextCase = TextCase.CamelCase;

            var debugMode  = AppSettings.Get(nameof(HostConfig.DebugMode), false);
            var hostConfig = new HostConfig
            {
                DebugMode = debugMode
            };

            var allowFiles = AppSettings.GetList("AllowFileExtensions").ToList();

            allowFiles.ForEach(ext => hostConfig.AllowFileExtensions.Add(ext));

            if (!debugMode)
            {
                hostConfig.EnableFeatures = Feature.All.Remove(Feature.Metadata);
            }
            else
            {
                Plugins.Add(new OpenApiFeature());
            }

            SetConfig(hostConfig);

            Plugins.Add(new CorsFeature(
                            allowedHeaders: "Content-Type,Authorization"
                            ));

            // 开启 auto query 特性
            Plugins.Add(new AutoQueryFeature
            {
                MaxLimit              = 100,
                IncludeTotal          = true,
                EnableAutoQueryViewer = false
            });

            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                        new IAuthProvider[]
            {
                new JwtAuthProvider(AppSettings)
                {
                    AuthKeyBase64           = AppSettings.GetString("jwt.AuthKeyBase64"),
                    RequireSecureConnection = false,
                    ExpireTokensIn          = TimeSpan.FromMinutes(AppSettings.Get <int>("jwt.ExpireTokensIn"))
                },
                new CustomCredentialsAuthProvider()
            })
            {
                // 以字母开头,可包含数字,字母和下划线.长度为:3 ~ 20
                ValidUserNameRegEx = new Regex(@"\w+[\d_\w]{3,20}", RegexOptions.Compiled),
                ServiceRoutes      = new Dictionary <Type, string[]>
                {
                    { typeof(AuthenticateService), new[] { "/auth", "/auth/{provider}" } }
                }
            });

            // 注册验证功能
            Plugins.Add(new ValidationFeature());
            container.RegisterValidators(typeof(PermissionValidator).Assembly);

            // redis init
            var redisConnStr = $"redis://{AppSettings.Get<string>("RedisHost")}:{AppSettings.Get<string>("RedisPort")}";
            var redisManager = new RedisManagerPool(redisConnStr);

            container.Register <IRedisClientsManager>(c => redisManager);
            container.Register(c => redisManager.GetCacheClient());

            var dbHost     = AppSettings.Get <string>("DBHost");
            var dbPort     = AppSettings.Get <string>("DBPort");
            var dbUser     = AppSettings.Get <string>("DBUser");
            var dbPassword = AppSettings.Get <string>("DBPassword");
            var dbParam    = AppSettings.Get <string>("DBParam");
            var dbConnStr  = $"Server={dbHost};Port={dbPort};Uid={dbUser};Pwd={dbPassword};{dbParam}";
            var dbFactory  = new OrmLiteConnectionFactory(dbConnStr, MySqlDialect.Provider)
            {
                AutoDisposeConnection = true,
                ConnectionFilter      = db => new ProfiledDbConnection((DbConnection)db, MiniProfiler.Current)
            };

            ErrorMessages.InvalidUsernameOrPassword = "******";
            ErrorMessages.IllegalUsername           = "******";
            ErrorMessages.NotAuthenticated          = "未验证";

//            dbFactory.RegisterConnection();
            // TODO: 根据配置注册其它数据库.

            container.Register <IDbConnectionFactory>(c => dbFactory);
            container.Register <ICacheClient>(new MemoryCacheClient());
            container.Register <IAuthRepository>(c => new OrmLiteAuthRepository <UserInfo, UserAuthDetails>(dbFactory)
            {
                UseDistinctRoleTables = false
            });

//            container.Register<IAccountManage>(c => new MyAccountManager<UserInfo>());
            container.RegisterAs <OrgManage, IOrgManage>();
            container.RegisterAs <ReflectionManage, IReflectionManage>();
            container.Register <ISchemaManage>(c => new MysqlSchemaManage("MyApp_db"));

//            InitData(container);
        }
Beispiel #6
0
 public override ICacheClient GetCacheClient()
 {
     return(RedisManagerPool.GetCacheClient());
 }