[armedbear-devel] Proposal for URL to be used as Pathnames
Mark Evenson
evenson at panix.com
Fri Apr 2 08:59:49 UTC 2010
On 4/1/10 5:08 AM, Alan Ruttenberg wrote:
> On Mon, Mar 29, 2010 at 5:07 AM, Mark Evenson<evenson at panix.com> wrote:
[…]
>> At the moment I'm favoring just implementing such
>> a specializer for "http" and "bundle", creating a protocol for a user to
>> add a specializer, and calling it a day.
>
> + ftp, https, urn, info would all be common in my world.
I currently intend to only implement URIs that can be dereferenced with
respect to the network authority, which is why I call these things "URL
pathnames". Something like "urn" or "info" that needs a resolution
mechanism are not such good fits for CL Pathnames as far as I can tell,
as the primary motivation here is to get LOAD and OPEN working for
objects that java.net.URL (and its extensions via
java.net.URLStreamHandler) can construct. I think if we want real URIs,
I think we should look at using [PURI][1] as I don't think that
java.net.URI has a schema specific escaping mechanism. If I implemented
a method to convert from PURI <--> ABCL Pathname where possible, what
that be suitable for your needs.
[1]: http://puri.b9.com/
> btw, I'm not sure mixing the authority and port is the best choice -
> they tend to be separate items.
As I understand it "authority" is "host" plus (optional or implied)
"port". I intend to implement SETFable functions like URL-PATHNAME-PORT
URL-PATHNAME-AUTHORITY, URL-PATHNAME-HOST to allow the user to
manipulate this value.
> Also, how to do fragments ("#anchor") and queries (?q=blah) for http URIs?
A good question for which I'm not entirely happy with my current answer:
just incorporate them in NAME, while providing functions like
URL-PATHNAME-QUERY and URL-PATHNAME-FRAGMENT to allow manipulation. The
other possibility I considered was somehow overloading the information
in TYPE (make TYPE a LIST?) but that seems to have ambiguity problems as
well.
>> Do we want the namestring to always be the encoded form? I was planning
>> to have the namestring be what the user used to create the URL-PATHNAME,
>> but always encode before going to the network. I need to think about
>> this more.
>
> It's a good question. The thing is that with an http URI you want to
> be able to format it for inclusion in a web page, or to execute an
> http get on it. So you need to access the encoded form in an easy way.
> I'm leaning to namestring as the way of retrieving that, but I suppose
> it doesn't matter as long as their's some function.
We'll make functions then. I suppose we need four: two variants to
handle the inputs of string or pathname crossed with decoding or encoding.
[…]
> I hadn't thought about wild cards at all. Maybe the use of logical
> pathnames for this is overambitious and I should think of this
> facility for URLs and retain my current system for dealing with URIs.
>
> http://mumble.net:8080/svn/lsw/trunk/util/namespace.lisp
> http://mumble.net:8080/svn/lsw/trunk/util/uri.lisp
My preference would be to get de-referencable URIs (aka URLs) working
first, and then look at implementing further stuff on top of that. I
believe that sorting out how to handle such things probably be handled
in libraries external to ABCL. I think that as long as we can get
'http', 'https', 'ftp', and 'bundle' URLs working with LOAD and OPEN
(and MERGE-PATHNAME, PROBE-FILE, MATCH-PATHAME-P, etc.), we're going to
cover most of the usage out there.
--
"A screaming comes across the sky. It has happened before, but there
is nothing to compare to it now."
More information about the armedbear-devel
mailing list