Produce correct relative URLs
bbayles opened this issue · 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.
URL spec for relative-URL string
: https://url.spec.whatwg.org/#relative-url-string
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
@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
:
Line 38 in f2c7328
Once it works, you could try with ada::url_aggregator
:
ada/include/ada/url_aggregator.h
Line 25 in f2c7328