'use strict'; const Promise = require("bluebird"); const bhttp = require("bhttp"); const querystring = require("querystring"); const defaultValue = require("default-value"); module.exports = function(autocompleteKey) { function createQueryString(query, options) { return querystring.stringify({ autocomplete_key: autocompleteKey, _: Date.now(), query: query, num_results: defaultValue(options.resultCount, 20) }); } function createUrl(query, options) { return `https://ac.cnstrc.com/autocomplete/${encodeURIComponent(query)}?${createQueryString(query, options)}`; } return function doSearch(query, options) { return Promise.try(() => { return bhttp.get(createUrl(query, options)); }).then((response) => { if (response.statusCode === 200) { return response.body; } else { throw new Error(`Non-200 status code encountered: ${response.statusCode}`) } }); } }