Skip to content

Commit fbdcb06

Browse files
committed
Add few basic (not-implemented) methods for eip-2255
https://eips.ethereum.org/EIPS/eip-2255
1 parent 6e436cf commit fbdcb06

File tree

2 files changed

+67
-0
lines changed

2 files changed

+67
-0
lines changed

src/Provider.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import fetch, { Response } from 'node-fetch';
22
import { Address, ChainListEntry, RichListEntry, Supply, WalletListEntry } from './types.js';
33

4+
export interface ProviderRequest {
5+
method: string;
6+
params?: any[];
7+
}
8+
49
export class Provider {
510
private baseUrl: string;
611

@@ -14,6 +19,41 @@ export class Provider {
1419
}
1520
}
1621

22+
public async request(request: ProviderRequest) {
23+
switch (request.method) {
24+
case 'wallet_requestPermissions': // eip-2255 - https://eips.ethereum.org/EIPS/eip-2255
25+
return [
26+
{
27+
invoker: 'ens://your-site.eth',
28+
parentCapability: 'eth_accounts',
29+
caveats: [
30+
{
31+
type: 'filterResponse',
32+
value: ['0x0c54fccd2e384b4bb6f2e405bf5cbc15a017aafb'],
33+
},
34+
],
35+
},
36+
];
37+
case 'wallet_getPermissions': // eip-2255 - https://eips.ethereum.org/EIPS/eip-2255
38+
return [
39+
{
40+
invoker: 'ens://your-site.eth',
41+
parentCapability: 'eth_accounts',
42+
caveats: [
43+
{
44+
type: 'filterResponse',
45+
value: ['0x0c54fccd2e384b4bb6f2e405bf5cbc15a017aafb'],
46+
},
47+
],
48+
},
49+
];
50+
case 'requestPermissions': //
51+
break;
52+
}
53+
54+
console.log('UNHANDLED METHOD!!');
55+
}
56+
1757
private async fetchText(url: string): Promise<string> {
1858
const response = await this.fetchUrl(url);
1959
return response.text();

test/provider-request.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { Provider } from '../src/index.js';
2+
import test from 'ava';
3+
4+
test('request: should get permissions', async (t) => {
5+
let provider = new Provider();
6+
7+
const response = await provider.request({
8+
method: 'wallet_getPermissions',
9+
});
10+
11+
t.assert(response != null);
12+
});
13+
14+
test('request: should request permissions', async (t) => {
15+
let provider = new Provider();
16+
17+
const response = await provider.request({
18+
method: 'wallet_requestPermissions',
19+
params: [
20+
{
21+
eth_accounts: {},
22+
},
23+
],
24+
});
25+
26+
t.assert(response != null);
27+
});

0 commit comments

Comments
 (0)