private static int GetParameterLength(string input, int startIndex, out MediaTypeParameter parsedValue) { if (OffsetIsOutOfRange(startIndex, input.Length) || input[startIndex] != ';') { parsedValue = default(MediaTypeParameter); return(0); } var nameLength = GetNameLength(input, startIndex, out var name); var current = startIndex + nameLength; if (nameLength == 0 || OffsetIsOutOfRange(current, input.Length) || input[current] != '=') { if (current == input.Length && name.Equals("*", StringComparison.OrdinalIgnoreCase)) { var asterisk = new StringSegment("*"); parsedValue = new MediaTypeParameter(asterisk, asterisk); return(current - startIndex); } else { parsedValue = default(MediaTypeParameter); return(0); } } var valueLength = GetValueLength(input, current, out var value); parsedValue = new MediaTypeParameter(name, value); current += valueLength; return(current - startIndex); }
private static int GetParameterLength(string input, int startIndex, out MediaTypeParameter parsedValue) { if (OffsetIsOutOfRange(startIndex, input.Length) || input[startIndex] != ';') { parsedValue = default(MediaTypeParameter); return(0); } StringSegment name; var nameLength = GetNameLength(input, startIndex, out name); var current = startIndex + nameLength; if (nameLength == 0 || OffsetIsOutOfRange(current, input.Length) || input[current] != '=') { parsedValue = default(MediaTypeParameter); return(0); } StringSegment value; var valueLength = GetValueLength(input, current, out value); parsedValue = new MediaTypeParameter(name, value); current = current + valueLength; return(current - startIndex); }
public bool ParseNextParameter(out MediaTypeParameter result) { if (_mediaTypeBuffer == null) { result = default(MediaTypeParameter); return(false); } var parameterLength = GetParameterLength(_mediaTypeBuffer, CurrentOffset, out result); CurrentOffset = CurrentOffset + parameterLength; if (parameterLength == 0) { ParsingFailed = _length != null && CurrentOffset < _length; return(false); } return(true); }
public bool ParseNextParameter(out MediaTypeParameter result) { if (this._mediaTypeBuffer == null) { this.ParsingFailed = true; result = default; return(false); } var parameterLength = GetParameterLength(this._mediaTypeBuffer, this.CurrentOffset, out result); this.CurrentOffset += parameterLength; if (parameterLength == 0) { this.ParsingFailed = this._length != null && this.CurrentOffset < this._length; return(false); } return(true); }
private static int GetParameterLength(string input, int startIndex, out MediaTypeParameter parsedValue) { if (OffsetIsOutOfRange(startIndex, input.Length) || input[startIndex] != ';') { parsedValue = default(MediaTypeParameter); return(0); } var nameLength = GetNameLength(input, startIndex, out var name); var current = startIndex + nameLength; if (nameLength == 0 || OffsetIsOutOfRange(current, input.Length) || input[current] != '=') { if (current == input.Length && name.Equals("*", StringComparison.OrdinalIgnoreCase)) { // As a special case, we allow a trailing ";*" to indicate a wildcard // string allowing any other parameters. It's the same as ";*=*". var asterisk = new StringSegment("*"); parsedValue = new MediaTypeParameter(asterisk, asterisk); return(current - startIndex); } else { parsedValue = default(MediaTypeParameter); return(0); } } var valueLength = GetValueLength(input, current, out var value); parsedValue = new MediaTypeParameter(name, value); current += valueLength; return(current - startIndex); }