New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

google-stocks

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

google-stocks - npm Package Compare versions

Comparing version 1.0.1 to 2.0.0

.babelrc

157

dist/google-stocks.js
'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);
}
}

7

example.js
'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",

@@ -5,3 +5,2 @@ # google-stocks [![Build Status](https://travis-ci.org/anvk/google-stocks.svg?branch=master)](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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc