@@ -172,24 +172,30 @@ func main() {
172172 // ES v7 and v6 clients
173173 util .NewClient ()
174174 // map of specific plugins
175- sequencedPlugins := []string {"rules.so" , "functions.so" , "querytranslate.so" , " analytics.so" }
175+ sequencedPlugins := []string {"rules.so" , "functions.so" , "analytics.so" }
176176 sequencedPluginsByPath := make (map [string ]string )
177177
178- var elasticSearchPath string
178+ var elasticSearchPath , reactiveSearchPath string
179179 elasticSearchMiddleware := make ([]middleware.Middleware , 0 )
180+ reactiveSearchMiddleware := make ([]middleware.Middleware , 0 )
180181 err := filepath .Walk (pluginDir , func (path string , info os.FileInfo , err error ) error {
181182 if err != nil {
182183 return err
183184 }
184185 if ! info .IsDir () && filepath .Ext (info .Name ()) == ".so" && info .Name () != "elasticsearch.so" {
185- if util .IsExists (info .Name (), sequencedPlugins ) {
186- sequencedPluginsByPath [info .Name ()] = path
187- } else {
188- mw , err1 := LoadPluginFromFile (router , path )
189- if err1 != nil {
190- return err1
186+ if info .Name () != "querytranslate.so" {
187+ if util .IsExists (info .Name (), sequencedPlugins ) {
188+ sequencedPluginsByPath [info .Name ()] = path
189+ } else {
190+ plugin , err1 := LoadPluginFromFile (router , path )
191+ if err1 != nil {
192+ return err1
193+ }
194+ reactiveSearchMiddleware = append (reactiveSearchMiddleware , plugin .RSMiddleware ()... )
195+ elasticSearchMiddleware = append (elasticSearchMiddleware , plugin .ESMiddleware ()... )
191196 }
192- elasticSearchMiddleware = append (elasticSearchMiddleware , mw ... )
197+ } else {
198+ reactiveSearchPath = path
193199 }
194200 } else if info .Name () == "elasticsearch.so" {
195201 elasticSearchPath = path
@@ -200,13 +206,18 @@ func main() {
200206 for _ , pluginName := range sequencedPlugins {
201207 path , _ := sequencedPluginsByPath [pluginName ]
202208 if path != "" {
203- mw , err := LoadPluginFromFile (router , path )
209+ plugin , err := LoadPluginFromFile (router , path )
204210 if err != nil {
205211 log .Fatal ("error loading plugins: " , err )
206212 }
207- elasticSearchMiddleware = append (elasticSearchMiddleware , mw ... )
213+ elasticSearchMiddleware = append (elasticSearchMiddleware , plugin .ESMiddleware ()... )
214+ reactiveSearchMiddleware = append (reactiveSearchMiddleware , plugin .RSMiddleware ()... )
208215 }
209216 }
217+ // Load ReactiveSearch plugin
218+ if reactiveSearchPath != "" {
219+ LoadRSPluginFromFile (router , reactiveSearchPath , reactiveSearchMiddleware )
220+ }
210221 LoadESPluginFromFile (router , elasticSearchPath , elasticSearchMiddleware )
211222 if err != nil {
212223 log .Fatal ("error loading plugins: " , err )
@@ -242,7 +253,7 @@ func LoadPIFromFile(path string) (plugin.Symbol, error) {
242253}
243254
244255// LoadPluginFromFile loads a plugin at the given location
245- func LoadPluginFromFile (router * mux.Router , path string ) ([]middleware. Middleware , error ) {
256+ func LoadPluginFromFile (router * mux.Router , path string ) (plugins. Plugin , error ) {
246257 pi , err2 := LoadPIFromFile (path )
247258 if err2 != nil {
248259 return nil , err2
@@ -253,7 +264,7 @@ func LoadPluginFromFile(router *mux.Router, path string) ([]middleware.Middlewar
253264 if err3 != nil {
254265 return nil , err3
255266 }
256- return p . ESMiddleware () , nil
267+ return p , nil
257268}
258269
259270func LoadESPluginFromFile (router * mux.Router , path string , mw []middleware.Middleware ) error {
@@ -266,6 +277,16 @@ func LoadESPluginFromFile(router *mux.Router, path string, mw []middleware.Middl
266277 return plugins .LoadESPlugin (router , p , mw )
267278}
268279
280+ func LoadRSPluginFromFile (router * mux.Router , path string , mw []middleware.Middleware ) error {
281+ pi , err2 := LoadPIFromFile (path )
282+ if err2 != nil {
283+ return err2
284+ }
285+ var p plugins.RSPlugin
286+ p = * pi .(* plugins.RSPlugin )
287+ return plugins .LoadRSPlugin (router , p , mw )
288+ }
289+
269290// LoadEnvFromFile loads env vars from envFile. Envs in the file
270291// should be in KEY=VALUE format.
271292func LoadEnvFromFile (envFile string ) error {
0 commit comments