Skip to content

Commit 95b9ad7

Browse files
committed
feat: minor (#35)
1 parent d1e866a commit 95b9ad7

7 files changed

Lines changed: 43 additions & 46 deletions

File tree

example/app.js

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,3 @@ reverso.getConjugation('aller', 'french', (err, response) => {
3535

3636
console.log(response)
3737
})
38-
39-
const reversoInsecureHTTPParser = new Reverso({ insecureHTTPParser: true })
40-
reversoInsecureHTTPParser.getContext(
41-
'see you later',
42-
'english',
43-
'dutch',
44-
(err, response) => {
45-
if (err) throw new Error(err.message)
46-
47-
console.log(response)
48-
}
49-
)

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
"author": "Vyacheslav <slava021323@gmail.com>",
2222
"license": "MIT",
2323
"dependencies": {
24-
"axios": "^0.27.2",
2524
"cheerio": "^1.0.0-rc.5",
2625
"random-useragent": "^0.5.0"
2726
},

src/reverso.js

Lines changed: 25 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,10 @@
1-
const axios = require('axios')
21
const { getRandom } = require('random-useragent')
32
const { load } = require('cheerio')
43

5-
const available = require('./languages/available.js')
6-
const compatibility = require('./languages/compatibility.js')
7-
const SupportedLanguages = require('./entities/languages.js')
8-
9-
axios.interceptors.request.use(
10-
(config) => {
11-
config.headers['Accept'] = '*/*'
12-
config.headers['Connection'] = 'keep-alive'
13-
config.headers['User-Agent'] = getRandom()
14-
15-
return config
16-
},
17-
(error) => {
18-
return Promise.reject(error)
19-
}
20-
)
4+
const available = require('./utils/languages/available.js')
5+
const compatibility = require('./utils/languages/compatibility.js')
6+
const SupportedLanguages = require('./enums/languages.js')
7+
const transformResponse = require('./utils/transform-response')
218

229
module.exports = class Reverso {
2310
/** @private */
@@ -34,17 +21,6 @@ module.exports = class Reverso {
3421
/** @private */
3522
CONJUGATION_URL = 'https://conjugator.reverso.net/conjugation-'
3623

37-
/**
38-
* @private
39-
* Whether to use the insecure HTTP parser in Axios.
40-
*
41-
* This HTTP parser accepts certain headers that do not strictly follow the specification in
42-
* https://datatracker.ietf.org/doc/html/rfc2616#section-4.1. The Reverso API occasionally
43-
* returns headers that do not end with CRLF. Enable this to support accept these malformed
44-
* responses. See https://github.com/axios/axios#request-config
45-
*/
46-
insecureHTTPParser = false
47-
4824
/**
4925
* @public
5026
* @param {insecureHTTPParser: boolean}
@@ -470,6 +446,12 @@ module.exports = class Reverso {
470446
return result
471447
}
472448

449+
/**
450+
* @param text
451+
* @param source
452+
* @param cb
453+
* @returns {Promise<{ok: boolean, message}|{verbForms: *[], infinitive: (*|jQuery|string), ok: boolean}|{ok: boolean, message: string}>}
454+
*/
473455
async getConjugation(text, source = SupportedLanguages.ENGLISH, cb = null) {
474456
source = source.toLowerCase()
475457

@@ -554,12 +536,22 @@ module.exports = class Reverso {
554536
* @returns {Promise<any>}
555537
*/
556538
async #request(config) {
557-
try {
558-
const { data } = await axios({
559-
insecureHTTPParser: this.insecureHTTPParser,
560-
...config,
561-
})
539+
const headers = {
540+
Accept: '*/*',
541+
Connection: 'keep-alive',
542+
'User-Agent': getRandom(),
543+
...config.headers,
544+
}
562545

546+
const requestOptions = {
547+
method: config.method,
548+
headers,
549+
body: config.data ? JSON.stringify(config.data) : undefined,
550+
}
551+
552+
try {
553+
const response = await fetch(config.url, requestOptions)
554+
const data = await transformResponse(response)
563555
return { success: true, data }
564556
} catch (error) {
565557
return { success: false, error }

src/utils/transform-response.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* @param response
3+
* @returns {Promise<*>}
4+
*/
5+
async function transformResponse(response) {
6+
const contentType = response.headers.get('content-type')
7+
let data
8+
9+
if (contentType && contentType.includes('application/json')) {
10+
data = await response.json()
11+
} else {
12+
data = await response.text()
13+
}
14+
15+
return data
16+
}
17+
18+
module.exports = transformResponse

0 commit comments

Comments
 (0)