11import * as querystring from 'querystring' ;
2- import { IncomingHttpHeaders } from 'http ' ;
2+ import * as JSON5 from 'json5 ' ;
33import { Agent , errors , request } from 'undici' ;
44import {
55 DbMetadataAttributeInsert ,
@@ -31,6 +31,10 @@ const METADATA_FETCH_HTTP_AGENT = new Agent({
3131 headersTimeout : ENV . METADATA_FETCH_TIMEOUT_MS ,
3232 bodyTimeout : ENV . METADATA_FETCH_TIMEOUT_MS ,
3333 maxResponseSize : ENV . METADATA_MAX_PAYLOAD_BYTE_SIZE ,
34+ maxRedirections : ENV . METADATA_FETCH_MAX_REDIRECTIONS ,
35+ connect : {
36+ rejectUnauthorized : false , // Ignore SSL cert errors.
37+ } ,
3438} ) ;
3539
3640/**
@@ -183,14 +187,12 @@ async function parseMetadataForInsertion(
183187}
184188
185189/**
186- * Fetches metadata while monitoring timeout and size limits. Throws if any is reached.
187- * Taken from https://github.com/node-fetch/node-fetch/issues/1149#issuecomment-840416752
190+ * Fetches metadata while monitoring timeout and size limits, hostname rate limits, etc. Throws if
191+ * any is reached.
188192 * @param httpUrl - URL to fetch
189193 * @returns Response text
190194 */
191- export async function performSizeAndTimeLimitedMetadataFetch (
192- httpUrl : URL
193- ) : Promise < string | undefined > {
195+ export async function fetchMetadata ( httpUrl : URL ) : Promise < string | undefined > {
194196 const url = httpUrl . toString ( ) ;
195197 try {
196198 const result = await request ( url , {
@@ -238,7 +240,7 @@ export async function getMetadataFromUri(token_uri: string): Promise<RawMetadata
238240 content = dataUrl . data ;
239241 }
240242 try {
241- const result = JSON . parse ( content ) ;
243+ const result = JSON5 . parse ( content ) ;
242244 if ( RawMetadataCType . Check ( result ) ) {
243245 return result ;
244246 }
@@ -258,8 +260,8 @@ export async function getMetadataFromUri(token_uri: string): Promise<RawMetadata
258260 // metadata as dead.
259261 do {
260262 try {
261- const text = await performSizeAndTimeLimitedMetadataFetch ( httpUrl ) ;
262- result = text ? JSON . parse ( text ) : undefined ;
263+ const text = await fetchMetadata ( httpUrl ) ;
264+ result = text ? JSON5 . parse ( text ) : undefined ;
263265 break ;
264266 } catch ( error ) {
265267 fetchImmediateRetryCount ++ ;
0 commit comments