google-finance-quote 2.1.0 → 4.0.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -23
- package/dist/cjs/index.js +75 -0
- package/dist/cjs/lib/config.js +4 -0
- package/dist/cjs/lib/cryptoCurrencyCodesSymbols.js +88 -0
- package/dist/cjs/lib/currencyCodesSymbols.js +125 -0
- package/dist/cjs/lib/symbols.js +210 -0
- package/dist/esm/index.mjs +66 -0
- package/dist/esm/lib/config.js +1 -0
- package/dist/esm/lib/cryptoCurrencyCodesSymbols.js +85 -0
- package/dist/esm/lib/currencyCodesSymbols.js +122 -0
- package/dist/esm/lib/symbols.js +207 -0
- package/package.json +23 -9
- package/index.d.ts +0 -72
- package/index.js +0 -142
- package/lib/config.js +0 -3
- package/lib/cryptoCurrencyCodesSymbols.js +0 -93
- package/lib/currencyCodesSymbols.js +0 -130
- package/lib/symbols.js +0 -214
package/README.md
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
# google-finance-quote
|
|
2
|
+
|
|
2
3
|
Node Google Finance API wrapper for free.
|
|
3
4
|
No API key is required!
|
|
4
|
-
> Note: This results may vary by up to 20 minutes.
|
|
5
|
+
> Note: This results may vary by up to 20 minutes.
|
|
6
|
+
> Note: `3.0.0 <= x` doesn't support proxies.
|
|
7
|
+
|
|
5
8
|
## Usage
|
|
9
|
+
|
|
6
10
|
### Get Started
|
|
11
|
+
|
|
7
12
|
```js
|
|
8
13
|
const { Finance, symbols, currencyCodesSymbols, cryptoCurrencyCodesSymbols } = require("google-finance-quote");
|
|
9
14
|
|
|
@@ -12,15 +17,6 @@ console.log(currencyCodesSymbols); // Returns available currency codes symbols.
|
|
|
12
17
|
console.log(cryptoCurrencyCodesSymbols); // Returns available crypto currency codes symbols.
|
|
13
18
|
|
|
14
19
|
const finance = new Finance(); // You can use this: new Finance({ from 'USD', to: 'JPY' });
|
|
15
|
-
// You can use http(s) proxies.
|
|
16
|
-
/*
|
|
17
|
-
const proxy = {
|
|
18
|
-
host: 'example.com',
|
|
19
|
-
port: 2000,
|
|
20
|
-
protocol: 'http'
|
|
21
|
-
}
|
|
22
|
-
const finance = new Finance({ proxy });
|
|
23
|
-
*/
|
|
24
20
|
|
|
25
21
|
finance
|
|
26
22
|
.setFrom('USD');
|
|
@@ -30,21 +26,18 @@ finance
|
|
|
30
26
|
console.log(await finance.quote()); // { success: true, rate: 150.94225699999998 }
|
|
31
27
|
})();
|
|
32
28
|
```
|
|
33
|
-
### Class
|
|
34
|
-
<strong>Finance({ from?:string, to?:string, proxy?:object })</strong>
|
|
35
29
|
|
|
36
|
-
###
|
|
37
|
-
- <strong>.setFrom(from: string)</strong>
|
|
38
|
-
Set the parameter of from.
|
|
30
|
+
### Class
|
|
39
31
|
|
|
40
|
-
-
|
|
41
|
-
Set the parameter of to.
|
|
32
|
+
- **Finance({ from?: string, to?: string })**
|
|
42
33
|
|
|
43
|
-
-
|
|
44
|
-
|
|
34
|
+
- **.setFrom(from: string)**
|
|
35
|
+
Set the parameter of from.
|
|
36
|
+
- **.setTo(to: string)**
|
|
37
|
+
Set the parameter of to.
|
|
38
|
+
- **.getParam(): object**
|
|
39
|
+
Returns the current param.
|
|
40
|
+
- **.quote(amount?: number): Promise<{ success: boolean, rate: number }>**
|
|
41
|
+
Returns the converted amount based on the exchange rate.
|
|
45
42
|
|
|
46
|
-
- <strong>.quote(amount?: number): Promise<{ success: boolean, rate: number }></strong>
|
|
47
|
-
Returns the converted amount based on the exchange rate.
|
|
48
43
|
> Note: If the current rate cannot be obtained due to rate limits or network errors, success: false is returned.
|
|
49
|
-
## Get Support
|
|
50
|
-
<a href="https://discord.gg/yKW8wWKCnS"><img src="https://discordapp.com/api/guilds/1005287561582878800/widget.png?style=banner4" alt="Discord Banner"/></a>
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.cryptocurrencyCodesSymbols = exports.currencyCodesSymbols = exports.symbols = exports.Finance = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const config_1 = require("./lib/config");
|
|
9
|
+
const symbols_1 = require("./lib/symbols");
|
|
10
|
+
Object.defineProperty(exports, "symbols", { enumerable: true, get: function () { return symbols_1.symbols; } });
|
|
11
|
+
const currencyCodesSymbols_1 = require("./lib/currencyCodesSymbols");
|
|
12
|
+
Object.defineProperty(exports, "currencyCodesSymbols", { enumerable: true, get: function () { return currencyCodesSymbols_1.currencyCodesSymbols; } });
|
|
13
|
+
const cryptoCurrencyCodesSymbols_1 = require("./lib/cryptoCurrencyCodesSymbols");
|
|
14
|
+
Object.defineProperty(exports, "cryptocurrencyCodesSymbols", { enumerable: true, get: function () { return cryptoCurrencyCodesSymbols_1.cryptocurrencyCodesSymbols; } });
|
|
15
|
+
class Finance {
|
|
16
|
+
constructor(p) {
|
|
17
|
+
var _a, _b, _c, _d;
|
|
18
|
+
if (typeof p === "object" &&
|
|
19
|
+
(symbols_1.symbols.includes(((_a = p === null || p === void 0 ? void 0 : p.from) === null || _a === void 0 ? void 0 : _a.toUpperCase()) || "") ||
|
|
20
|
+
symbols_1.symbols.includes(((_b = p === null || p === void 0 ? void 0 : p.to) === null || _b === void 0 ? void 0 : _b.toUpperCase()) || ""))) {
|
|
21
|
+
this.param = {
|
|
22
|
+
from: ((_c = p.from) === null || _c === void 0 ? void 0 : _c.toUpperCase()) || null,
|
|
23
|
+
to: ((_d = p.to) === null || _d === void 0 ? void 0 : _d.toUpperCase()) || null,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
else if (typeof p === "undefined") {
|
|
27
|
+
this.param = { from: null, to: null };
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
throw new Error("Invalid parameters.");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
setFrom(from) {
|
|
34
|
+
if (!symbols_1.symbols.includes(from === null || from === void 0 ? void 0 : from.toUpperCase()))
|
|
35
|
+
throw new Error("invalid from.");
|
|
36
|
+
this.param.from = from.toUpperCase();
|
|
37
|
+
return this;
|
|
38
|
+
}
|
|
39
|
+
setTo(to) {
|
|
40
|
+
if (!symbols_1.symbols.includes(to === null || to === void 0 ? void 0 : to.toUpperCase()))
|
|
41
|
+
throw new Error("invalid to.");
|
|
42
|
+
this.param.to = to.toUpperCase();
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
getParam() {
|
|
46
|
+
return this.param;
|
|
47
|
+
}
|
|
48
|
+
async quote(amount = 1) {
|
|
49
|
+
const result = { success: false, rate: 0 };
|
|
50
|
+
try {
|
|
51
|
+
if (typeof amount !== "number")
|
|
52
|
+
throw new Error("amount must be number.");
|
|
53
|
+
const from = this.param.from;
|
|
54
|
+
const to = this.param.to;
|
|
55
|
+
if (!(symbols_1.symbols === null || symbols_1.symbols === void 0 ? void 0 : symbols_1.symbols.includes(from || "")) || !(symbols_1.symbols === null || symbols_1.symbols === void 0 ? void 0 : symbols_1.symbols.includes(to || "")))
|
|
56
|
+
throw new Error("from and/or to are invalid.");
|
|
57
|
+
const url = `${config_1.API_URL}${from}-${to}`;
|
|
58
|
+
const response = await axios_1.default.get(url);
|
|
59
|
+
const html = response.data;
|
|
60
|
+
const startIndex = html.indexOf(`data-source="${from}" data-target="${to}" data-last-price="`) +
|
|
61
|
+
`data-source="${from}" data-target="${to}" data-last-price="`.length;
|
|
62
|
+
const endIndex = html.indexOf('"', startIndex);
|
|
63
|
+
const rate = Number(html.substring(startIndex, endIndex));
|
|
64
|
+
if (isNaN(rate))
|
|
65
|
+
throw new Error("Failed to get the current finance.");
|
|
66
|
+
result.success = true;
|
|
67
|
+
result.rate = rate * amount;
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.Finance = Finance;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cryptocurrencyCodesSymbols = void 0;
|
|
4
|
+
exports.cryptocurrencyCodesSymbols = [
|
|
5
|
+
"BTC",
|
|
6
|
+
"ETH",
|
|
7
|
+
"ADA",
|
|
8
|
+
"BNB",
|
|
9
|
+
"USDT",
|
|
10
|
+
"XRP",
|
|
11
|
+
"DOGE",
|
|
12
|
+
"LINK",
|
|
13
|
+
"LTC",
|
|
14
|
+
"BCH",
|
|
15
|
+
"XLM",
|
|
16
|
+
"TRX",
|
|
17
|
+
"ETC",
|
|
18
|
+
"XMR",
|
|
19
|
+
"EOS",
|
|
20
|
+
"NEO",
|
|
21
|
+
"WAVES",
|
|
22
|
+
"DASH",
|
|
23
|
+
"OMG",
|
|
24
|
+
"DCR",
|
|
25
|
+
"XEM",
|
|
26
|
+
"MANA",
|
|
27
|
+
"ICX",
|
|
28
|
+
"QTUM",
|
|
29
|
+
"ZIL",
|
|
30
|
+
"BAT",
|
|
31
|
+
"BTG",
|
|
32
|
+
"BNT",
|
|
33
|
+
"ZRX",
|
|
34
|
+
"SC",
|
|
35
|
+
"ONT",
|
|
36
|
+
"DGB",
|
|
37
|
+
"NANO",
|
|
38
|
+
"LSK",
|
|
39
|
+
"GNO",
|
|
40
|
+
"XVG",
|
|
41
|
+
"ARDR",
|
|
42
|
+
"SNT",
|
|
43
|
+
"MAID",
|
|
44
|
+
"REP",
|
|
45
|
+
"ARK",
|
|
46
|
+
"FUN",
|
|
47
|
+
"STEEM",
|
|
48
|
+
"SYS",
|
|
49
|
+
"BTS",
|
|
50
|
+
"KMD",
|
|
51
|
+
"MONA",
|
|
52
|
+
"GAS",
|
|
53
|
+
"RDD",
|
|
54
|
+
"BTM",
|
|
55
|
+
"WTC",
|
|
56
|
+
"AION",
|
|
57
|
+
"GRS",
|
|
58
|
+
"BCN",
|
|
59
|
+
"VERI",
|
|
60
|
+
"DGD",
|
|
61
|
+
"PIVX",
|
|
62
|
+
"NXS",
|
|
63
|
+
"PPT",
|
|
64
|
+
"QASH",
|
|
65
|
+
"NEBL",
|
|
66
|
+
"SALT",
|
|
67
|
+
"GAME",
|
|
68
|
+
"FCT",
|
|
69
|
+
"NXT",
|
|
70
|
+
"PAY",
|
|
71
|
+
"XDN",
|
|
72
|
+
"SUB",
|
|
73
|
+
"KNC",
|
|
74
|
+
"GNT",
|
|
75
|
+
"REQ",
|
|
76
|
+
"VGX",
|
|
77
|
+
"TNB",
|
|
78
|
+
"ZCL",
|
|
79
|
+
"HSR",
|
|
80
|
+
"ICN",
|
|
81
|
+
"POWR",
|
|
82
|
+
"ENG",
|
|
83
|
+
"SAN",
|
|
84
|
+
"ELF",
|
|
85
|
+
"STRAT",
|
|
86
|
+
"QSP",
|
|
87
|
+
"RDN",
|
|
88
|
+
];
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.currencyCodesSymbols = void 0;
|
|
4
|
+
exports.currencyCodesSymbols = [
|
|
5
|
+
"AED",
|
|
6
|
+
"AFN",
|
|
7
|
+
"ALL",
|
|
8
|
+
"AMD",
|
|
9
|
+
"ANG",
|
|
10
|
+
"ARS",
|
|
11
|
+
"AUD",
|
|
12
|
+
"AWG",
|
|
13
|
+
"AZN",
|
|
14
|
+
"BAM",
|
|
15
|
+
"BDT",
|
|
16
|
+
"BGN",
|
|
17
|
+
"BHD",
|
|
18
|
+
"BND",
|
|
19
|
+
"BOB",
|
|
20
|
+
"BRL",
|
|
21
|
+
"BTN",
|
|
22
|
+
"BWP",
|
|
23
|
+
"BYN",
|
|
24
|
+
"BZD",
|
|
25
|
+
"CAD",
|
|
26
|
+
"CHF",
|
|
27
|
+
"CLP",
|
|
28
|
+
"CNY",
|
|
29
|
+
"COP",
|
|
30
|
+
"CRC",
|
|
31
|
+
"CSD",
|
|
32
|
+
"CZK",
|
|
33
|
+
"CVE",
|
|
34
|
+
"DEM",
|
|
35
|
+
"DKK",
|
|
36
|
+
"DOP",
|
|
37
|
+
"DZD",
|
|
38
|
+
"EEK",
|
|
39
|
+
"EGP",
|
|
40
|
+
"EUR",
|
|
41
|
+
"FJD",
|
|
42
|
+
"FRF",
|
|
43
|
+
"GBP",
|
|
44
|
+
"GEL",
|
|
45
|
+
"GHS",
|
|
46
|
+
"HKD",
|
|
47
|
+
"HNL",
|
|
48
|
+
"HRK",
|
|
49
|
+
"HUF",
|
|
50
|
+
"IDR",
|
|
51
|
+
"ILS",
|
|
52
|
+
"INR",
|
|
53
|
+
"IQD",
|
|
54
|
+
"ISK",
|
|
55
|
+
"JMD",
|
|
56
|
+
"JOD",
|
|
57
|
+
"JPY",
|
|
58
|
+
"KES",
|
|
59
|
+
"KGS",
|
|
60
|
+
"KRW",
|
|
61
|
+
"KWD",
|
|
62
|
+
"KYD",
|
|
63
|
+
"KZT",
|
|
64
|
+
"LAK",
|
|
65
|
+
"LBP",
|
|
66
|
+
"LKR",
|
|
67
|
+
"LTL",
|
|
68
|
+
"MAD",
|
|
69
|
+
"MDL",
|
|
70
|
+
"MKD",
|
|
71
|
+
"MMK",
|
|
72
|
+
"MOP",
|
|
73
|
+
"MTL",
|
|
74
|
+
"MUR",
|
|
75
|
+
"MVR",
|
|
76
|
+
"MXN",
|
|
77
|
+
"MYR",
|
|
78
|
+
"NAD",
|
|
79
|
+
"NGN",
|
|
80
|
+
"NIO",
|
|
81
|
+
"NOK",
|
|
82
|
+
"NPR",
|
|
83
|
+
"NZD",
|
|
84
|
+
"OMR",
|
|
85
|
+
"PAB",
|
|
86
|
+
"PEN",
|
|
87
|
+
"PHP",
|
|
88
|
+
"PKR",
|
|
89
|
+
"PLN",
|
|
90
|
+
"PYG",
|
|
91
|
+
"QAR",
|
|
92
|
+
"RON",
|
|
93
|
+
"ROL",
|
|
94
|
+
"RSD",
|
|
95
|
+
"RUB",
|
|
96
|
+
"SAR",
|
|
97
|
+
"SCR",
|
|
98
|
+
"SEK",
|
|
99
|
+
"SGD",
|
|
100
|
+
"SIT",
|
|
101
|
+
"SKK",
|
|
102
|
+
"SVC",
|
|
103
|
+
"THB",
|
|
104
|
+
"TND",
|
|
105
|
+
"TRL",
|
|
106
|
+
"TRY",
|
|
107
|
+
"TTD",
|
|
108
|
+
"TWD",
|
|
109
|
+
"TZS",
|
|
110
|
+
"UAH",
|
|
111
|
+
"UGX",
|
|
112
|
+
"USD",
|
|
113
|
+
"UYU",
|
|
114
|
+
"UZS",
|
|
115
|
+
"VEB",
|
|
116
|
+
"VEF",
|
|
117
|
+
"VES",
|
|
118
|
+
"VND",
|
|
119
|
+
"WST",
|
|
120
|
+
"XCD",
|
|
121
|
+
"XOF",
|
|
122
|
+
"XPF",
|
|
123
|
+
"YER",
|
|
124
|
+
"ZAR",
|
|
125
|
+
];
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.symbols = void 0;
|
|
4
|
+
exports.symbols = [
|
|
5
|
+
// Currency Codes
|
|
6
|
+
"AED",
|
|
7
|
+
"AFN",
|
|
8
|
+
"ALL",
|
|
9
|
+
"AMD",
|
|
10
|
+
"ANG",
|
|
11
|
+
"ARS",
|
|
12
|
+
"AUD",
|
|
13
|
+
"AWG",
|
|
14
|
+
"AZN",
|
|
15
|
+
"BAM",
|
|
16
|
+
"BDT",
|
|
17
|
+
"BGN",
|
|
18
|
+
"BHD",
|
|
19
|
+
"BND",
|
|
20
|
+
"BOB",
|
|
21
|
+
"BRL",
|
|
22
|
+
"BTN",
|
|
23
|
+
"BWP",
|
|
24
|
+
"BYN",
|
|
25
|
+
"BZD",
|
|
26
|
+
"CAD",
|
|
27
|
+
"CHF",
|
|
28
|
+
"CLP",
|
|
29
|
+
"CNY",
|
|
30
|
+
"COP",
|
|
31
|
+
"CRC",
|
|
32
|
+
"CSD",
|
|
33
|
+
"CZK",
|
|
34
|
+
"CVE",
|
|
35
|
+
"DEM",
|
|
36
|
+
"DKK",
|
|
37
|
+
"DOP",
|
|
38
|
+
"DZD",
|
|
39
|
+
"EEK",
|
|
40
|
+
"EGP",
|
|
41
|
+
"EUR",
|
|
42
|
+
"FJD",
|
|
43
|
+
"FRF",
|
|
44
|
+
"GBP",
|
|
45
|
+
"GEL",
|
|
46
|
+
"GHS",
|
|
47
|
+
"HKD",
|
|
48
|
+
"HNL",
|
|
49
|
+
"HRK",
|
|
50
|
+
"HUF",
|
|
51
|
+
"IDR",
|
|
52
|
+
"ILS",
|
|
53
|
+
"INR",
|
|
54
|
+
"IQD",
|
|
55
|
+
"ISK",
|
|
56
|
+
"JMD",
|
|
57
|
+
"JOD",
|
|
58
|
+
"JPY",
|
|
59
|
+
"KES",
|
|
60
|
+
"KGS",
|
|
61
|
+
"KRW",
|
|
62
|
+
"KWD",
|
|
63
|
+
"KYD",
|
|
64
|
+
"KZT",
|
|
65
|
+
"LAK",
|
|
66
|
+
"LBP",
|
|
67
|
+
"LKR",
|
|
68
|
+
"LTL",
|
|
69
|
+
"MAD",
|
|
70
|
+
"MDL",
|
|
71
|
+
"MKD",
|
|
72
|
+
"MMK",
|
|
73
|
+
"MOP",
|
|
74
|
+
"MTL",
|
|
75
|
+
"MUR",
|
|
76
|
+
"MVR",
|
|
77
|
+
"MXN",
|
|
78
|
+
"MYR",
|
|
79
|
+
"NAD",
|
|
80
|
+
"NGN",
|
|
81
|
+
"NIO",
|
|
82
|
+
"NOK",
|
|
83
|
+
"NPR",
|
|
84
|
+
"NZD",
|
|
85
|
+
"OMR",
|
|
86
|
+
"PAB",
|
|
87
|
+
"PEN",
|
|
88
|
+
"PHP",
|
|
89
|
+
"PKR",
|
|
90
|
+
"PLN",
|
|
91
|
+
"PYG",
|
|
92
|
+
"QAR",
|
|
93
|
+
"RON",
|
|
94
|
+
"ROL",
|
|
95
|
+
"RSD",
|
|
96
|
+
"RUB",
|
|
97
|
+
"SAR",
|
|
98
|
+
"SCR",
|
|
99
|
+
"SEK",
|
|
100
|
+
"SGD",
|
|
101
|
+
"SIT",
|
|
102
|
+
"SKK",
|
|
103
|
+
"SVC",
|
|
104
|
+
"THB",
|
|
105
|
+
"TND",
|
|
106
|
+
"TRL",
|
|
107
|
+
"TRY",
|
|
108
|
+
"TTD",
|
|
109
|
+
"TWD",
|
|
110
|
+
"TZS",
|
|
111
|
+
"UAH",
|
|
112
|
+
"UGX",
|
|
113
|
+
"USD",
|
|
114
|
+
"UYU",
|
|
115
|
+
"UZS",
|
|
116
|
+
"VEB",
|
|
117
|
+
"VEF",
|
|
118
|
+
"VES",
|
|
119
|
+
"VND",
|
|
120
|
+
"WST",
|
|
121
|
+
"XCD",
|
|
122
|
+
"XOF",
|
|
123
|
+
"XPF",
|
|
124
|
+
"YER",
|
|
125
|
+
"ZAR",
|
|
126
|
+
// Cryptocurrency Codes
|
|
127
|
+
"BTC",
|
|
128
|
+
"ETH",
|
|
129
|
+
"ADA",
|
|
130
|
+
"BNB",
|
|
131
|
+
"USDT",
|
|
132
|
+
"XRP",
|
|
133
|
+
"DOGE",
|
|
134
|
+
"LINK",
|
|
135
|
+
"LTC",
|
|
136
|
+
"BCH",
|
|
137
|
+
"XLM",
|
|
138
|
+
"TRX",
|
|
139
|
+
"ETC",
|
|
140
|
+
"XMR",
|
|
141
|
+
"EOS",
|
|
142
|
+
"NEO",
|
|
143
|
+
"WAVES",
|
|
144
|
+
"DASH",
|
|
145
|
+
"OMG",
|
|
146
|
+
"DCR",
|
|
147
|
+
"XEM",
|
|
148
|
+
"MANA",
|
|
149
|
+
"ICX",
|
|
150
|
+
"QTUM",
|
|
151
|
+
"ZIL",
|
|
152
|
+
"BAT",
|
|
153
|
+
"BTG",
|
|
154
|
+
"BNT",
|
|
155
|
+
"ZRX",
|
|
156
|
+
"SC",
|
|
157
|
+
"ONT",
|
|
158
|
+
"DGB",
|
|
159
|
+
"NANO",
|
|
160
|
+
"LSK",
|
|
161
|
+
"GNO",
|
|
162
|
+
"XVG",
|
|
163
|
+
"ARDR",
|
|
164
|
+
"SNT",
|
|
165
|
+
"MAID",
|
|
166
|
+
"REP",
|
|
167
|
+
"ARK",
|
|
168
|
+
"FUN",
|
|
169
|
+
"STEEM",
|
|
170
|
+
"SYS",
|
|
171
|
+
"BTS",
|
|
172
|
+
"KMD",
|
|
173
|
+
"MONA",
|
|
174
|
+
"GAS",
|
|
175
|
+
"RDD",
|
|
176
|
+
"BTM",
|
|
177
|
+
"WTC",
|
|
178
|
+
"AION",
|
|
179
|
+
"GRS",
|
|
180
|
+
"BCN",
|
|
181
|
+
"VERI",
|
|
182
|
+
"DGD",
|
|
183
|
+
"PIVX",
|
|
184
|
+
"NXS",
|
|
185
|
+
"PPT",
|
|
186
|
+
"QASH",
|
|
187
|
+
"NEBL",
|
|
188
|
+
"SALT",
|
|
189
|
+
"GAME",
|
|
190
|
+
"FCT",
|
|
191
|
+
"NXT",
|
|
192
|
+
"PAY",
|
|
193
|
+
"XDN",
|
|
194
|
+
"SUB",
|
|
195
|
+
"KNC",
|
|
196
|
+
"GNT",
|
|
197
|
+
"REQ",
|
|
198
|
+
"VGX",
|
|
199
|
+
"TNB",
|
|
200
|
+
"ZCL",
|
|
201
|
+
"HSR",
|
|
202
|
+
"ICN",
|
|
203
|
+
"POWR",
|
|
204
|
+
"ENG",
|
|
205
|
+
"SAN",
|
|
206
|
+
"ELF",
|
|
207
|
+
"STRAT",
|
|
208
|
+
"QSP",
|
|
209
|
+
"RDN",
|
|
210
|
+
];
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import { API_URL } from "./lib/config";
|
|
3
|
+
import { symbols } from "./lib/symbols";
|
|
4
|
+
import { currencyCodesSymbols } from "./lib/currencyCodesSymbols";
|
|
5
|
+
import { cryptocurrencyCodesSymbols } from "./lib/cryptoCurrencyCodesSymbols";
|
|
6
|
+
export class Finance {
|
|
7
|
+
constructor(p) {
|
|
8
|
+
var _a, _b, _c, _d;
|
|
9
|
+
if (typeof p === "object" &&
|
|
10
|
+
(symbols.includes(((_a = p === null || p === void 0 ? void 0 : p.from) === null || _a === void 0 ? void 0 : _a.toUpperCase()) || "") ||
|
|
11
|
+
symbols.includes(((_b = p === null || p === void 0 ? void 0 : p.to) === null || _b === void 0 ? void 0 : _b.toUpperCase()) || ""))) {
|
|
12
|
+
this.param = {
|
|
13
|
+
from: ((_c = p.from) === null || _c === void 0 ? void 0 : _c.toUpperCase()) || null,
|
|
14
|
+
to: ((_d = p.to) === null || _d === void 0 ? void 0 : _d.toUpperCase()) || null,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
else if (typeof p === "undefined") {
|
|
18
|
+
this.param = { from: null, to: null };
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
throw new Error("Invalid parameters.");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
setFrom(from) {
|
|
25
|
+
if (!symbols.includes(from === null || from === void 0 ? void 0 : from.toUpperCase()))
|
|
26
|
+
throw new Error("invalid from.");
|
|
27
|
+
this.param.from = from.toUpperCase();
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
setTo(to) {
|
|
31
|
+
if (!symbols.includes(to === null || to === void 0 ? void 0 : to.toUpperCase()))
|
|
32
|
+
throw new Error("invalid to.");
|
|
33
|
+
this.param.to = to.toUpperCase();
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
getParam() {
|
|
37
|
+
return this.param;
|
|
38
|
+
}
|
|
39
|
+
async quote(amount = 1) {
|
|
40
|
+
const result = { success: false, rate: 0 };
|
|
41
|
+
try {
|
|
42
|
+
if (typeof amount !== "number")
|
|
43
|
+
throw new Error("amount must be number.");
|
|
44
|
+
const from = this.param.from;
|
|
45
|
+
const to = this.param.to;
|
|
46
|
+
if (!(symbols === null || symbols === void 0 ? void 0 : symbols.includes(from || "")) || !(symbols === null || symbols === void 0 ? void 0 : symbols.includes(to || "")))
|
|
47
|
+
throw new Error("from and/or to are invalid.");
|
|
48
|
+
const url = `${API_URL}${from}-${to}`;
|
|
49
|
+
const response = await axios.get(url);
|
|
50
|
+
const html = response.data;
|
|
51
|
+
const startIndex = html.indexOf(`data-source="${from}" data-target="${to}" data-last-price="`) +
|
|
52
|
+
`data-source="${from}" data-target="${to}" data-last-price="`.length;
|
|
53
|
+
const endIndex = html.indexOf('"', startIndex);
|
|
54
|
+
const rate = Number(html.substring(startIndex, endIndex));
|
|
55
|
+
if (isNaN(rate))
|
|
56
|
+
throw new Error("Failed to get the current finance.");
|
|
57
|
+
result.success = true;
|
|
58
|
+
result.rate = rate * amount;
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export { symbols, currencyCodesSymbols, cryptocurrencyCodesSymbols };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const API_URL = "https://www.google.com/finance/quote/";
|