Skip to content

Commit

Permalink
doc: badge api (#42)
Browse files Browse the repository at this point in the history
  • Loading branch information
Holybasil authored May 11, 2024
1 parent 61f5724 commit 5102179
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 15 deletions.
4 changes: 2 additions & 2 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"printWidth": 120,
"singleQuote": false,
"singleQuote": true,
"tabWidth": 2,
"bracketSpacing": true,
"overrides": [
Expand All @@ -23,7 +23,7 @@
"singleQuote": false,
"bracketSpacing": false
}
}
},
{
"files": "test/**/*.sol",
"options": {
Expand Down
4 changes: 2 additions & 2 deletions examples/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ EAS_MAIN_CONTRACT_ADDRESS='0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512'
SCROLL_BADGE_SCHEMA_UID='0x81b69c8f7b364e9f7d8be9c19525df9ec003487dcd39ef647cb1a2f7a241bc08'
SCROLL_BADGE_SCHEMA='address badge, bytes payload'

SIMPLE_BADGE_CONTRACT_ADDRESS='0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0'
SIMPLE_BADGE_ATTESTER_PROXY_CONTRACT_ADDRESS='0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82'
SIMPLE_BADGE_CONTRACT_ADDRESS='0x30C98067517f8ee38e748A3aF63429974103Ea6B'
SIMPLE_BADGE_ATTESTER_PROXY_CONTRACT_ADDRESS='0xaEF4103A04090071165F78D45D83A0C0782c2B2a'

SCROLL_PROFILE_REGISTRY_PROXY_CONTRACT_ADDRESS='0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9'

Expand Down
38 changes: 27 additions & 11 deletions examples/src/attest-server.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,37 @@ import { badges } from './badges.js';

const app = express();
const provider = new ethers.JsonRpcProvider(process.env.RPC_ENDPOINT);
const signer = (new ethers.Wallet(process.env.SIGNER_PRIVATE_KEY)).connect(provider);
const signer = new ethers.Wallet(process.env.SIGNER_PRIVATE_KEY).connect(provider);

// example query:
// curl 'localhost:3000/api/badge/0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0/claim?recipient=0x0000000000000000000000000000000000000001'
app.get('/api/badge/:address/claim', async (req, res) => {
const { recipient } = req.query;
const { address } = req.params;
// curl 'localhost:3000/api/check?badge=0x30C98067517f8ee38e748A3aF63429974103Ea6B&recipient=0x0000000000000000000000000000000000000001'
app.get('/api/check', async (req, res) => {
const { badge: badgeAddress, recipient } = req.query;

if (!recipient) return res.json({ error: 'missing query parameter "recipient"' });
if (!address) return res.json({ error: 'missing parameter "address"' });
if (!recipient) return res.json({ code: 0, message: 'missing query parameter "recipient"' });
if (!badgeAddress) return res.json({ code: 0, message: 'missing parameter "badge"' });
const badge = badges[normalizeAddress(badgeAddress)];

const badge = badges[normalizeAddress(address)];
if (!badge) return res.json({ code: 0, message: `unknown badge "${address}"` });
const eligibility = await badge.isEligible(recipient);
if (!eligibility) return res.json({ code: 0, message: 'why the recipient is not eligible', eligibility: false });

if (!badge) return res.json({ error: `unknown badge "${address}"` });
if (!badge.isEligible(recipient)) return res.json({ error: null, status: 'not eligible' });
res.json({ code: 1, message: 'success', eligibility: true });
});

// example query:
// curl 'localhost:3000/api/claim?badge=0x30C98067517f8ee38e748A3aF63429974103Ea6B&recipient=0x0000000000000000000000000000000000000001'
app.get('/api/claim', async (req, res) => {
const { badge: badgeAddress, recipient } = req.query;

if (!recipient) return res.json({ code: 0, message: 'missing query parameter "recipient"' });
if (!badgeAddress) return res.json({ code: 0, message: 'missing parameter "badge"' });

const badge = badges[normalizeAddress(badgeAddress)];

if (!badge) return res.json({ code: 0, message: `unknown badge "${badgeAddress}"` });
const eligibility = await badge.isEligible(recipient);
if (!eligibility) return res.json({ code: 0, message: 'not eligible' });

const proxy = new EIP712Proxy(badge.proxy);

Expand All @@ -36,7 +52,7 @@ app.get('/api/badge/:address/claim', async (req, res) => {
});

const tx = await proxy.contract.attestByDelegation.populateTransaction(attestation);
res.json({ error: null, status: 'eligible', tx });
res.json({ code: 1, message: 'success', tx });
});

// Start the server
Expand Down

0 comments on commit 5102179

Please sign in to comment.