@@ -13,6 +13,7 @@ use mrubyedge::{
1313} ;
1414
1515use crate :: redis:: { make_redis_object, RedisConn , RedisData } ;
16+ use crate :: value:: parse_redis_conn_params;
1617
1718// ---------------------------------------------------------------------------
1819// Internal data types
@@ -78,25 +79,12 @@ fn make_pool_object(vm: &mut VM, pool: r2d2::Pool<redis::Client>) -> Rc<RObject>
7879// RedisConnectionPool class methods
7980// ---------------------------------------------------------------------------
8081
81- /// RedisConnectionPool.new(size: 5, timeout: 5, host: "127.0.0.1", port: 6379, tls: false)
82+ /// RedisConnectionPool.new(size: 5, timeout: 5, host: "127.0.0.1", port: 6379, tls: false, username: nil, password: nil )
8283fn mrb_pool_new ( vm : & mut VM , _args : & [ Rc < RObject > ] ) -> Result < Rc < RObject > , Error > {
83- let mut host = "127.0.0.1" . to_string ( ) ;
84- let mut port: u16 = 6379 ;
85- let mut tls = false ;
8684 let mut size: u32 = 5 ;
8785 let mut timeout: u64 = 5 ;
8886
8987 if let Some ( kwargs) = vm. get_kwargs ( ) {
90- if let Some ( h) = kwargs. get ( "host" ) {
91- host = h. as_ref ( ) . try_into ( ) ?;
92- }
93- if let Some ( p) = kwargs. get ( "port" ) {
94- let p_val: i64 = p. as_ref ( ) . try_into ( ) ?;
95- port = p_val as u16 ;
96- }
97- if let Some ( t) = kwargs. get ( "tls" ) {
98- tls = t. is_truthy ( ) ;
99- }
10088 if let Some ( s) = kwargs. get ( "size" ) {
10189 let s_val: i64 = s. as_ref ( ) . try_into ( ) ?;
10290 size = s_val as u32 ;
@@ -107,9 +95,8 @@ fn mrb_pool_new(vm: &mut VM, _args: &[Rc<RObject>]) -> Result<Rc<RObject>, Error
10795 }
10896 }
10997
110- let scheme = if tls { "rediss" } else { "redis" } ;
111- let url = format ! ( "{}://{}:{}" , scheme, host, port) ;
112- let client = redis:: Client :: open ( url. as_str ( ) )
98+ let params = parse_redis_conn_params ( vm) ;
99+ let client = redis:: Client :: open ( params. url . as_str ( ) )
113100 . map_err ( |e| Error :: RuntimeError ( format ! ( "Redis connection error: {}" , e) ) ) ?;
114101 let pool = r2d2:: Pool :: builder ( )
115102 . max_size ( size)
0 commit comments