Commit Graph

7 Commits

Author SHA1 Message Date
Matthew Flatt
3b1b4a0d26 string->url: always mark as absolute when a host is present
Fixes a failure in the web server tests caused by d23b296627.

Formerly, `(string->url "http://racket-lang.org")`, with no trailing
slash, would produce a `url` structure with `path-absolute?` as #f.
That doesn't exactly make sense, because a URL with a host must always
have an absolute path component. Claiming a relative path component
interacts badly with extending a URL with a path later. (Although
`combine-url/relative` compenstate, a similar function in the web
server doesn't.) The revised `url->string` always sets `path-absolute?`
to #t when a host is present, and whether the path is empty or contains
an empty string still records whether a trailing "/" was present.

The `url->string` function, meanwhile, now needs to use whether the
path is empty to determine whether a "/" should be added after
the host name, not whether `path-absolute?` is true.
2016-04-19 05:42:07 -06:00
Matthew Flatt
d23b296627 URL string conversions: disallow host plus relative path
Closes #1257
2016-04-17 09:02:19 -06:00
Matthew Flatt
53ffad767b net/url-string: support URLs that contain IPv6 literals
Since an IPv6 literal address includes ":"s, it must be written
between "[" and "]" as a host name.

Based on a patch by @Phlosioneer and comments by @Blaisorblade,
with additional changes to make `url->string` work.

Closes #980
Closes #1243
2016-04-16 21:19:33 -06:00
Sam Tobin-Hochstadt
b92ef72c8c fix typo 2016-02-18 10:49:24 -05:00
Stephen Chang
e6a0caa147 Use better regexp for string->url input contract.
Closes #929
2016-02-10 12:54:03 -05:00
Matthew Flatt
5afdae8af9 net/url-string: change parsing of "file:" URLs for Windows
History of the parsing of "file:" URLs for Windows:

 * In response to PR 8060 (April 2006): special handling added to
   support ill-formed URLs that were (are?) commonly used for
   filesystem paths.

 * Follow-up to PR 8060 (April 2008): added `path->url` and
   `url->path`.

 * In response to #1086 (October 2015, the commit): changed
   Windows-specific handling to be more constrained and added support
   for the proper encoding of UNC paths --- where "proper" means
   "according to a blog post from late 2006", which appears to be as
   close as we get to documentation of the URL encoding for Windows
   paths.
2015-10-12 08:50:25 -06:00
Tim Brown
9473f394b7 url-strings: Separate URL parsing from URL actions
`net/url` provides functions for both converting strings
and paths to and from URLs.

`net/url` also includes functions for creating (pure and import)
network ports. This functionality `require` the HTTP client stack
which is unnecessary when URLs simple need parsing for their
"bits".

New library: `net/url-strings` handles `url->string` and `string->url`
(and also the related `path->url` and `url->path` functions). This is
required by net/url for compatability.

`net/url-exception.rkt` is factored out for use by both libraries.

- See also racket/net changes for T&D

url-string.rkt changes requested by mflatt

url-strings.rkt is now called url-string.rkt

identifiers from url-string.rkt are reprovided by url.rkt
using (all-from-out "url-string.rkt") instead of explicit
exports
2015-08-12 11:20:10 -05:00