loadScene = (url) => { if (getWindow()) { return fetch(url) .then(res => res.json()) .then(this.parseScene) .catch(() => Promise.resolve()); } return Promise.resolve(); }
fetch: flow(function* () { if (self.state === 'pending') return; const {download_url: url, html_url, fileType} = self; self.state = 'pending'; try { let code = yield fetch(url).then(async (response) => { if (!response.ok) { throw new Error('Response is not ok'); } const text = await response.text(); if (fileType === 'json') { const jsonCodeToUserscript = (await import("../tools/jsonCodeToUserscript")).default; return jsonCodeToUserscript(text); } else { return text; } }); let meta = getTrackerCodeMeta(code); if (!meta.downloadURL) { meta.downloadURL = url; code = setCodeMeta(code, meta); } if (isAlive(self)) { self.meta = meta; self.code = code; self.state = 'done'; } } catch (err) { logger.error('fetch code error', url, err); if (isAlive(self)) { self.state = 'error'; } } }),
yield Promise.all(rootStore.options.options.repositories.map((url) => { return fetch(url).then((response) => { if (!response.ok) { throw new Error('Response is not ok'); } return response.json(); }).then((data) => { const files = Files(data); const results = files.filter((file) => { if (file.type === 'file') { if (/\.(js)$/i.test(file.name)) { file.fileType = 'js'; return true; } else if (/\.(json)$/i.test(file.name)) { file.fileType = 'json'; return true; } } return false; }); if (isAlive(self)) { self.putResults(results); } }).catch((err) => { logger.error('fetch repo error', url, err); }); }));
const fetchGoogleSuggestions = value => { const controller = new AbortController(); const promise = fetch('http://suggestqueries.google.com/complete/search?' + qs.stringify({ client: 'firefox', q: value }), { signal: controller.signal }).then(response => { if(response.ok) { return response.json(); } else { throw new StatusCodeError(response.status, null, null, response); } }).then(body => { return body[1]; }); promise.abort = () => { controller.abort(); }; return promise; };
import { fetch, Headers } from "whatwg-fetch"; import Immutable from "immutable"; export default { async search(term) { let headers = new Headers(); headers.append("Accept", "application/json"); headers.append("Content-Type", "application/json"); let query = JSON.stringify({ q: term }); let response = await fetch( "https://api.github.com/search/repositories?q=" + encodeURIComponent(term), { method: "get", headers } ); if (response.status < 200 || response.status >= 300) { throw new Error(response.statusText); } response = Immutable.fromJS(await response.json()); return response.get("items"); } }