Code Monkey home page Code Monkey logo

Comments (6)

ivanceras avatar ivanceras commented on July 4, 2024

+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.

Manishearth avatar Manishearth commented on July 4, 2024

We could have a cargo feature that defaults unknown scheme to a regular scheme

from rust-url.

ivanceras avatar ivanceras commented on July 4, 2024

@Manishearth which feature, do you have a link to it?

from rust-url.

Manishearth avatar Manishearth commented on July 4, 2024

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.

SimonSapin avatar SimonSapin commented on July 4, 2024

@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.

SimonSapin avatar SimonSapin commented on July 4, 2024

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: or mailto:, 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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.