File tree Expand file tree Collapse file tree 8 files changed +109
-108
lines changed
examples/api/src/app/api/erc-20 Expand file tree Collapse file tree 8 files changed +109
-108
lines changed Original file line number Diff line number Diff line change @@ -5,30 +5,19 @@ import {
5
5
getEthUsdPrice ,
6
6
numberWithCommas ,
7
7
parseTokenParam ,
8
+ parseInfoRequestParams ,
8
9
} from "../lib/utils" ;
9
10
10
11
export async function GET ( request : NextRequest ) {
12
+ const { blockchain, tokenAddress } = parseInfoRequestParams ( request ) ;
11
13
const userAddress = request . nextUrl . searchParams
12
14
. get ( "walletAddress" )
13
15
?. toLowerCase ( ) ;
14
- const token = request . nextUrl . searchParams . get ( "token" ) ?. toLowerCase ( ) ;
15
- let tokenAddress = request . nextUrl . searchParams
16
- . get ( "tokenAddress" )
17
- ?. toLowerCase ( ) ;
18
- let blockchain = request . nextUrl . searchParams
19
- . get ( "blockchain" )
20
- ?. toLowerCase ( ) ;
21
16
const buyOptionsUsd = request . nextUrl . searchParams
22
17
. get ( "buyOptionsUsd" )
23
18
. split ( "," )
24
19
. map ( ( x ) => parseFloat ( x ) ) ;
25
20
26
- if ( token ) {
27
- const parsedToken = parseTokenParam ( token ) ;
28
- tokenAddress = parsedToken . tokenAddress ;
29
- blockchain = parsedToken . blockchain ;
30
- }
31
-
32
21
if ( ! tokenAddress || ! blockchain ) {
33
22
return new Response ( "Missing tokenAddress or blockchain" , {
34
23
status : 400 ,
Original file line number Diff line number Diff line change 1
1
import { NextRequest , NextResponse } from "next/server" ;
2
2
import { parseEther } from "viem2" ;
3
- import { chainByName , getEthUsdPrice , parseTokenParam } from "../lib/utils" ;
3
+ import {
4
+ chainByName ,
5
+ getEthUsdPrice ,
6
+ parseInfoRequestParams ,
7
+ } from "../lib/utils" ;
4
8
5
9
export async function POST ( request : NextRequest ) {
10
+ const { blockchain, tokenAddress } = parseInfoRequestParams ( request ) ;
11
+
6
12
// TODO: Expose separate execution/receiver addresses
7
13
const userAddress = request . nextUrl . searchParams
8
14
. get ( "walletAddress" )
9
15
?. toLowerCase ( ) ;
10
- const token = request . nextUrl . searchParams . get ( "token" ) ?. toLowerCase ( ) ;
11
- let tokenAddress = request . nextUrl . searchParams
12
- . get ( "tokenAddress" )
13
- ?. toLowerCase ( ) ;
14
- let blockchain = request . nextUrl . searchParams
15
- . get ( "blockchain" )
16
- ?. toLowerCase ( ) ;
17
16
const buyAmountUsd = parseFloat (
18
17
request . nextUrl . searchParams . get ( "buyAmountUsd" )
19
18
) ;
20
19
21
- if ( token ) {
22
- const parsedToken = parseTokenParam ( token ) ;
23
- tokenAddress = parsedToken . tokenAddress ;
24
- blockchain = parsedToken . blockchain ;
25
- }
26
-
27
20
if ( ! tokenAddress || ! blockchain ) {
28
21
return new Response ( "Missing tokenAddress or blockchain" , {
29
22
status : 400 ,
Original file line number Diff line number Diff line change
1
+ import { NextRequest } from "next/server" ;
2
+ import {
3
+ getFollowingHolderInfo ,
4
+ parseInfoRequestParams ,
5
+ } from "../../lib/utils" ;
6
+
7
+ export async function GET ( request : NextRequest ) {
8
+ const { fid, tokenAddress, blockchain } = parseInfoRequestParams ( request ) ;
9
+ const result = await getFollowingHolderInfo ( {
10
+ fid,
11
+ blockchain,
12
+ tokenAddress,
13
+ } ) ;
14
+
15
+ if ( ! tokenAddress || ! blockchain ) {
16
+ return new Response ( "Missing tokenAddress or blockchain" , {
17
+ status : 400 ,
18
+ } ) ;
19
+ }
20
+
21
+ return Response . json ( result , {
22
+ headers : new Headers ( {
23
+ // Cache for 1 day
24
+ "Cache-Control" : "public, max-age=86400, immutable" ,
25
+ } ) ,
26
+ } ) ;
27
+ }
Original file line number Diff line number Diff line change
1
+ import { NextRequest } from "next/server" ;
2
+ import { getPriceData , parseInfoRequestParams } from "../../lib/utils" ;
3
+
4
+ export async function GET ( request : NextRequest ) {
5
+ const { tokenAddress, blockchain } = parseInfoRequestParams ( request ) ;
6
+ const result = await getPriceData ( {
7
+ blockchain,
8
+ tokenAddress,
9
+ } ) ;
10
+
11
+ if ( ! tokenAddress || ! blockchain ) {
12
+ return new Response ( "Missing tokenAddress or blockchain" , {
13
+ status : 400 ,
14
+ } ) ;
15
+ }
16
+
17
+ return Response . json ( result , {
18
+ headers : new Headers ( {
19
+ // Cache for 1 hour
20
+ "Cache-Control" : "public, max-age=3600, immutable" ,
21
+ } ) ,
22
+ } ) ;
23
+ }
Original file line number Diff line number Diff line change
1
+ import { NextRequest } from "next/server" ;
2
+ import { getTokenInfo , parseInfoRequestParams } from "../../lib/utils" ;
3
+
4
+ export async function GET ( request : NextRequest ) {
5
+ const { tokenAddress, blockchain } = parseInfoRequestParams ( request ) ;
6
+ const result = await getTokenInfo ( {
7
+ blockchain,
8
+ tokenAddress,
9
+ } ) ;
10
+
11
+ if ( ! tokenAddress || ! blockchain ) {
12
+ return new Response ( "Missing tokenAddress or blockchain" , {
13
+ status : 400 ,
14
+ } ) ;
15
+ }
16
+
17
+ return Response . json ( result , {
18
+ headers : new Headers ( {
19
+ // Cache for 1 month
20
+ "Cache-Control" : "public, max-age=2592000, immutable" ,
21
+ } ) ,
22
+ } ) ;
23
+ }
Original file line number Diff line number Diff line change 1
1
import { FarcasterUser } from "@mod-protocol/core" ;
2
+ import { NextRequest } from "next/server" ;
2
3
import { publicActionReverseMirage } from "reverse-mirage" ;
3
4
import { createPublicClient , http } from "viem2" ;
4
5
import * as chains from "viem2/chains" ;
@@ -312,3 +313,26 @@ export async function getEthUsdPrice(): Promise<number> {
312
313
313
314
return ethPriceUsd ;
314
315
}
316
+
317
+ export function parseInfoRequestParams ( request : NextRequest ) {
318
+ const fid = request . nextUrl . searchParams . get ( "fid" ) ;
319
+ const token = request . nextUrl . searchParams . get ( "token" ) ?. toLowerCase ( ) ;
320
+ let tokenAddress = request . nextUrl . searchParams
321
+ . get ( "tokenAddress" )
322
+ ?. toLowerCase ( ) ;
323
+ let blockchain = request . nextUrl . searchParams
324
+ . get ( "blockchain" )
325
+ ?. toLowerCase ( ) ;
326
+
327
+ if ( token ) {
328
+ const parsedToken = parseTokenParam ( token ) ;
329
+ tokenAddress = parsedToken . tokenAddress ;
330
+ blockchain = parsedToken . blockchain ;
331
+ }
332
+
333
+ return {
334
+ fid,
335
+ tokenAddress,
336
+ blockchain,
337
+ } ;
338
+ }
Load Diff This file was deleted.
Original file line number Diff line number Diff line change @@ -321,23 +321,23 @@ const view: ModElement[] = [
321
321
type : "horizontal-layout" ,
322
322
onload : {
323
323
type : "GET" ,
324
- url : "{{api}}/erc-20?fid={{user.farcaster.fid}}&token={{embed.url}}&function=token " ,
324
+ url : "{{api}}/erc-20/info/token ?fid={{user.farcaster.fid}}&token={{embed.url}}" ,
325
325
ref : "tokenReq" ,
326
326
} ,
327
327
} ,
328
328
{
329
329
type : "horizontal-layout" ,
330
330
onload : {
331
331
type : "GET" ,
332
- url : "{{api}}/erc-20?fid={{user.farcaster.fid}}&token={{embed.url}}&function=holders " ,
332
+ url : "{{api}}/erc-20/info/holders ?fid={{user.farcaster.fid}}&token={{embed.url}}" ,
333
333
ref : "holdersReq" ,
334
334
} ,
335
335
} ,
336
336
{
337
337
type : "horizontal-layout" ,
338
338
onload : {
339
339
type : "GET" ,
340
- url : "{{api}}/erc-20?fid={{user.farcaster.fid}}&token={{embed.url}}&function=price " ,
340
+ url : "{{api}}/erc-20/info/price ?fid={{user.farcaster.fid}}&token={{embed.url}}" ,
341
341
ref : "priceReq" ,
342
342
} ,
343
343
} ,
You can’t perform that action at this time.
0 commit comments