diff --git a/package-lock.json b/package-lock.json index 766f58f7e8cb8a29251f4ca986f05e34a5ed22c4..28ab4158201a88d53f6a473656dce5b79c295617 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3028,6 +3028,14 @@ "sha.js": "^2.4.8" } }, + "cross-fetch": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", + "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "requires": { + "node-fetch": "2.6.1" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -7474,6 +7482,11 @@ "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==", "dev": true }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, "node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", diff --git a/package.json b/package.json index 1e7412d7ecf62e888f1c970807e022bf8da878a3..6a9b11e054e364856aa18b2419bf642201df7eba 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,10 @@ "watch2null": "chokidar src/* -c \"npm run test:dev:runTests 2>/dev/null\"" }, "dependencies": { + "cross-fetch": "^3.1.4", "js-sha256": "https://github.com/1000i100/js-sha256#master", "latinize-to-ascii": "^0.5.2", + "node-fetch": "^2.6.1", "scrypt-async-modern": "^3.0.12", "tweetnacl": "^1.0.3" }, diff --git a/src/data-pod-client.mjs b/src/data-pod-client.mjs index cb0ff5c3b541f646105198ee23ac0fc3d805023e..cec8a43a235ae37374f1321efb9a32366e4ed786 100644 --- a/src/data-pod-client.mjs +++ b/src/data-pod-client.mjs @@ -1 +1,11 @@ -export {}; +import fetch from 'node-fetch'; + +export function DataPodClient(hosts){ + const self = this; + self.hosts = hosts; + self.query = queryStr => query(self,queryStr) + return self; +} +async function query(self,queryStr){ + return await (await fetch(self.hosts[0]+queryStr)).json(); +} diff --git a/src/data-pod-client.test-e2e.mjs b/src/data-pod-client.test-e2e.mjs index 807ea8279e09b6cf1d75a5324a7dc30ed09bc779..740ab3339138778a8f9ee821e905037a758b8265 100644 --- a/src/data-pod-client.test-e2e.mjs +++ b/src/data-pod-client.test-e2e.mjs @@ -1,7 +1,7 @@ import test from 'ava'; import * as app from './data-pod-client.mjs'; -test.skip('data-pod-client real server request', async t => { +test('data-pod-client real server request', async t => { const hosts = ['https://g1.data.e-is.pro/']; const query = 'user/profile/2sZF6j2PkxBDNAqUde7Dgo5x3crkerZpQ4rBqqJGn8QT?&_source=title'; const expectedResult = JSON.parse(`{ diff --git a/src/gva-client.mjs b/src/gva-client.mjs index cb0ff5c3b541f646105198ee23ac0fc3d805023e..fe6ac9390682c11f31ab6a81cc75af1cb23c0420 100644 --- a/src/gva-client.mjs +++ b/src/gva-client.mjs @@ -1 +1,11 @@ -export {}; +import fetch from 'node-fetch'; + +export function GvaClient(hosts){ + const self = this; + self.hosts = hosts; + self.query = queryStr => query(self,queryStr) + return self; +} +async function query(self,queryStr){ + return await (await fetch(self.hosts[0],{method: 'POST',body:queryStr})).json(); +} diff --git a/src/gva-client.test-e2e.mjs b/src/gva-client.test-e2e.mjs index 75c7f6135f8de32b14da5e22a09566bc042f28d5..9e49c275e0c78e4eca95f9577839c36925250153 100644 --- a/src/gva-client.test-e2e.mjs +++ b/src/gva-client.test-e2e.mjs @@ -1,6 +1,16 @@ import test from 'ava'; import * as app from './gva-client.mjs'; -test('dummy', async t => { - t.true(true); +// TODO: handle GVASUB in gva-ws-client.mjs +// subscription{newBlocks{number}} + +test('gva real server request', async t => { + const hosts = ['https://g1.librelois.fr/gva']; + const query = '{"query":"query($pubkey: PkOrScriptGva!) { balance(script: $pubkey) { amount }}","variables":{"pubkey":"2sZF6j2PkxBDNAqUde7Dgo5x3crkerZpQ4rBqqJGn8QT"}}'; + // Unused result example : `{ "data": { "balance": { "amount": 0 } } }` + + const client = new app.GvaClient(hosts); + const result = await client.query(query); + + t.true(result.data.balance.amount > 0); });