aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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-06Add more test cases for IPvFuture syntaxRichard Walters
2020-10-06Work in progress porting implementation to RustRichard Walters
2020-10-05Add tests for parsing hosts ending in dotRichard Walters
2020-10-05Use lower snake case for Rust crate namesRichard 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: add unit test for ClearQueryRichard 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-24PercentEncodedCharacterDecoder: add some extra test casesRichard Walters
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-20Add MIT LicenseRichard 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-04Add minor commentRichard Walters
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 space alignmentRichard 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-04Fix bad requirementRichard Walters
After parsing a URI, we don't want the square brackets to remain in the host element, because those were only there to delimit it in the context of a URI string.
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-04RefactoringRichard Walters
Add unit tests for stand-alone modules that were formerly part of Uri and so were previously tested along with Uri.
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-03Fix erronous test vectorsRichard Walters
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