UNPKG

@gowiz/searchbar

Version:

Different search bars powered by Gowiz search engine technology

120 lines 4.72 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.fetch_GET = exports.getSearchResults = exports.goToGowiz = void 0; const string_util_1 = require("./string_util"); const storage_1 = require("./storage"); const model_1 = require("../models/model"); const axios = require('axios'); function goToGowiz(user_query, token, pre_defined_domains = []) { const session_token_from_storage = storage_1.getInputSessionToken(); if (session_token_from_storage != token) { storage_1.removeInputSessionToken(); return; } storage_1.removeInputSessionToken(); const max_url_length = 2048; const base_URL = 'https://gowiz.eu/search/'; let search_query; let query_components = user_query.split(' '); let all_domains = pre_defined_domains; query_components = query_components.filter(function (el) { if (el === 'site:') { return null; } else if (el.length > 6) { const el_includes_site = el.includes('site:'); if (el_includes_site) { const parts = el.split('site:'); all_domains.unshift(parts[1]); return null; } } return el; }); query_components = query_components.filter(function (el) { return el != null; }); search_query = query_components.join(' '); if (all_domains.length > 0) { all_domains = all_domains.map((d) => string_util_1.domain_to_host(d)); all_domains = all_domains.filter((v, i, a) => a.indexOf(v) === i); all_domains = all_domains.filter(function (el) { if (string_util_1.url_is_valid(el)) { return el; } return null; }); all_domains = all_domains.filter(function (el) { return el != null; }); if (all_domains.length > 0) { search_query += ' site:' + all_domains.toString(); } } const request_url = string_util_1.reformat_url(base_URL, search_query); const request_url_is_valid = request_url.length <= max_url_length && request_url != base_URL; if (request_url_is_valid) { window.location.replace(request_url); } } exports.goToGowiz = goToGowiz; function getSearchResults(token, query, API_KEY) { const session_token_from_storage = storage_1.getInputSessionToken(); if (session_token_from_storage != token) { storage_1.removeInputSessionToken(); return { status: model_1.SearchRequestResponse.FAILURE, duration: 10, data: [], }; } storage_1.removeInputSessionToken(); return { status: model_1.SearchRequestResponse.SUCCESS, duration: 1300, data: [ { title: 'Example domain', url: 'https://example.org', meta: 'Example Domain. This domain is for use in illustrative examples in documents. ...', favicon: 'https://example.org/favicon.ico', }, { title: 'Example domain 2', url: 'https://example.com', meta: 'Example Domain. This domain is for use in illustrative examples in documents. ...', favicon: 'https://example.org/favicon.ico', }, { title: 'Example domain 3', url: 'https://example.io', meta: 'Example Domain. This domain is for use in illustrative examples in documents. ...', favicon: 'https://example.org/favicon.ico', }, ], }; } exports.getSearchResults = getSearchResults; exports.fetch_GET = (url, timout_in_seconds) => __awaiter(void 0, void 0, void 0, function* () { const conf = { timeout: timout_in_seconds * 1000, }; return yield axios .get(url, conf) .then((res) => { return res.data; }) .catch(() => { return []; }); }); //# sourceMappingURL=request.js.map