I was !redeeming something and I've noticed that the game I was redeeming had a HTML entity not properly decoded:
!r bot1 ABCDE-FGHIJ-KLMNO
<bot1> Key: ABCDE-FGHIJ-KLMNO | Status: OK/NoDetail | Items: [104120, Demolish & Build 2017]
The name of the game to be: Demolish & Build 2017
The name of the game returned by ASF is: Demolish & Build 2017
Just redeem a game with & in its name.
Full log?
My bad, I thought it wouldn't be necessary:
I should note that I didn't redeem using Steam chat, but instead I've used IPC (I use a shitty wrapper bash script to send commands to ASF). Ultimately, this was the sent request:
curl -H 'Authentication: 123' --data '' 'http://127.0.0.1:1111/Api/Command/r%20bot1%20FZA6H-YAA6I-42IEF'
This is the actual response:
{
"Message": "OK",
"Result": "\n<bot1> Key: FZA6H-YAA6I-42IEF | Status: Fail/AlreadyPurchased | Items: [104120, Demolish & Build 2017]\n<bot1> Unused keys: FZA6H-YAA6I-42IEF",
"Success": true
}
My bad, I thought it wouldn't be necessary
It's useful to ensure nothing fishy is going on. The actual key is far more useful since I could reproduce it, thanks!
And yes, the way how you execute a command doesn't matter since it's ASF's internal responsibility to decode stuff like that before it's even passed further. It's entirely your choice in this case.
Value of the package is originally encoded as {ItemDescription = Demolish &amp; Build 2017} and properly decoded to Demolish & Build 2017 after HtmlDecode() pass. This is not a bug and actually contrary to your statement it's not reproducible with other packages that have & character because ASF is already decoding them prior to saving (unless, of course, they're broken like this one is).
It's simply a fuckup of developer/publisher - http://store.steampowered.com/sub/104120/ - nothing to fix in ASF.
That's actually funny...
Sorry for wasting your time though.
Nothing to be sorry about, I was puzzled myself since I knew that ASF already includes proper html decoding pass since #99, so either I had to accidentally break it, or (like I suspected) Steam is sending us garbage. Proper "solution" would be to decode it twice, but this is not appropriate, as that would break actually valid names.