@gowiz/searchbar
Version:
Different search bars powered by Gowiz search engine technology
120 lines • 4.72 kB
JavaScript
;
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