google-stocks
Advanced tools
Comparing version 1.0.1 to 2.0.0
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports['default'] = googleStocks; | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; | ||
exports.isObject = isObject; | ||
exports.printFuncError = printFuncError; | ||
exports.default = googleStocks; | ||
var _request = require('request'); | ||
@@ -16,41 +19,141 @@ | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var HTTP_OK = 200; | ||
var URL = 'https://www.google.com/finance/info?&q='; | ||
var URL = 'https://finance.google.com/finance?output=json&q='; | ||
function onParse(data) { | ||
// remove first 3 characters which are "//" | ||
return JSON.parse(data.substring(3)); | ||
function isObject(obj) { | ||
return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && !Array.isArray(obj); | ||
} | ||
function googleStocksCallback(stocks, callback) { | ||
if (stocks === undefined) stocks = []; | ||
function printFuncError(functionName, error) { | ||
console.log('[ERROR] [' + functionName + ']: ' + error); | ||
} | ||
if (!stocks.length) { | ||
return callback('No Stocks were passed'); | ||
function onParse(data) { | ||
var functionName = 'onParse'; | ||
var printError = function printError(error) { | ||
return printFuncError(functionName, error); | ||
}; | ||
if (!data) { | ||
return { result: data }; | ||
} | ||
var url = URL + stocks.join(','); | ||
try { | ||
var newData = data.replace(new RegExp('//', 'g'), ''); | ||
return { result: JSON.parse(newData) }; | ||
} catch (error) { | ||
console.log(error); // print stack | ||
printError(error); | ||
return { error: error.toString() }; | ||
} | ||
} | ||
(0, _request2['default'])(url, function (error, response, body) { | ||
if (error) { | ||
return callback(error); | ||
} else if (parseInt(response.statusCode, 10) !== HTTP_OK) { | ||
return callback('Webservice returned ' + response.statusCode); | ||
function getStock(stock) { | ||
var functionName = 'getStock'; | ||
var printError = function printError(error) { | ||
return printFuncError(functionName, error); | ||
}; | ||
return new Promise(function (resolve, reject) { | ||
var onError = function onError(error) { | ||
console.log(error); // print stack | ||
printError(error); | ||
return reject(error.toString()); | ||
}; | ||
try { | ||
if (!stock) { | ||
return onError('Empty stock name was passed.'); | ||
} | ||
var url = URL + stock; | ||
(0, _request2.default)(url, function (error, response, body) { | ||
if (error) { | ||
return onError(error); | ||
} else if (parseInt(response.statusCode, 10) !== HTTP_OK) { | ||
return onError('Webservice returned ' + response.statusCode); | ||
} | ||
var _onParse = onParse(body), | ||
err = _onParse.error, | ||
result = _onParse.result; | ||
if (err) { | ||
return onError(err); | ||
} | ||
if (isObject(result)) { | ||
return resolve(result); | ||
} | ||
if (!result.length) { | ||
return resolve(); | ||
} | ||
resolve(result[0]); | ||
}); | ||
} catch (error) { | ||
return onError(error); | ||
} | ||
callback(error, onParse(body)); | ||
}); | ||
} | ||
function googleStocks(stocks, callback) { | ||
if (stocks === undefined) stocks = []; | ||
function googleStocks() { | ||
var stocks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; | ||
var callback = arguments[1]; | ||
if (!callback) { | ||
var func = (0, _promise.denodeify)(googleStocksCallback); | ||
return func(stocks); | ||
var functionName = 'getStock'; | ||
var printError = function printError(error) { | ||
return printFuncError(functionName, error); | ||
}; | ||
if (!stocks || !stocks.length) { | ||
return !callback ? Promise.resolve([]) : callback('No Stocks were passed'); | ||
} | ||
return googleStocksCallback(stocks, callback); | ||
} | ||
try { | ||
var promises = []; | ||
module.exports = exports['default']; | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = stocks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var stock = _step.value; | ||
promises.push(getStock(stock)); | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
} | ||
var resultPromise = Promise.all(promises); | ||
if (!callback) { | ||
return resultPromise; | ||
} | ||
resultPromise.then(function (results) { | ||
return callback(undefined, results); | ||
}); | ||
} catch (error) { | ||
console.log(error); // print stack | ||
printError(error); | ||
return !callback ? Promise.reject(error) : callback(error); | ||
} | ||
} |
'use strict'; | ||
var /* googleStocks = require('google-stocks'), // Use this require if you load module through npm */ | ||
googleStocks = require('./dist/google-stocks.js'); | ||
var googleStocks = require('./dist/google-stocks.js').default; | ||
console.log(googleStocks); | ||
googleStocks(['AAPL'], function(error, data) { | ||
@@ -14,2 +11,2 @@ console.log(data); | ||
console.log(data); | ||
}); | ||
}); |
{ | ||
"name": "google-stocks", | ||
"version": "1.0.1", | ||
"version": "2.0.0", | ||
"author": "anvk", | ||
@@ -15,8 +15,7 @@ "main": "dist/google-stocks.js", | ||
"lint": "eslint src", | ||
"build:source": "rimraf dist/ && babel src/ --out-dir dist/", | ||
"build:tests": "rimraf test-dist/ && babel test/ --out-dir test-dist/", | ||
"clean": "rimraf dist/ && rimraf test-dist/", | ||
"build": "npm run build:source && npm run build:tests", | ||
"test": "node node_modules/mocha/bin/mocha --reporter spec test-dist/*", | ||
"example": "node example.js" | ||
"clean": "node ./node_modules/del-cli/cli.js -f dist/", | ||
"build": | ||
"npm run clean && babel src/ --out-dir dist/ --ignore __tests__,__mocks__,__snapshots__", | ||
"example": "node example.js", | ||
"test": "jest" | ||
}, | ||
@@ -30,19 +29,21 @@ "directories": { | ||
}, | ||
"keywords": [ | ||
"stocks", | ||
"Google", | ||
"API" | ||
], | ||
"keywords": ["stocks", "Google", "API"], | ||
"dependencies": { | ||
"promise": "7.1.1", | ||
"request": "2.55.0" | ||
"promise": "8.0.1", | ||
"request": "2.83.0" | ||
}, | ||
"devDependencies": { | ||
"babel": "5.6.5", | ||
"babel-eslint": "5.0.0", | ||
"chai": "3.0.0", | ||
"eslint": "2.2.0", | ||
"eslint-config-airbnb": "6.0.2", | ||
"mocha": "2.2.5", | ||
"rimraf": "2.5.2" | ||
"babel": "6.23.0", | ||
"babel-cli": "6.26.0", | ||
"babel-core": "6.26.0", | ||
"babel-eslint": "8.0.3", | ||
"babel-jest": "22.0.4", | ||
"babel-plugin-transform-async-to-generator": "6.24.1", | ||
"babel-preset-es2015": "6.24.1", | ||
"babel-preset-stage-0": "6.24.1", | ||
"del-cli": "1.1.0", | ||
"eslint": "4.13.1", | ||
"eslint-config-airbnb": "16.1.0", | ||
"jest": "22.0.4", | ||
"regenerator-runtime": "0.11.1" | ||
}, | ||
@@ -49,0 +50,0 @@ "engine": "node >= 0.10.x", |
122
README.md
@@ -5,3 +5,2 @@ # google-stocks [](https://travis-ci.org/anvk/google-stocks) | ||
## Install | ||
@@ -13,3 +12,2 @@ | ||
## Usage | ||
@@ -75,3 +73,3 @@ | ||
returned format looks like this: | ||
(_Jan 02 2018_) Example of a returned format: | ||
@@ -82,80 +80,56 @@ ```js | ||
{ | ||
"symbol": "AAPL", | ||
"exchange": "NASDAQ", | ||
"id": "22144", | ||
"t": "AAPL", | ||
"e": "NASDAQ", | ||
"l": "129.09", | ||
"l_fix": "129.09", | ||
"l_cur": "129.09", | ||
"s": "0", | ||
"ltt": "1:43PM EDT", | ||
"lt": "May 4, 1:43PM EDT", | ||
"lt_dts": "2015-05-04T13:43:56Z", | ||
"c": "+0.14", | ||
"c_fix": "0.14", | ||
"cp": "0.11", | ||
"cp_fix": "0.11", | ||
"name": "Apple Inc.", | ||
"f_reuters_url": "http:\u002F\u002Fstocks.us.reuters.com\u002Fstocks\u002Fratios.asp?rpc=66\u0026symbol=AAPL.O", | ||
"f_recent_quarter_date": "Q3 (Sep \u002717)", | ||
"f_annual_date": "2017", | ||
"f_ttm_date": "2016", | ||
"financials": [{... | ||
], | ||
"kr_recent_quarter_date": "Q3 (Sep \u002717)", | ||
"kr_annual_date": "2017", | ||
"kr_ttm_date": "TTM", | ||
"keyratios": [{... | ||
], | ||
"c": "+1.30", | ||
"l": "170.53", | ||
"cp": "0.77", | ||
"ccol": "chg", | ||
"pcls_fix": "128.95" | ||
"op": "170.16", | ||
"hi": "170.54", | ||
"lo": "169.26", | ||
"vo": "1.14M", | ||
"avvo": "26.27M", | ||
"hi52": "177.20", | ||
"lo52": "114.76", | ||
"mc": "875.55B", | ||
"pe": "18.56", | ||
"fwpe": "", | ||
"beta": "1.24", | ||
"eps": "9.19", | ||
"dy": "1.48", | ||
"ldiv": "0.63", | ||
"shares": "5.13B", | ||
"instown": "62%", | ||
"eo": "", | ||
"sid": "us-TRBC:57", | ||
"sname": "Technology", | ||
"iid": "us-TRBC:5710601010", | ||
"iname": "Computer Hardware - NEC", | ||
"related": [{... | ||
], | ||
"summary": [{... | ||
], | ||
"management": [{... | ||
], | ||
"moreresources": [{... | ||
], | ||
"events": [] | ||
} | ||
] | ||
**/ | ||
/** | ||
[ | ||
{ | ||
"id": "665871", | ||
"t": "WJA", | ||
"e": "TSE", | ||
"l": "28.06", | ||
"l_fix": "28.06", | ||
"l_cur": "CA$28.06", | ||
"s": "0", | ||
"ltt": "1:29PM EDT", | ||
"lt": "May 4, 1:29PM EDT", | ||
"lt_dts": "2015-05-04T13:29:56Z", | ||
"c": "+0.45", | ||
"c_fix": "0.45", | ||
"cp": "1.63", | ||
"cp_fix": "1.63", | ||
"ccol": "chg", | ||
"pcls_fix": "27.61" | ||
}, | ||
{ | ||
"id": "304466804484872", | ||
"t": "GOOG", | ||
"e": "NASDAQ", | ||
"l": "541.31", | ||
"l_fix": "541.31", | ||
"l_cur": "541.31", | ||
"s": "0", | ||
"ltt": "1:44PM EDT", | ||
"lt": "May 4, 1:44PM EDT", | ||
"lt_dts": "2015-05-04T13:44:58Z", | ||
"c": "+3.41", | ||
"c_fix": "3.41", | ||
"cp": "0.63", | ||
"cp_fix": "0.63", | ||
"ccol": "chg", | ||
"pcls_fix": "537.9" | ||
}, | ||
{ | ||
"id": "22144", | ||
"t": "AAPL", | ||
"e": "NASDAQ", | ||
"l": "129.10", | ||
"l_fix": "129.10", | ||
"l_cur": "129.10", | ||
"s": "0", | ||
"ltt": "1:45PM EDT", | ||
"lt": "May 4, 1:45PM EDT", | ||
"lt_dts": "2015-05-04T13:45:32Z", | ||
"c": "+0.15", | ||
"c_fix": "0.15", | ||
"cp": "0.12", | ||
"cp_fix": "0.12", | ||
"ccol": "chg", | ||
"pcls_fix": "128.95" | ||
} | ||
] | ||
**/ | ||
``` | ||
@@ -162,0 +136,0 @@ |
@@ -5,24 +5,74 @@ import request from 'request'; | ||
const HTTP_OK = 200; | ||
const URL = 'https://www.google.com/finance/info?&q='; | ||
const URL = 'https://finance.google.com/finance?output=json&q='; | ||
function onParse(data) { | ||
// remove first 3 characters which are "//" | ||
return JSON.parse(data.substring(3)); | ||
export function isObject(obj) { | ||
return typeof obj === 'object' && !Array.isArray(obj); | ||
} | ||
function googleStocksCallback(stocks = [], callback) { | ||
if (!stocks.length) { | ||
return callback('No Stocks were passed'); | ||
export function printFuncError(functionName, error) { | ||
console.log(`[ERROR] [${functionName}]: ${error}`); | ||
} | ||
function onParse(data) { | ||
const functionName = 'onParse'; | ||
const printError = error => printFuncError(functionName, error); | ||
if (!data) { | ||
return { result: data }; | ||
} | ||
const url = URL + stocks.join(','); | ||
try { | ||
const newData = data.replace(new RegExp('//', 'g'), ''); | ||
return { result: JSON.parse(newData) }; | ||
} catch (error) { | ||
console.log(error); // print stack | ||
printError(error); | ||
return { error: error.toString() }; | ||
} | ||
} | ||
request(url, (error, response, body) => { | ||
if (error) { | ||
return callback(error); | ||
} else if (parseInt(response.statusCode, 10) !== HTTP_OK) { | ||
return callback(`Webservice returned ${response.statusCode}`); | ||
function getStock(stock) { | ||
const functionName = 'getStock'; | ||
const printError = error => printFuncError(functionName, error); | ||
return new Promise((resolve, reject) => { | ||
const onError = error => { | ||
console.log(error); // print stack | ||
printError(error); | ||
return reject(error.toString()); | ||
}; | ||
try { | ||
if (!stock) { | ||
return onError('Empty stock name was passed.'); | ||
} | ||
const url = URL + stock; | ||
request(url, (error, response, body) => { | ||
if (error) { | ||
return onError(error); | ||
} else if (parseInt(response.statusCode, 10) !== HTTP_OK) { | ||
return onError(`Webservice returned ${response.statusCode}`); | ||
} | ||
const { error: err, result } = onParse(body); | ||
if (err) { | ||
return onError(err); | ||
} | ||
if (isObject(result)) { | ||
return resolve(result); | ||
} | ||
if (!result.length) { | ||
return resolve(); | ||
} | ||
resolve(result[0]); | ||
}); | ||
} catch (error) { | ||
return onError(error); | ||
} | ||
callback(error, onParse(body)); | ||
}); | ||
@@ -32,8 +82,28 @@ } | ||
export default function googleStocks(stocks = [], callback) { | ||
if (!callback) { | ||
const func = denodeify(googleStocksCallback); | ||
return func(stocks); | ||
const functionName = 'getStock'; | ||
const printError = error => printFuncError(functionName, error); | ||
if (!stocks || !stocks.length) { | ||
return !callback ? Promise.resolve([]) : callback('No Stocks were passed'); | ||
} | ||
return googleStocksCallback(stocks, callback); | ||
try { | ||
let promises = []; | ||
for (const stock of stocks) { | ||
promises.push(getStock(stock)); | ||
} | ||
const resultPromise = Promise.all(promises); | ||
if (!callback) { | ||
return resultPromise; | ||
} | ||
resultPromise.then(results => callback(undefined, results)); | ||
} catch (error) { | ||
console.log(error); // print stack | ||
printError(error); | ||
return !callback ? Promise.reject(error) : callback(error); | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
344
17037
13
10
142
1
+ Addedajv@5.5.2(transitive)
+ Addedasn1@0.2.6(transitive)
+ Addedassert-plus@1.0.0(transitive)
+ Addedasynckit@0.4.0(transitive)
+ Addedaws-sign2@0.7.0(transitive)
+ Addedaws4@1.13.2(transitive)
+ Addedbcrypt-pbkdf@1.0.2(transitive)
+ Addedboom@4.3.15.3.3(transitive)
+ Addedcaseless@0.12.0(transitive)
+ Addedco@4.6.0(transitive)
+ Addedcombined-stream@1.0.8(transitive)
+ Addedcore-util-is@1.0.2(transitive)
+ Addedcryptiles@3.2.1(transitive)
+ Addeddashdash@1.14.1(transitive)
+ Addeddelayed-stream@1.0.0(transitive)
+ Addedecc-jsbn@0.1.2(transitive)
+ Addedextend@3.0.2(transitive)
+ Addedextsprintf@1.3.0(transitive)
+ Addedfast-deep-equal@1.1.0(transitive)
+ Addedfast-json-stable-stringify@2.1.0(transitive)
+ Addedform-data@2.3.3(transitive)
+ Addedgetpass@0.1.7(transitive)
+ Addedhar-schema@2.0.0(transitive)
+ Addedhar-validator@5.0.3(transitive)
+ Addedhawk@6.0.2(transitive)
+ Addedhoek@4.3.1(transitive)
+ Addedhttp-signature@1.2.0(transitive)
+ Addedis-typedarray@1.0.0(transitive)
+ Addedjsbn@0.1.1(transitive)
+ Addedjson-schema@0.4.0(transitive)
+ Addedjson-schema-traverse@0.3.1(transitive)
+ Addedjsprim@1.4.2(transitive)
+ Addedmime-db@1.52.0(transitive)
+ Addedmime-types@2.1.35(transitive)
+ Addedoauth-sign@0.8.2(transitive)
+ Addedperformance-now@2.1.0(transitive)
+ Addedpromise@8.0.1(transitive)
+ Addedpunycode@1.4.1(transitive)
+ Addedqs@6.5.3(transitive)
+ Addedrequest@2.83.0(transitive)
+ Addedsafe-buffer@5.2.1(transitive)
+ Addedsafer-buffer@2.1.2(transitive)
+ Addedsntp@2.1.0(transitive)
+ Addedsshpk@1.18.0(transitive)
+ Addedtough-cookie@2.3.4(transitive)
+ Addedtunnel-agent@0.6.0(transitive)
+ Addedtweetnacl@0.14.5(transitive)
+ Addeduuid@3.4.0(transitive)
+ Addedverror@1.10.0(transitive)
- Removedansi-regex@2.1.1(transitive)
- Removedansi-styles@2.2.1(transitive)
- Removedasn1@0.1.11(transitive)
- Removedassert-plus@0.1.5(transitive)
- Removedasync@0.9.2(transitive)
- Removedaws-sign2@0.5.0(transitive)
- Removedbl@0.9.5(transitive)
- Removedbluebird@2.11.0(transitive)
- Removedboom@2.10.1(transitive)
- Removedcaseless@0.9.0(transitive)
- Removedchalk@1.1.3(transitive)
- Removedcombined-stream@0.0.7(transitive)
- Removedcommander@2.20.3(transitive)
- Removedcore-util-is@1.0.3(transitive)
- Removedcryptiles@2.0.5(transitive)
- Removedctype@0.5.3(transitive)
- Removeddelayed-stream@0.0.5(transitive)
- Removedescape-string-regexp@1.0.5(transitive)
- Removedform-data@0.2.0(transitive)
- Removedgenerate-function@2.3.1(transitive)
- Removedgenerate-object-property@1.2.0(transitive)
- Removedhar-validator@1.8.0(transitive)
- Removedhas-ansi@2.0.0(transitive)
- Removedhawk@2.3.1(transitive)
- Removedhoek@2.16.3(transitive)
- Removedhttp-signature@0.10.1(transitive)
- Removedinherits@2.0.4(transitive)
- Removedis-my-ip-valid@1.0.1(transitive)
- Removedis-my-json-valid@2.20.6(transitive)
- Removedis-property@1.0.2(transitive)
- Removedisarray@0.0.1(transitive)
- Removedjsonpointer@5.0.1(transitive)
- Removedmime-db@1.12.0(transitive)
- Removedmime-types@2.0.14(transitive)
- Removednode-uuid@1.4.8(transitive)
- Removedoauth-sign@0.6.0(transitive)
- Removedpromise@7.1.1(transitive)
- Removedqs@2.4.2(transitive)
- Removedreadable-stream@1.0.34(transitive)
- Removedrequest@2.55.0(transitive)
- Removedsntp@1.0.9(transitive)
- Removedstring_decoder@0.10.31(transitive)
- Removedstrip-ansi@3.0.1(transitive)
- Removedsupports-color@2.0.0(transitive)
- Removedtldts@6.1.78(transitive)
- Removedtldts-core@6.1.78(transitive)
- Removedtough-cookie@5.1.1(transitive)
- Removedtunnel-agent@0.4.3(transitive)
- Removedxtend@4.0.2(transitive)
Updatedpromise@8.0.1
Updatedrequest@2.83.0