@@ -55,58 +55,44 @@ public function createContext()
55
55
public static function parseDsn ($ dsn )
56
56
{
57
57
$ parsedUrl = parse_url ($ dsn );
58
-
59
58
if (false === $ parsedUrl ) {
60
59
throw new \LogicException (sprintf ('Failed to parse DSN "%s" ' , $ dsn ));
61
60
}
62
-
63
61
if (empty ($ parsedUrl ['scheme ' ])) {
64
62
throw new \LogicException ('Schema is empty ' );
65
63
}
66
-
67
64
$ supported = [
68
65
'mongodb ' => true ,
69
66
];
70
-
71
67
if (false == isset ($ parsedUrl ['scheme ' ])) {
72
68
throw new \LogicException (sprintf (
73
69
'The given DSN schema "%s" is not supported. There are supported schemes: "%s". ' ,
74
70
$ parsedUrl ['scheme ' ],
75
71
implode ('", " ' , array_keys ($ supported ))
76
72
));
77
73
}
78
-
79
- if ($ parsedUrl ['scheme ' ].': ' === $ dsn ) {
74
+ if ('mongodb: ' === $ dsn ) {
80
75
return [
81
- 'uri ' => $ parsedUrl [ ' scheme ' ]. ' ://127.0.0.1/ ' ,
76
+ 'uri ' => ' mongodb ://127.0.0.1/ ' ,
82
77
];
83
78
}
84
-
85
- $ config ['uri ' ] = $ parsedUrl ['scheme ' ].':// ' .$ parsedUrl ['host ' ];
86
-
79
+ $ config ['uri ' ] = $ dsn ;
87
80
if (isset ($ parsedUrl ['path ' ]) && '/ ' !== $ parsedUrl ['path ' ]) {
88
- $ pathArr = explode ('/ ' , $ parsedUrl ['path ' ]);
89
-
81
+ $ pathParts = explode ('/ ' , $ parsedUrl ['path ' ]);
90
82
//DB name
91
- if ($ pathArr [1 ]) {
92
- $ config ['dbname ' ] = $ pathArr [1 ];
93
- $ config ['uri ' ] .= '/ ' .$ pathArr [1 ];
94
- }
95
-
96
- //Collection name
97
- if ($ pathArr [2 ]) {
98
- $ config ['collection_name ' ] = $ pathArr [2 ];
83
+ if ($ pathParts [1 ]) {
84
+ $ config ['dbname ' ] = $ pathParts [1 ];
99
85
}
100
86
}
101
-
102
87
if (isset ($ parsedUrl ['query ' ])) {
103
- $ config ['uri ' ] .= '? ' .$ parsedUrl ['query ' ];
104
- //get polling_interval value
105
- if (false !== strpos ($ parsedUrl ['query ' ], 'polling_interval ' )) {
106
- preg_match_all ('/polling_interval=([0-9]+)/ ' , $ parsedUrl ['query ' ], $ matches );
107
- if (isset ($ matches [1 ][0 ])) {
108
- $ config ['polling_interval ' ] = $ matches [1 ][0 ];
109
- }
88
+ $ queryParts = null ;
89
+ parse_str ($ parsedUrl ['query ' ], $ queryParts );
90
+ //get enqueue attributes values
91
+ if (!empty ($ queryParts ['polling_interval ' ])) {
92
+ $ config ['polling_interval ' ] = $ queryParts ['polling_interval ' ];
93
+ }
94
+ if (!empty ($ queryParts ['enqueue_collection ' ])) {
95
+ $ config ['collection_name ' ] = $ queryParts ['enqueue_collection ' ];
110
96
}
111
97
}
112
98
0 commit comments