Opened 4 years ago

Closed 4 years ago

#95 closed enhancement (fixed)

URL Pathnames

Reported by: mevenson Owned by: mevenson
Priority: major Milestone: 0.20
Component: other Version: 0.20
Keywords: Cc:

Description

Goals


  1. Use Common Lisp pathnames to refer to representations referenced

by a URL.

  1. The URL schemes supported shall include at least "http", and those

enabled by the URLStreamHandler extension mechanism.

  1. Use URL schemes that are understood by the java.net.URL object.

A file specified by URL


#p"http://example.org/org/armedbear/systems/pgp.asd"


  1. MERGE-PATHNAMES

(merge-pathnames "url.asd"

"http://example/org/armedbear/systems/pgp.asd")

==> "http://example/org/armedbear/systems/url.asd"

  1. PROBE-FILE returning the state of URL accesibility.
  1. TRUENAME "aliased" to PROBE-FILE signalling an error if the URL is

not accessible (see "Non-goal 1").

  1. DIRECTORY for non-wildcards
  1. URL pathname work as a valid argument for OPEN with :DIRECTION :INPUT.
  1. Enable the loading of ASDF2 systems referenced by a URL pathname.
  1. The reserved URL characters (~, /, ?, etc.) shall be

encoded in the proper manner on construction of the Pathname.

  1. The "file" scheme will continue to be represented by an

"ordinary" Pathname.

  1. The "jar" scheme will continue to be represented by a jar

Pathname.

Non-goals


  1. We will not implement canonicalization of URL schemas (such as following

"http" redirects).

  1. DIRECTORY working for URL pathnames containing wildcards.

Change History (7)

comment:1 Changed 4 years ago by mevenson

  • Version set to 0.20

An (incomplete) implementation was added in r12605-r12616.

Notably missing are the URL encoding/decoding functions.

See http://article.gmane.org/gmane.lisp.armedbear.devel/1058.

comment:2 Changed 4 years ago by mevenson

  • Resolution set to fixed
  • Status changed from new to closed

The implementation seems to be holding up to testing.

Marking as good to go for 0.20.

comment:3 Changed 4 years ago by mevenson

  • Resolution fixed deleted
  • Status changed from closed to reopened

comment:4 follow-up: Changed 4 years ago by mevenson

  • Status changed from reopened to assigned

Need to check that logical hosts aren't in place before deciding to ship off a string to URL scheme land.

Test failure noticed in ANSI for Pathnames for CLTEST:COMPILE-FILE-TEST-LP.LISP by Ville.

comment:5 in reply to: ↑ 4 Changed 4 years ago by mevenson

Replying to mevenson:
[…]

Test failure noticed in ANSI for Pathnames for CLTEST:COMPILE-FILE-TEST-LP.LISP by Ville.

Not a test failure, but a (potentially) confusing warning message which should not be emitted at the default trace levels.

comment:6 Changed 4 years ago by mevenson

URL escaping (aka URI encoding) not implemented at the present point.

The current plan is to provide functions to encode/decode, and to use them to establish handlers if the common case fails. Re-use of code from PURI is being considered, subject to licensing analysis.

comment:7 Changed 4 years ago by mevenson

  • Resolution set to fixed
  • Status changed from assigned to closed

Implemented enough for 0.20; we'll pick up the warnings noted by Ville, and the URL escaping for 0.21.

Note: See TracTickets for help on using tickets.