Fix article ID parsing bug
Since the article ID regular expression wasn't anchored to the end of the URL, it would grab characters after a / or - that were hex characters. For example /@user/bacon-123abc would just grab `bac`. Not great. This anchors the ID at the end of the string so that it will be more likely to catch IDs.
This commit is contained in:
parent
3f5a5580e0
commit
fb51270f87
3 changed files with 10 additions and 1 deletions
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
* Better article ID parsing
|
* Better article ID parsing
|
||||||
* Link to full Medium URL on error page
|
* Link to full Medium URL on error page
|
||||||
|
* Fix article ID parsing bug
|
||||||
|
|
||||||
2022-02-12
|
2022-02-12
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,14 @@ describe ArticleIdParser do
|
||||||
result.should eq(Monads::Just.new("111111abcdef"))
|
result.should eq(Monads::Just.new("111111abcdef"))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "parses the post id for urls with hex characters after a /" do
|
||||||
|
request = resource_request("/@user/bacon-abcdef123456")
|
||||||
|
|
||||||
|
result = ArticleIdParser.parse(request)
|
||||||
|
|
||||||
|
result.should eq(Monads::Just.new("abcdef123456"))
|
||||||
|
end
|
||||||
|
|
||||||
it "parses the post id for urls like /user/:post_slug" do
|
it "parses the post id for urls like /user/:post_slug" do
|
||||||
request = resource_request("/user/my-post-222222abcdef")
|
request = resource_request("/user/my-post-222222abcdef")
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
class ArticleIdParser
|
class ArticleIdParser
|
||||||
include Monads
|
include Monads
|
||||||
|
|
||||||
ID_REGEX = /[\/\-]([0-9a-f]+)/i
|
ID_REGEX = /[\/\-]([0-9a-f]+)$/i
|
||||||
|
|
||||||
def self.parse(request : HTTP::Request)
|
def self.parse(request : HTTP::Request)
|
||||||
new.parse(request)
|
new.parse(request)
|
||||||
|
|
Loading…
Reference in a new issue