From 43b1e3f4446903d43ad2ae735fbd07f6ce2573a0 Mon Sep 17 00:00:00 2001 From: Nick Hynes Date: Thu, 23 Apr 2020 21:20:12 +0000 Subject: [PATCH] Use kwargs in rpcs --- app/service-clients/greeter.ts | 16 +++++++--------- app/src/main.ts | 5 +++-- app/test/greeter.spec.ts | 12 +++++------- package.json | 4 ++-- 4 files changed, 17 insertions(+), 20 deletions(-) diff --git a/app/service-clients/greeter.ts b/app/service-clients/greeter.ts index 78fda66..ae12b5b 100644 --- a/app/service-clients/greeter.ts +++ b/app/service-clients/greeter.ts @@ -58,23 +58,21 @@ export class Greeter { { greeting }: { greeting: string }, options?: oasis.DeployOptions, ): Promise { + const payload = Greeter.makeDeployPayload(greeting); try { - const deployedAddr = await gateway.deploy( - await Greeter.makeDeployPayload(greeting), - options, - ); + const deployedAddr = await gateway.deploy(payload, options); return new Greeter(deployedAddr, gateway); } catch (e) { throw e; } } - public static async makeDeployPayload(greeting: string): Promise { + private static makeDeployPayload(greeting: string): Buffer { const encoder = new oasis.Encoder(); encoder.writeU8Array(Buffer.from(Greeter.BYTECODE, 'base64')); return oasis.abiEncode(['string' as oasis.Schema], [greeting], encoder); } public async greet( - name: string, + { name }: { name: string }, options?: oasis.RpcOptions, ): Promise { const payload = Greeter.makeGreetPayload(name); @@ -85,7 +83,7 @@ export class Greeter { throw e; } } - public static makeGreetPayload(name: string): Buffer { + private static makeGreetPayload(name: string): Buffer { const encoder = new oasis.Encoder(); encoder.writeU8(0); return oasis.abiEncode(['string' as oasis.Schema], [name], encoder); @@ -101,9 +99,9 @@ export class Greeter { throw e; } } - public static makeGetGreetedPayload(): Buffer { + private static makeGetGreetedPayload(): Buffer { const encoder = new oasis.Encoder(); encoder.writeU8(1); - return oasis.abiEncode([], [], encoder); + return encoder.finish(); } } diff --git a/app/src/main.ts b/app/src/main.ts index a632761..9524691 100644 --- a/app/src/main.ts +++ b/app/src/main.ts @@ -13,9 +13,10 @@ async function main() { }); console.log(`Deployed Greeter at ${service.address.hex}`); - const sub = await Greeted.subscribe(gw, null /* listen to any address */); + const sub = await Greeted.subscribe(gw, service.address); - console.log(`Greeter says: ${await service.greet('sample-app')}`); + const greeting = await service.greet({ name: 'sample-app' }); // emits a `Greeted` event + console.log(`Greeter says: ${greeting}`); const event = await sub.first(); console.log(`event: ${event.from.hex} greeted ${event.to}!`); diff --git a/app/test/greeter.spec.ts b/app/test/greeter.spec.ts index 881936c..648c4df 100644 --- a/app/test/greeter.spec.ts +++ b/app/test/greeter.spec.ts @@ -8,7 +8,7 @@ describe('Greeter Test', () => { let service: Greeter; // create a gateway to the oasis node - let gw: Gateway = new Gateway( + const gw: Gateway = new Gateway( 'http://localhost:1234', 'AAAAGYHZxhwjJXjnGEIiyDCyZJq+Prknbneb9gYe9teCKrGa', ); @@ -25,13 +25,11 @@ describe('Greeter Test', () => { }); it('known greeting', async () => { - let sub = await Greeted.subscribe(gw, service.address); - let greeting = await service.greet('friend'); + const sub = await Greeted.subscribe(gw, service.address); + const greeting = await service.greet({ name: 'friend' }); expect(greeting).toBe('Hello, friend'); - for await (const event of sub) { - expect(event.to).toBe('friend'); - break; - } + const event = await sub.first(); + expect(event.to).toBe('friend'); }); afterAll(async () => { diff --git a/package.json b/package.json index 79186e5..782ffd0 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,8 @@ "scripts": { "build": "tsc -b", "test": "jest", - "lint": "eslint 'app/src/**.ts'; prettier --check 'app/src/**.ts' package.json tsconfig.json", - "start": "node dist/src/main.js" + "lint": "eslint 'app/{src,test}/**.ts'; prettier --check 'app/{src,test}/**.ts' package.json tsconfig.json", + "deploy": "node dist/src/main.js" }, "keywords": [], "author": "",