const apiurl = 'https://searxes.danwin1210.me/collab/open/ismitm.php';
let mymemory = {};

function ismitm(f) {
	return new Promise((g, b) => {
		fetch(apiurl, {
			method: 'POST',
			mode: 'cors',
			headers: {
				'Content-Type': 'application/x-www-form-urlencoded'
			},
			body: 'f=' + f
		}).then(function (r) {
			return r.json();
		}).then(function (r) {
			if (r[0]) {
				g(r[1]);
			} else {
				b();
			}
		}).catch(b);
	});
}

browser.runtime.onMessage.addListener((request, sender, sendResponse) => {
	if (request && sender) {
		if (mymemory[request] != undefined) {
			let rlt = mymemory[request];
			if (Object.keys(mymemory).length > 20000) {
				let cnt = 1;
				for (let t in mymemory) {
					if (cnt > 10) {
						break;
					}
					mymemory[t] = null;
					delete mymemory[t];
					cnt++;
				}
			}
			browser.tabs.sendMessage(sender.tab.id, [request, rlt]);
		} else {
			ismitm(request).then(function (a) {
				mymemory[request] = a;
				browser.tabs.sendMessage(sender.tab.id, [request, a]);
			}, function () {
				browser.tabs.sendMessage(sender.tab.id, [request, false]);
			});
		}
	}
});