Comments (6)
+1 for this,
I need to be able to parse database url
let parsed = Url::parse(
"postgres://postgres:p0stgr3s@localhost/bazaar_v6"
).unwrap();
println!("postgres: {:?}", parsed);
assert!( parsed == Url {
scheme: "postgres".to_string(),
query: None,
fragment: None,
scheme_data: Relative(
RelativeSchemeData {
username: "postgres".to_string(),
password: Some("p0stgr3s".to_string()),
host: Domain("localhost".to_string()),
port: None,
default_port: Some(5432),
path: vec!["bazaar_v6".to_string()]
})
});
from rust-url.
We could have a cargo feature that defaults unknown scheme to a regular scheme
from rust-url.
@Manishearth which feature, do you have a link to it?
from rust-url.
No, I mean that we can use Cargo Features to allow users of this library to select a flavor that handles unknown schemes.
from rust-url.
@ivanceras, have you seen UrlParser::scheme_type_mapper
? Manish is talking about potential changes to rust-url that don’t exist yet, to make his more convenient.
Also, the spec changed recently so that relative schemes are the default. I need to look into that to see how that should affect the rust-url API:
https://lists.w3.org/Archives/Public/public-whatwg-archive/2015Jun/0028.html
https://www.w3.org/Bugs/Public/show_bug.cgi?id=27233
from rust-url.
I believe 1.0 (to be published today) fixes this. "Scheme type mappers" are gone and Url::parse("postgres://postgres:p0stgr3s@localhost/bazaar_v6")
does what you’d expect.
More precisely:
- URL strings with
://
(colon double slash) after the scheme/protocol are parsed with an "authority" (username, password, host, port) in addition to the scheme, path, query, and fragment. - Those with
:/
(colon single slash) are parsed without an authority. Just scheme, path, query, and fragment. For example:postgres:/var/run/pg.socket?database=foo
- Those with neither (typical of
data:
ormailto:
, for example) are parsed without an authority and the "path" (not really a path) is an arbitrary string instead of a slash-separated list of path segments.
(This is the spec change mentioned above.)
from rust-url.
Related Issues (20)
- join() broken handling of URL with colon in path HOT 4
- Integer overflow when parsing long URL HOT 4
- percent_encoding::NON_ALPHANUMERIC should be configurable
- Panicked at 'assertion failed: self.is_char_boundary(new_len)'
- Disabling "remove dot segments" behavior HOT 2
- Mark Origin::unicode_serialization as deprecated?
- Is it possible to force the %-encoding of `+`? HOT 1
- Release new version of `data-url` HOT 1
- idna::punycode::encode_str() wrong conversion ? HOT 2
- Add parameter spaceAsPlus to ByteSerialize
- Incorrect parsing of Windows drive letter quirk
- Invalid IPv4 but parsing success HOT 1
- URL http:www.google.com is passed as validated HOT 1
- Host should implement deserialize to parse strings
- JOIN functionality not working HOT 4
- URL validity change between 2.2 and 2.3. HOT 2
- Documentation for IDNA configuration options should explain use cases
- Feature request: add parser boolean option to leave relative paths in the URL.
- Neither punycode::encode_str nor Config::...::to_ascii return expected results for single Unicode char and "EXAMPLE" HOT 3
- `Url::from_file_path()` incorrect handling of backslash on linux
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rust-url.