Conversation
Some producers repeat the VALUE parameter, such as ez-vcard with PRODID;VALUE=text;VALUE=TEXT. The parser then passes an array to createProperty(), and getClassNameForPropertyValue() throws a TypeError. Use the first value to pick the property class. Fixes sabre-io#635 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ez-vcard also writes several value types in a single VALUE parameter (URL;VALUE=uri,text:...). The parser hands createProperty() the same array as for a repeated VALUE, so the same fix applies: test it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #635.
RFC 6350 and RFC 5545 allow a single value type in the
VALUEparameter, but some producers write several. ez-vcard does it in two ways:In both cases, the MIME-dir parser hands
createProperty()an array forVALUE.getClassNameForPropertyValue()only accepts a string, so reading the whole document fails:With this fix,
createProperty()uses the first value of a repeated or listedVALUEparameter to pick the property class. The parameter itself is kept as is, so the document serializes back unchanged.Tests:
DocumentTest::testCreatePropertyWithRepeatedValueParameter:createProperty()with an array forVALUE.ReaderTest::testReadPropertyWithRepeatedValueParameter: reading thePRODIDline above.ReaderTest::testReadPropertyWithListedValueParameter: reading theURLline above, and serializing it back.The three fail with the
TypeErrorabove without the fix.