aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2020-10-09Fix bug in parsing IPv6 addressesRichard Walters
Fix bug where an IPv6 address ending in a double-colon was not considered valid (it was being considered as truncated).
2020-10-09Fix bug in IPv6 address parsingRichard Walters
Fix bug where IPv6 address ending in a group with only digits followed by a double-colon would not get parsed correctly
2020-10-09Dismiss some todosRichard Walters
2020-10-07(Rust) Uri::is_path_absolute: match against whole path, not first segmentRichard Walters
2020-10-07(Rust) combine match with if/else in Uri::validate_ipv4_addressRichard Walters
2020-10-07(Rust) dismiss some todosRichard Walters
2020-10-07(Rust) Add Uri::path_as_string convenience functionRichard Walters
2020-10-07(Rust) Make setting scheme fallible by checking for invalid charactersRichard Walters
2020-10-07Finish initial port of library to RustRichard Walters
2020-10-07Fix misspellingRichard Walters
2020-10-06Work in progress porting to RustRichard Walters
2020-10-06Work in progress porting implementation to RustRichard Walters
2020-10-05Add tests for parsing hosts ending in dotRichard Walters
2020-09-27No need to use try_from() when setting parts of a URIRichard Walters
2020-09-27Finish porting unit tests to RustRichard Walters
2020-09-27Work in progress porting test cases to Rust, implemented by uriparseRichard Walters
2019-12-02Support first > last for range constructor of CharacterSetRichard Walters
2019-11-09StringExtensions moved from SystemAbstractions to its own libraryRichard Walters
2019-05-10Remove useless incrementsRichard Walters
Thank you to @ya-ming for pointing this out!
2019-03-28Percent-encode '+' in the query portionRichard Walters
2019-01-06Uri: remove old TODO comment no longer applicableRichard Walters
2018-10-24Uri: fix bugs in copying and comparing URIs with query/fragment partsRichard Walters
Copying query or fragment needs to copy the "hasQuery" and "hasFragment" flags. Comparing URIs should make use of "hasQuery" and "hasFragment" to properly compare URIs that might not have query and/or fragment parts.
2018-10-24Uri: fix bug in percent-encoding of character codes 0x80-0xffRichard Walters
Can't treat characters using "char" type because it's signed.
2018-09-05Fix compiler warnings found by compiling on MacRichard Walters
2018-08-24remove redundant 'struct' from pimpl patternRichard Walters
2018-08-09use SystemAbstractions::ToInteger to convert strings to integersRichard Walters
2018-08-09Refactoring: make application of rule of zero/five consistentRichard Walters
2018-08-05Use SystemAbstractions::ToLower instead of doing it ourselvesRichard Walters
2018-07-23Add copy constructor and assignment operatorRichard Walters
2018-07-04Fix bug in IPv6Address validationRichard Walters
A trailing group which is definitely not an IPv4Address needs to be counted. Detect this as the state being IN_GROUP_NOT_IPV4 after the end of the string.
2018-07-04RefactoringRichard Walters
Assign names to states in the IPv6Address validation routine
2018-07-04Fix bugs in IPv6 address parsingRichard Walters
* Multiple colons should not be accepted in state 4. * After parsing a digit group and encountering a colon, we need allow either another colon or the beginning of either another group or an IPv4 address. Add state 5 to handle this.
2018-07-04Normalize IPv6 addresses when generating URI stringsRichard Walters
2018-07-04Percent-encode if necessary any elements when generating stringsRichard Walters
2018-07-04Fix requirementsRichard Walters
Query and fragment may be empty but present in a URI. Handle this in the same way that port is handled: include a flag for each of query and fragment, to allow an empty but present query/fragment.
2018-07-04Add capability of setting other elementsRichard Walters
* userinfo * port (hasPort) * path * fragment Also include these element when generating string from URI.
2018-07-04Add GenerateString (incomplete)Richard Walters
Add methods to set scheme, host, and query elements. Add ability to generate URI strings out of scheme, host, and query elements. This does not yet support userinfo, port, or fragment elements.
2018-07-04Fix bug in truncated host elementsRichard Walters
For example, "[::1", where the square bracket at the end is missing. Handle truncated host element by checking the state we end up in after the entire string is parsed. Some states represent interal elements of a host name or address, and so if we're still in those states and run out of input characters, the input string was cut off early.
2018-07-04Fix bug in parsing out IPv6 and IPvFuture addressesRichard Walters
Don't include the square brackets in the parsed out host string; they are only there for delimiting them inside of an overall URI string.
2018-07-04Validate IPv6 addressesRichard Walters
* Add ValidateIpv6Address. * Add ValidateIpv4Address (since an IPv6 address is allowed to contain an IPv4 address for compatibility) * Add ValidateOctet (used by ValidateIpv4Address).
2018-07-04RefactoringRichard Walters
* Extract CanNavigatePathUpOneLevel from NormalizePath. * Add comments to explain what's going on elsewhere in NormalizePath.
2018-07-04Add missing "ok" return values in extracted methodsRichard Walters
2018-07-04Give names to states in host/port parsing state machineRichard Walters
2018-07-04RefactoringRichard Walters
* Extract methods to copy various elements of one URI from another. * Push NormalizePath implementation into a private method. * Simplify and consolidate checks for absolute paths. * Extract methods out of individual steps of ParseFromString.
2018-07-03Document parts of the path normalization processRichard Walters
Add comments that link parts of the code back to lines of the pseudocode in the RFC, to make the code easier to understand.
2018-07-03Complete rewrite of NormalizePathRichard Walters
The former algorithm was based on the pseuocode from the RFC, which is hard to follow, more suitable when the path is in a single string, not a sequence of segments. The new algorithm uses two flags: * isAbsolute - recognize that if the path starts out as an absolute path, it needs to stay that way. * atDirectoryLevel - recognize that if we encounter a "." or "..", then it will be reduced by simply discarding it or going back/up one stop, but then we will be in a "directory" context, meaning that should we end the path at this point, there needs to be an empty-string segment to mark that the end of the path is reaching into a directory, not just referring to the directory.
2018-07-02Add reference resolution and attempt to fix path normalizationRichard Walters
Path normalization is hideously broken for now.
2018-07-02Allow default move semanticsRichard Walters
2018-07-02Recognize special case of absolute URI with empty pathRichard Walters
Such a URI should be considered equivalent to a path of "/" because in both cases the path is an absolute path.
2018-07-02Add more path normalization tests and fix a bug in itRichard Walters
For normalization "step 2C", if the output path was empty, we don't want to pop the end of it off.