Skip to content

Commit d77f3a4

Browse files
committed
sessions: arweave: configurable gateway url
1 parent 8a42ef2 commit d77f3a4

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

packages/sessions/src/trackers/arweave.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const MAIN_MODULE_ABI = [
1212
export interface Options {
1313
readonly namespace?: string
1414
readonly owners?: string[]
15+
readonly arweaveUrl?: string
1516
readonly graphqlUrl?: string
1617
readonly eip5719Provider?: ethers.Provider
1718
readonly rateLimitRetryDelayMs?: number
@@ -20,6 +21,7 @@ export interface Options {
2021
export const defaults = {
2122
namespace: 'Sequence-Sessions',
2223
owners: ['AZ6R2mG8zxW9q7--iZXGrBknjegHoPzmG5IG-nxvMaM'],
24+
arweaveUrl: 'https://arweave.net',
2325
graphqlUrl: 'https://arweave.net/graphql',
2426
eip5719Provider: undefined,
2527
rateLimitRetryDelayMs: 5 * 60 * 1000
@@ -175,7 +177,7 @@ export class ArweaveReader implements ConfigTracker, migrator.PresignedMigration
175177
nextCandidateSigners.map(async signer => {
176178
const { id, subdigest, signatureType } = nextCandidateItems.get(signer)!
177179
try {
178-
let signature = await (await fetchItem(id, this.options.rateLimitRetryDelayMs)).text()
180+
let signature = await (await fetchItem(id, this.options.rateLimitRetryDelayMs, this.options.arweaveUrl)).text()
179181
switch (signatureType) {
180182
case 'eip-712':
181183
signature += '01'
@@ -276,7 +278,10 @@ export class ArweaveReader implements ConfigTracker, migrator.PresignedMigration
276278

277279
for (const { id, version } of items) {
278280
try {
279-
const config = { ...(await (await fetchItem(id, this.options.rateLimitRetryDelayMs)).json()), version }
281+
const config = {
282+
...(await (await fetchItem(id, this.options.rateLimitRetryDelayMs, this.options.arweaveUrl)).json()),
283+
version
284+
}
280285
if (config.tree) {
281286
config.tree = toTopology(config.tree)
282287
}
@@ -401,7 +406,7 @@ export class ArweaveReader implements ConfigTracker, migrator.PresignedMigration
401406
throw new Error('incorrect subdigest')
402407
}
403408

404-
const signature = fetchItem(id, this.options.rateLimitRetryDelayMs).then(async response => {
409+
const signature = fetchItem(id, this.options.rateLimitRetryDelayMs, this.options.arweaveUrl).then(async response => {
405410
const signature = (await response.text()) + signatureType
406411
if (this.eip5719) {
407412
try {
@@ -488,7 +493,7 @@ export class ArweaveReader implements ConfigTracker, migrator.PresignedMigration
488493
const { id, toVersion, toImageHash, executor } = items[0]
489494

490495
const [data, toConfig] = await Promise.all([
491-
fetchItem(id, this.options.rateLimitRetryDelayMs).then(response => response.text()),
496+
fetchItem(id, this.options.rateLimitRetryDelayMs, this.options.arweaveUrl).then(response => response.text()),
492497
this.configOfImageHash({ imageHash: toImageHash })
493498
])
494499

@@ -568,7 +573,7 @@ async function findItems(
568573
break
569574
}
570575
console.warn(
571-
`rate limited by arweave.net, trying again in ${rateLimitRetryDelayMs / 1000} seconds at ${new Date(Date.now() + rateLimitRetryDelayMs).toLocaleTimeString()}`
576+
`rate limited by ${graphqlUrl}, trying again in ${rateLimitRetryDelayMs / 1000} seconds at ${new Date(Date.now() + rateLimitRetryDelayMs).toLocaleTimeString()}`
572577
)
573578
await new Promise(resolve => setTimeout(resolve, rateLimitRetryDelayMs))
574579
}
@@ -595,14 +600,18 @@ async function findItems(
595600
)
596601
}
597602

598-
async function fetchItem(id: string, rateLimitRetryDelayMs = defaults.rateLimitRetryDelayMs): Promise<Response> {
603+
async function fetchItem(
604+
id: string,
605+
rateLimitRetryDelayMs = defaults.rateLimitRetryDelayMs,
606+
arweaveUrl = defaults.arweaveUrl
607+
): Promise<Response> {
599608
while (true) {
600-
const response = await fetch(`https://arweave.net/${id}`, { redirect: 'follow' })
609+
const response = await fetch(`${arweaveUrl}/${id}`, { redirect: 'follow' })
601610
if (response.status !== 429) {
602611
return response
603612
}
604613
console.warn(
605-
`rate limited by arweave.net, trying again in ${rateLimitRetryDelayMs / 1000} seconds at ${new Date(Date.now() + rateLimitRetryDelayMs).toLocaleTimeString()}`
614+
`rate limited by ${arweaveUrl}, trying again in ${rateLimitRetryDelayMs / 1000} seconds at ${new Date(Date.now() + rateLimitRetryDelayMs).toLocaleTimeString()}`
606615
)
607616
await new Promise(resolve => setTimeout(resolve, rateLimitRetryDelayMs))
608617
}

0 commit comments

Comments
 (0)