/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; /** * Dynamically create a search engine offering search suggestions via searchSuggestions.sjs. * * The engine is constructed by passing a JSON object with engine datails as the query string. */ function handleRequest(request, response) { let engineData = JSON.parse(unescape(request.queryString).replace("+", " ")); if (!engineData.baseURL) { response.setStatusLine(request.httpVersion, 500, "baseURL required"); return; } engineData.name = engineData.name || "Generated test engine"; engineData.description = engineData.description || "Generated test engine description"; engineData.method = engineData.method || "GET"; response.setStatusLine(request.httpVersion, 200, "OK"); createOpenSearchEngine(response, engineData); } /** * Create an OpenSearch engine for the given base URL. */ function createOpenSearchEngine(response, engineData) { let params = "", queryString = ""; if (engineData.method == "POST") { params = ""; } else { queryString = "?q={searchTerms}"; } let result = "\ \ " + engineData.name + "\ " + engineData.description + "\ UTF-8\ " + engineData.name + "\ \ " + params + "\ \ \ \ "; response.write(result); }