UNPKG

eksi-sozluk

Version:
85 lines (76 loc) 1.77 kB
const axios = require('axios') const User = require('./User') const UserForMember = require('./UserForMember') const EntryCollection = require('./EntryCollection') const { URLS } = require('../constants') /** * Search results. */ class SearchResults { /** * Search text. * * @type {string} */ searchText /** * Users. * * @type {Array<(User|UserForMember)>} */ users = [] /** * Titles. * * @type {Array<EntryCollection>} */ titles = [] /** * Create search results. * * @param {object} request Axios client. * @param {string} text Search text. * @param {string} [cookies=null] Cookie string. */ constructor (request, text, cookies = null) { this.searchText = text this._request = request this._cookies = cookies } /** * Retrieve search results. * * @returns {Promise} Promise. */ retrieve () { return new Promise((resolve, reject) => { axios({ url: URLS.SEARCH, method: 'GET', headers: { 'x-requested-with': 'XMLHttpRequest' }, params: { q: this.searchText } }).then(res => { // handle users res.data.Nicks.forEach(username => { const user = this._cookies ? new UserForMember(this._request, username, this._cookies) : new User(this._request, username) this.users.push(user) }) // handle titles res.data.Titles.forEach(titleName => { const title = new EntryCollection(this._request, titleName, { cookies: this._cookies }) this.titles.push(title) }) resolve() }) }) } } module.exports = SearchResults