Skip to content

Commit

Permalink
auto merge of #10752 : dhodder/rust/master, r=pcwalton
Browse files Browse the repository at this point in the history
  • Loading branch information
bors committed Dec 4, 2013
2 parents 693ec73 + 2c1acd7 commit 50e9d4f
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions src/libextra/url.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,51 @@ use std::hashmap::HashMap;
use std::to_bytes;
use std::uint;

/// A Uniform Resource Locator (URL). A URL is a form of URI (Uniform Resource
/// Identifier) that includes network location information, such as hostname or
/// port number.
///
/// # Example
///
/// ```rust
/// let url = Url { scheme: ~"https",
/// user: Some(UserInfo { user: ~"username", pass: None }),
/// host: ~"example.com",
/// port: Some(~"8080"),
/// path: ~"/foo/bar",
/// query: ~[(~"baz", ~"qux")],
/// fragment: Some(~"quz") };
/// // https://username@example.com:8080/foo/bar?baz=qux#quz
/// ```
#[deriving(Clone, Eq)]
pub struct Url {
/// The scheme part of a URL, such as `https` in the above example.
scheme: ~str,
/// A URL subcomponent for user authentication. `username` in the above example.
user: Option<UserInfo>,
/// A domain name or IP address. For example, `example.com`.
host: ~str,
/// A TCP port number, for example `8080`.
port: Option<~str>,
/// The path component of a URL, for example `/foo/bar`.
path: ~str,
/// The query component of a URL. `~[(~"baz", ~"qux")]` represents the
/// fragment `baz=qux` in the above example.
query: Query,
/// The fragment component, such as `quz`. Doesn't include the leading `#` character.
fragment: Option<~str>
}

/// An optional subcomponent of a URI authority component.
#[deriving(Clone, Eq)]
pub struct UserInfo {
/// The user name.
user: ~str,
/// Password or other scheme-specific authentication information.
pass: Option<~str>
}

/// Represents the query component of a URI.
pub type Query = ~[(~str, ~str)];

impl Url {
Expand Down

0 comments on commit 50e9d4f

Please sign in to comment.