77import { HTTPParser } from '@achingbrain/http-parser-js'
88import { InvalidParametersError , isPeerId , ProtocolError } from '@libp2p/interface'
99import { peerIdFromString } from '@libp2p/peer-id'
10- import { fromStringTuples , isMultiaddr , multiaddr } from '@multiformats/multiaddr'
10+ import { isMultiaddr , multiaddr } from '@multiformats/multiaddr'
1111import { multiaddrToUri } from '@multiformats/multiaddr-to-uri'
1212import { uriToMultiaddr } from '@multiformats/uri-to-multiaddr'
1313import { queuelessPushable } from 'it-queueless-pushable'
@@ -17,11 +17,12 @@ import { base64pad } from 'multiformats/bases/base64'
1717import { sha1 } from 'multiformats/hashes/sha1'
1818import { Uint8ArrayList } from 'uint8arraylist'
1919import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
20- import { DNS_CODECS , HTTP_CODEC , HTTP_PATH_CODEC } from './constants.js'
2120import { Request } from './request.js'
2221import type { AbortOptions , PeerId , Stream } from '@libp2p/interface'
2322import type { Multiaddr } from '@multiformats/multiaddr'
2423
24+ const DNS_CODECS = [ 'dns' , 'dns4' , 'dns6' , 'dnsaddr' ]
25+
2526/**
2627 * A subset of options passed to middleware
2728 */
@@ -244,9 +245,9 @@ export function toResource (resource: string | URL | PeerId | Multiaddr | Multia
244245 // check for `/http/` tuple and transform to URL if present
245246 if ( Array . isArray ( resource ) ) {
246247 for ( const ma of resource ) {
247- const stringTuples = ma . stringTuples ( )
248+ const components = ma . getComponents ( )
248249
249- if ( stringTuples . find ( ( [ codec ] ) => codec === HTTP_CODEC ) != null ) {
250+ if ( components . some ( ( { name } ) => name === 'http' ) ) {
250251 const uri = multiaddrToUri ( ma )
251252 return new URL ( `${ uri } ${ path ?? '' } ` )
252253 }
@@ -315,8 +316,8 @@ export function getHost (addresses: URL | Multiaddr[], headers: Headers): string
315316 // try to extract domain from DNS addresses
316317 if ( ! isValidHost ( host ) && Array . isArray ( addresses ) ) {
317318 for ( const address of addresses ) {
318- const stringTuples = address . stringTuples ( )
319- const filtered = stringTuples . filter ( ( [ key ] ) => DNS_CODECS . includes ( key ) ) ?. [ 0 ] ?. [ 1 ]
319+ const components = address . getComponents ( )
320+ const filtered = components . filter ( ( { name } ) => DNS_CODECS . includes ( name ) ) ?. [ 0 ] ?. value
320321
321322 if ( filtered != null ) {
322323 host = filtered
@@ -377,13 +378,14 @@ export function stripHTTPPath (addresses: Multiaddr[]): { httpPath: string, addr
377378 // strip http-path tuple but record the value if set
378379 let httpPath = '/'
379380 addresses = addresses . map ( ma => {
380- return fromStringTuples (
381- ma . stringTuples ( ) . filter ( t => {
382- if ( t [ 0 ] === HTTP_PATH_CODEC && t [ 1 ] != null ) {
383- httpPath = `/${ t [ 1 ] } `
381+ return multiaddr (
382+ ma . getComponents ( ) . filter ( component => {
383+ if ( component . name === 'http-path' ) {
384+ httpPath = component . value ?? '/'
385+ return false
384386 }
385387
386- return t [ 0 ] !== HTTP_PATH_CODEC
388+ return true
387389 } )
388390 )
389391 } )
0 commit comments