MCPcopy Index your code
hub / github.com/meetDeveloper/freeDictionaryAPI / queryInternet

Function queryInternet

modules/dictionary.js:137–177  ·  view source on GitHub ↗
(word, language)

Source from the content-addressed store, hash-verified

135}
136
137async function queryInternet (word, language) {
138 let url = new URL('https://www.google.com/async/callback:5493');
139
140 url.searchParams.set('fc', 'ErUBCndBTlVfTnFUN29LdXdNSlQ2VlZoWUIwWE1HaElOclFNU29TOFF4ZGxGbV9zbzA3YmQ2NnJyQXlHNVlrb3l3OXgtREpRbXpNZ0M1NWZPeFo4NjQyVlA3S2ZQOHpYa292MFBMaDQweGRNQjR4eTlld1E4bDlCbXFJMBIWU2JzSllkLVpHc3J5OVFPb3Q2aVlDZxoiQU9NWVJ3QmU2cHRlbjZEZmw5U0lXT1lOR3hsM2xBWGFldw');
141 url.searchParams.set('fcv', '3');
142 url.searchParams.set('async', `term:${encodeURIComponent(word)},corpus:${language},hhdr:true,hwdgt:true,wfp:true,ttl:,tsl:,ptl:`);
143
144 url = url.toString();
145
146 let response = await fetch(url, {
147 agent: httpsAgent,
148 headers: new fetch.Headers({
149 "accept": "*/*",
150 "accept-encoding": "gzip, deflate, br",
151 "accept-language": "en-US,en;q=0.9",
152 "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36"
153 })
154 });
155
156 if (response.status === 404) { throw new errors.NoDefinitionsFound({ reason: 'Website returned 404.'}); }
157
158 if (response.status === 429) { throw new errors.RateLimitError(); }
159
160 if (response.status !== 200) { throw new errors.NoDefinitionsFound({ reason: 'Threw non 200 status code.'}); }
161
162 let body = await response.text(),
163 data = JSON.parse(body.substring(4)),
164 single_results = _.get(data, 'feature-callback.payload.single_results', []),
165 error = _.chain(single_results)
166 .find('widget')
167 .get('widget.error')
168 .value()
169
170 if (single_results.length === 0) { throw new errors.NoDefinitionsFound({ word, language }); }
171
172 if (error === 'TERM_NOT_FOUND_ERROR') { throw new errors.NoDefinitionsFound({ word, language }); }
173
174 if (error) { throw new errors.UnexpectedError({ error }); }
175
176 return single_results;
177}
178
179async function fetchFromSource (word, language) {
180 let dictionaryData = await queryInternet(word, language);

Callers 1

fetchFromSourceFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected