ada icon indicating copy to clipboard operation
ada copied to clipboard

Produce correct relative URLs

Open bbayles opened this issue 2 years ago • 3 comments

What is the problem this feature will solve?

The URL Standard describes how to combine a string with a relative path with a base URL to produce a valid absolute URL.

This feature request is: given an absolute URL and a base URL, produce a string with a relative path that when joined to the base URL, would produce the original absolute URL.

This is similar to file system path operations like Go's Rel and Python's relpath.

Practical application: some HLS video players expect relative paths, despite the HLS spec allowing for absolute paths. I want to produce correct relative paths given the relevant absolute ones.

What is the feature you are proposing to solve the problem?

Some function like:

ada_relative_path(base, input)

Example:

  • base: https://example.org:8080/origin/multivariant/playlist.m3u8
  • input: https://example.org:8080/origin/media/1080p.m3u8
  • output: ../media/1080p.m3u8
  • validate: parse output with base, get back input

What alternatives have you considered?

Using the file system tools.

bbayles avatar Sep 06 '23 14:09 bbayles

URL spec for relative-URL string: https://url.spec.whatwg.org/#relative-url-string

anonrig avatar Sep 06 '23 14:09 anonrig

It seems good for me to give help to this, where is starting point to create those functions? src/ada_c.cpp ? or src/url.cpp

arxngr avatar Nov 30 '23 08:11 arxngr

@ardi-nugraha

There are two underlying implementations, ada::url (simpler but slower) and ada::url_aggregator (faster but trickier). You could start with ada::url:

https://github.com/ada-url/ada/blob/f2c7328bf96bc229cfc19cfb526c832da1691b67/include/ada/url.h#L38

Once it works, you could try with ada::url_aggregator:

https://github.com/ada-url/ada/blob/f2c7328bf96bc229cfc19cfb526c832da1691b67/include/ada/url_aggregator.h#L25

lemire avatar Nov 30 '23 15:11 lemire