DiscordPHP-Http icon indicating copy to clipboard operation
DiscordPHP-Http copied to clipboard

Similarly named parameters causing incorrect endpoint binding

Open Exanlv opened this issue 2 years ago • 2 comments

'something/:thing/:thing_other' with the following bindings ['::thing::', '::thing other::'] produces something/::thing::/::thing::_other rather than something/::thing::/::thing other::

This is caused by the str_replace replacing the :thing part of :thing_other as well, few fixes I can think of:

  1. Requiring params to also have an ending :, instead of :guild_id it'd be :guild_id: (breaking change for users who specify their own endpoints manually instead of using the constants)
  2. Dont replace :guild_id, instead replace :guild_id/ AND /:guild_id with the appropriate param, not breaking
  3. Setting a priority to params to replace, in the example provided :thing_other would get higher priority and be replaced first. This would still allow weird replacements when you use $onlyMajorParameters but it wouldnt cause issues for the rate limiting buckets as it's consistently weird

Currently, there's no endpoints for Discord that would run into this issue. Low priority.

Exanlv avatar Feb 23 '23 10:02 Exanlv

We actually also have to replace the placeholder symbol, i just found a case where we have to deal with reactions endpoints and a custom emoji needs to be in format name:id, the colon in value will break the binding replacement placeholder

SQKo avatar Sep 10 '23 08:09 SQKo

Looks like we'll have to go with number 1 then, unless you see another way to solve it.

Any preference for placeholders if we go that route? {guild_id}?

Exanlv avatar Sep 28 '23 09:09 Exanlv